Vention CLI
⚠️需要升级。 Vention CLI 0.37.0或更高版本需要为您的MachineLogic Python应用程序拉,推和读取日志。旧版本报告您的设计未打开。运行
npm install -g @vention/vention-cli@latest,然后vention login. 看到 升级.
一个命令行工具,可以在本地开发MachineLogic Python应用程序,并在IDE和MachineBuilder之间进行双向同步。
目录表
✨特性
- 本地IDE开发:在您首选的IDE中编辑MachineLogic Python应用程序,并提供完整的工具支持
- 双向同步:从MachineBuilder中拉应用程序并无缝地将更改推回来
- 主动设计检测:自动找到并连接到设计与MachineLogic选项卡打开
- 应用程序日志:在不离开终端的情况下从数字孪生中获取应用程序的日志
- 智能文件处理:自动忽略构建工件、虚拟环境和公共开发文件
- 会话管理:使用安全令牌存储的持久身份验证
- 多应用支持:在同一设计中链接和切换不同的应用程序
🧠概念与概述
活动设计
ventioncli连接到 活动设计 -在MachineBuilder中打开MachineLogic选项卡的设计。此活动会话使CLI能够发现用于同步操作的可用设计和应用程序。
链接状态
当您拉取或链接一个应用程序时,CLI会创建一个 .machine-code-app-directory-info.json 文件在您的项目根目录。该文件维护本地目录和特定设计/应用组合之间的连接,实现无缝的推/拉操作,无需重新选择。
文件同步
- 拉:从MachineBuilder下载应用程序的源文件,并将它们写入本地目录
- 推:序列化本地文件并将其上传到MachineBuilder中的活动设计
- 忽略模式:
venv,.venv,node_modules,dist,build,__pycache__,.claude,.agents,.git,*.egg-info,.machine-code-app-directory-info.json,.vention-design-scene-assets.json,.vention-design-configuration.json
只读配置和场景资产
每一个 vention pull 还写入两个只读的引用文件到app目录,从active设计中获取:
.vention-design-configuration.json:设计的MachineMotion配置.vention-design-scene-assets.json:设计的库资产,如果设计有库(否则省略)
两个文件都被chmodded为只读(0o444),并被排除在外 push 通过上面忽略的模式—它们是仅供参考的本地快照,而不是CLI同步回MachineBuilder的东西。
身份验证流
基于oauth的身份验证打开一个浏览器窗口,用于安全登录。会话令牌存储在 ~/.vention-cli-config.json 用于后续的CLI操作。
⚙️安装与设置
要求:
- Node.js 18或更高版本
- NPM或纱线
- 活动的MachineBuilder会话与MachineLogic选项卡打开
- ventioncli 0.37.0或更高版本为您的MachineLogic Python应用程序拉,推送和读取日志(参见 升级)
通过npm全局安装:
命令行在npm上发布为 @vention/vention-cli.
npm install -g @vention/vention-cli
验证安装:
vention --version
在Windows上,如果 vention 如果安装后没有找到npm全局文件夹,则说明PATH中缺少npm全局文件夹。添加文件夹 npm prefix -g 打印到您的PATH并打开一个新终端。在那之前, npx -y @vention/vention-cli <command> 运行相同的命令。
命令别名:
使用 vention 或者 vn 作为命令前缀。
了解更多有关MachineLogic Python应用程序结构的信息: https://docs.vention.com/docs/machinelogic-python-programming-guide
升级
安装最新版本,检查后再登录:
npm install -g @vention/vention-cli@latest
vention --version
vention login
npm update -g 可能会让你使用旧版本,因为NPM将全局安装的包固定到一个插入符范围。总是使用上面的命令。
🚀快速入门教程
本教程展示了从身份验证到同步第一个应用程序的完整工作流程。
步骤1:打开你的设计 在MachineBuilder中打开您的设计,然后选择 MachineLogic选项卡。这激活了CLI访问的设计。
步骤2:验证
vention login
这将打开一个浏览器窗口,用于安全OAuth登录。
步骤3:将应用放到本地
vention pull
命令行将:
- 展示可用的主动设计
- 让你选择一个设计
- 在该设计中显示MachineLogic Python应用程序
- 让你选择一个应用程序拉
- 创建一个以应用程序命名的文件夹,其中包含所有源文件(名称中的特殊字符将被下划线替换)
步骤4:本地编辑
在IDE中打开创建的文件夹并编辑如下文件 main.py 或者 project.json.
第五步:把改变推回去
vention push
您的更改现在上传到MachineBuilder。
第六步:在MachineBuilder中运行 使用MachineBuilder中的MachineLogic面板来运行和测试更新后的应用程序。
推荐操作指南
链接一个现有目录而不拉取文件
如果你在本地已经有了应用程序文件,只是想建立链接:
cd my-existing-app
vention link
这写 .machine-code-app-directory-info.json 不覆盖您的文件。
更新一个已经链接的应用
如果你的目录已经被链接了,只需再次运行pull命令来更新文件:
vention pull
CLI检测现有链接并更新项目,而无需创建新文件夹。
在不同的应用程序之间切换
将当前目录链接到另一个应用程序:
- 删除
.machine-code-app-directory-info.json文件 - 运行
vention link或者vention pull然后选择新的应用程序
查看应用程序的日志
如果你的目录被链接并且设计在MachineBuilder中是活动的:
vention logs
这将从数字孪生中获取应用程序的日志并将其打印到您的终端。
查看任何命令的帮助
vention --help
vention pull --help
vention push --help
在多种环境下工作
CLI存储环境(local, demo,或者 prod)在链接元数据文件中。环境是在登录时设置的,默认为 prod.
📖API参考
全局选项
vention --help # Display help information
vention --version # Display CLI version
vention --verbose # Enable verbose output for debugging (use with any command)
vention login
描述: 使用OAuth对您的Vention帐户进行身份验证。
用法:
vention login
行为:
- 打开浏览器窗口进行安全OAuth身份验证
- 将会话令牌存储在
~/.vention-cli-config.json - 令牌在终端会话中持续存在,并自动刷新
退出代码:
0:认证成功1:认证失败或取消
vention pull
描述: 从你的活动设计中获取一个MachineLogic Python应用到当前目录中。
用法:
vention pull
行为:
- 如果目录没有链接:提示设计和应用程序选择,创建一个新文件夹
- 如果目录已经被链接:使用存储的链接元数据更新文件
- 下载所有源文件,除了被忽略的模式
- 写只读
.vention-design-configuration.json和.vention-design-scene-assets.json参考文件(后者仅当设计有场景资产时) - 写/更新
.machine-code-app-directory-info.json - 更新
lastPulledAt时间戳
先决条件:
- 用户必须登录(
vention login) - 目标设计必须在MachineBuilder中打开MachineLogic选项卡
- 目标应用必须是一个MachineLogic Python应用(不支持无代码应用)
退出代码:
0:拉成功1:未登录,未找到活动设计,或拉出失败
vention push
描述: 将本地更改从链接的目录上载到活动设计。
用法:
vention push
行为:
- 如果目录没有链接:则提供将其链接到应用程序并继续推送
- 读取
.machine-code-app-directory-info.json识别目标设计/应用 - 序列化所有本地文件,除了被忽略的模式
- 上传到machinbuilder
- 更新
lastPushedAt时间戳
先决条件:
- 用户必须登录
- 相同的设计必须在MachineBuilder中激活(MachineLogic选项卡打开)
退出代码:
0:推送成功,或链接提示取消推送1:未登录、设计未激活或推送失败
vention link
描述: 将当前目录链接到design +应用程序,而不需要拉出文件。
用法:
vention link
行为:
- 提示设计和应用程序选择
- 写
.machine-code-app-directory-info.json使用链接元数据 - 不下载或修改现有文件
用例: 当你已经有了应用程序文件,只想建立推送操作的连接时非常有用。
退出代码:
0:链接成功1:未登录、未找到活动设计或链接失败
vention logs
描述: 从链接的数字孪生中获取应用程序日志。
用法:
vention logs
行为:
- 读取
.machine-code-app-directory-info.json识别目标设计/应用 - 从数字孪生中获取应用程序的日志
- 将日志打印到终端
先决条件:
- 目录必须被链接(包含
.machine-code-app-directory-info.json) - 用户必须登录
- 相同的设计必须在MachineBuilder中激活(MachineLogic选项卡打开)
退出代码:
0:日志已成功获取1:未链接、未登录、设计未激活或获取失败
vention skills
描述: 为您的编码代理安装Vention技能,使其保持最新,并列出已安装的技能。
用法:
vention skills install [--agent <claude-code|codex|cursor|copilot>] [--scope <user|project>]
vention skills update
vention skills status
行为:
install询问您使用哪个代理,除非--agent给出。克劳德代码和法典安装vention插件通过自己的插件管理器从vention-skills目录在https://assets.vention.com/vention-skills/marketplace.json; 光标和副驾驶从@vention/vention-skillsNPM package into.agents/skills--scope默认为user; Codex总是为您的用户帐户安装update找到所有拥有该技能的代理,并将其更新到npm上的最新版本:claude plugin update对于Claude Code,重新运行Codex的安装,并在光标和副驾驶的安装范围内重新解包。它打印每个代理的新旧版本。手工复制成的技能.claude/skills都是孤独的status列出磁盘上的每个Vention技能及其版本和位置,紧挨着npm上的最新版本。如果无法联系到npm,它仍然会列出它们,并说无法检查最新版本
先决条件:
- Node.js和npm,加上代理自己的CLI用于Claude Code(2.1.277或更高版本)或Codex
链路元数据文件
地点: .machine-code-app-directory-info.json (项目根目录)
模式:
{
"appName": "My App",
"designId": 12345,
"applicationId": "abcdef",
"uuid": "optional-app-uuid",
"environment": "prod",
"lastPulledAt": "2025-01-01T12:34:56.789Z",
"lastPushedAt": "2025-01-02T09:10:11.123Z"
}
字段:
appName(string):人类可读的应用程序名称designId(数字):唯一的设计标识符applicationId(string):唯一的应用程序标识符uuid(string,可选):应用UUID(如果可用)environment(string):目标环境(其中之一)local,demo,prod)lastPulledAt(ISO 8601时间戳):最后一次成功拉取时间(也在目录第一次链接时设置)lastPushedAt(ISO 8601时间戳):最后一次成功推送的时间
🔍故障处理与FAQ
常见的错误
“没有登录。请先运行“登录”。
- 原因: 未找到身份验证令牌或已过期
- 解决方案: 运行
vention login来认证
“没有找到活动分配…”或“对不起,您似乎没有打开该设计…”
- 原因: 没有设计在MachineBuilder中打开MachineLogic选项卡
- 解决方案: 在MachineBuilder中打开目标设计,然后单击MachineLogic选项卡来激活它
相同的两条消息,尽管设计是用MachineLogic选项卡打开的
- 原因: CLI版本大于0.37.0。旧版本不能再访问您的MachineLogic Python应用程序,因此它们报告设计未打开。
- 解决方案: 运行
vention --version。低于0.37.0,继续 升级 并重试。在0.37.0或更高版本,请联系Vention技术支持,并提供运行失败命令的输出vention --verbose.
“这个目录没有链接…”
- 原因: 目录没有
.machine-code-app-directory-info.json - 解决方案: 运行
vention link或者vention pull建立链接。在push,命令行将提供链接目录并自动继续。
推送失败,身份验证错误
- 原因: 会话令牌过期
- 解决方案: 运行
vention login刷新身份验证
“目录已经存在”(在拉取过程中)
- 原因: 带有应用名称的文件夹已经存在
- 解决方案: :
cd到现有目录中并运行vention pull(更新到位)- 重命名或删除冲突的文件夹
- 运行
vention link而不创建新文件夹进行链接
常见问题解答
问:我可以在无代码的MachineLogic程序中使用这个功能吗?
答:不,只支持MachineLogic Python应用程序。
问:在本地编辑时,我需要保持MachineBuilder打开吗?
答:不,你只需要在运行时打开MachineBuilder(与MachineLogic标签激活) pull, push,或者 logs 命令。
问:我的身份验证令牌存储在哪里?
答:在 ~/.vention-cli-config.json 在您的主目录中。
问:如何查看CLI版本和升级?
答: vention --version 打印它。看到 升级 用于单行升级命令。
问:我可以同时使用多个应用程序吗?
答:是的,每个应用文件夹都有自己的链接元数据。您可以有多个链接目录。
Q:哪些文件在推送过程中会被忽略?
答: venv, .venv, node_modules, dist, build, __pycache__, *.egg-info, .machine-code-app-directory-info.json, .vention-design-scene-assets.json, .vention-design-configuration.json.
问:我可以添加自定义忽略模式吗?
答:目前没有。忽略列表内置于CLI中。
问:如果我在MachineBuilder和本地编辑同一个应用程序会发生什么?
A:最后一个推/拉赢。没有冲突解决或合并。我们建议对本地副本使用版本控制(Git)。
问:这是否适用于MachineMotion应用?
答:CLI专门针对MachineLogic Python应用程序。关于MachineMotion的开发,请参阅MachineMotion SDK文档。