OriginAI CLI 命令行参考
使用 OriginAI CLI 进行登录授权、项目绑定、诊断、运行本地 MCP、检索 Release 快照、推进同步指针及提交变更请求。
originai CLI 是编码 Agent 与人类开发者在浏览器 Web 工作台之外获取、管理产品上下文的核心通道。在日常开发中,强烈建议优先使用 CLI——或直接调用底层映射相同 API 的 MCP 工具——而非手动编写裸 HTTP 请求。
CLI 的工程源码位于 monorepo 的 packages/skills 目录(以 originai 包名正式发布至 npm),其内置的 Agent Skill 规范正文定义于 packages/skills/src/setup.ts(SKILL_MD)。
安装与快速启动
# 免全局安装,单次直接调用:
npx originai -h
bunx originai -h # 当本地环境具备 Bun 时强烈推荐(启动耗时 ~40ms,大幅优于 npx 的 ~1.2s)
# 或全局安装至系统环境:
npm install -g originai
# 亦可选用:bun add -g originai / pnpm add -g originai身份认证与授权
在个人开发设备上进行日常交互开发时,仅需执行一次浏览器登录:
originai login
# 或通过:npx originai login该命令将在默认浏览器中唤起授权页面,并在验证通过后将个人令牌安全持久化于 ~/.origin/settings.json 中——切勿将该文件提交至版本控制系统。
仅在 CI/CD 流水线或无头服务器环境中,才需要显式注入环境变量 ORIGIN_TOKEN(在 Web 控制台的 系统设置 → 访问令牌 中生成,格式通常以 oat_… 开头)。详见个人访问令牌指南。
CLI 解析访问凭据的优先级顺序如下:
- 命令行显式传入的
--token参数。 - 当前进程环境变量或所在目录
.env文件中的ORIGIN_TOKEN。 - 本地存储配置文件
~/.origin/settings.json(由originai login写入)。
自定义服务网关端点配置
你可以将 CLI 的服务端点灵活指向本地测试栈、分支预览环境或私有网关,无需在每次命令中重复传递参数:
# 查看当前生效与持久化存储的各项端点配置:
originai config
# 将 API 请求重定向至本地 Supabase Edge Function:
originai config set api_url http://127.0.0.1:54321/functions/v1/origin-api
# 按需配置本地环境的浏览器登录页面与远程 MCP 服务端点:
originai config set web_url http://localhost:5173
originai config set mcp_url http://127.0.0.1:8787
# 清除特定的端点覆盖设置:
originai config unset api_url本地配置文件 ~/.origin/settings.json(严禁提交至 Git)的标准结构示例如下:
{
"token": "oat_…",
"api_url": "http://127.0.0.1:54321/functions/v1/origin-api",
"web_url": "http://localhost:5173",
"mcp_url": "http://127.0.0.1:8787"
}| 配置键名 | 核心用途与指向 |
|---|---|
api_url | Origin API(Edge Function)的基础请求 URL。 |
web_url | 官方 Web 控制台的基础地址,主要用于唤起浏览器授权。 |
mcp_url | 托管式或自定义远程 HTTP MCP 服务的接入端点。 |
API 服务端点的完整解析优先级:
- 命令行显式传入的
--api-url参数。 - 进程环境变量
ORIGIN_API_URL。 - 项目根目录
.origin.json中配置的api_url字段。 - 本地配置文件
~/.origin/settings.json中的api_url。 - 官方生产环境默认生产端点。
Web 地址与 MCP 端点同样遵循上述解析范式:优先读取 ORIGIN_WEB_URL / ORIGIN_MCP_URL 环境变量,其次检索 settings.json,最后回退至生产默认值。
请注意:执行 originai logout 会安全清除本地保存的凭据令牌,但会完整保留已配置的端点覆盖设置。
关联代码仓库
# 在本地应用代码仓库的根目录下执行:
npx originai link --project <project-id>
# 关联项目的同时,部署 Agent Skill 规范及其包含的 RPML 参考文件:
npx originai link --skill
npx originai link --project <project-id> --skill
# 针对不同主流 Agent 客户端一键部署对应的指令与引导文件:
npx originai link --project <project-id> --claude-code --codex --cursor --skill
# 或一次性部署全套适配指令与规范:
npx originai link --project <project-id> --all关联操作将在本地生成以下文件资产:
| 资产路径 | 核心用途与纳入版本控制说明 |
|---|---|
.origin.json | 提交至 Git 的元数据配置文件:记录 api_url、project_id 与当前的 release_hash。 |
.agents/skills/origin-product-spec-management/ | 官方 Skill 规范正文及 rpml/ 语法参考文件(当指定 --skill 时生成)。 |
CLAUDE.md / AGENTS.md / .cursorrules | 针对特定 Agent 的项目规则提示词文件,随对应标志按需生成。 |
环境诊断与健康检查
npx originai doctor
npx originai whoami
npx originai install-helpdoctor 命令会自动逐项核验本地登录会话、.origin.json 关联完整性、Skill 规范与指令规则文件状态,以及远程 API 的端到端网络连通性。
本地 MCP 服务(Claude Code 插件默认架构)
npx originai mcp # 启动标准 stdio 协议的本地 MCP 服务(自动读取本地登录凭据)
npx originai mcp config --claude # 输出适配 Claude Code 的 stdio 配置 JSON
npx originai mcp config --cursor # 输出适配 Cursor 的配置 JSON
npx originai mcp config --remote # 输出针对远程 HTTP + ORIGIN_TOKEN 模式的配置(高级/CI场景)本地 MCP 工具与云端托管 MCP 及底层 origin-api 保持完全一致的命名规范(例如 get_diff、list_documents 等)。需要特别指出的是:MCP 工具集有意不提供直接执行 sync 的接口——在依据 Release 快照完成代码实现与校验后,请在终端显式执行 npx originai sync 推进指针。详见 MCP 与 Agent 安装参考。
完整命令参考速查表
当本地环境具备 Bun 运行时,推荐优先使用 bunx originai <command> 执行。
| 命令行指令 | 功能详细描述 |
|---|---|
login / logout / whoami | 用户凭据与认证状态的全生命周期管理。 |
config / config get / config set / config unset | 检查与维护 ~/.origin/settings.json 中的服务端点(api_url、web_url、mcp_url)。 |
doctor | 自动化环境与依赖诊断。 |
install-help | 输出面向各主流 Agent 的配置片段矩阵。 |
mcp / mcp config | 启动本地 stdio MCP 服务器或生成对应客户端的配置块。 |
link | 将当前代码仓库与 OriginAI 项目绑定,按需部署 Skill 与规则文件。 |
list-projects | 列举当前账户有权访问的所有项目清单。 |
create-project --name "<n>" | 创建一个全新的、具备可写权限的空白项目。 |
list-documents | 获取最新已发布 Release 的文档树(或使用 --read-type workspace 读取工作区草稿)。 |
get-document --id <file-id> | 提取单个规格文档的完整正文内容。 |
get-diff(别名 diff) | 对比自上次同步指针以来的规格变更。此操作为只读检查——绝不会推进 release_hash 指针。返回统一差集(+/-),默认附带目标版本的完整内容。参数支持:--content-mode none|to|both、--from-hash、--to-hash。 |
sync | 当在代码中完整实现并验证了所有变更后,将本地 release_hash 同步指针正式推进至最新发布版本。 |
grep --pattern "<regex>" | 在规格文档内容中执行正则表达式检索。 |
find --file-pattern "<regex>" | 按文件名匹配检索规格文件。 |
validate --content "<rpml>"(-c) | 在本地环境离线校验 RPML 语法的合规性(无需网络连接,亦无需身份令牌)。 |
validate --id <file-id>(-i) | 远程验证特定已发布文档的合规状态。 |
write-document --name "<name>" --content "<rpml>" | 创建或更新规格文件。在首次发布后执行,将自动创建或追加至变更请求(--proposal / --new-proposal)。系统无须独立的 create-change-request 指令。 |
delete-document --id <file-id> | 删除指定规格文档(发布后同样自动受控转为变更请求)。 |
delete-documents --ids <id1>,<id2>,... | 批量删除多个规格文档。 |
list-proposals --status all | 检索变更请求列表,附带 decided_items[] 与历史 dismiss_reason。在 Agent 写入前建议首先调用。 |
get-proposal <id> [--with-content] | 提取特定变更请求的详细数据:变更项清单、写入批次、Diff 对比及设计意图。 |
get-proposal-diff <id> [--bind] | 提取基准 Release 与该变更请求之间的规格差异。指定 --bind 会将其 proposal_id 写入本地 .origin.json。 |
describe-proposal <id> --title "…" [--note "…" --rationale "…" ] | 结构化记录本次变更请求的背景 Issue(title、note)与设计决策 Decisions / Changelog(rationale)。 |
submit-proposal <id> | 将变更请求标记为就绪状态。若此前尚未调用 describe,可直接透传相同的说明字段。 |
commit-proposal <id> | 封存当前波次的写入批次,但不改变整体的就绪状态。 |
comment-proposal <id> --body "…" | 在特定变更请求的讨论流中发表审查评论。 |
list-proposal-comments <id> / list-proposal-reviews <id> | 提取变更请求的讨论历史与 Ready / Not ready 审查结论。 |
所有数据返回类命令默认向 stdout 输出纯净的 JSON 字符串(天然支持接入 jq 等工具流);所有交互提示、警告及诊断状态均输出至 stderr。
规格读取的默认数据源
- 在默认情况下,所有读取命令均返回最新已发布 Release 快照中的数据——绝不会返回处于动态编辑中的工作区草稿。
- 指定
--read-type workspace可显式读取动态的rpml_files工作区树。在项目发布首个 Release 之前必须使用该参数,否则默认的 Release 读取会因为尚未发布而返回404。 - 指定
--release-tag <hash>可精准固定读取特定的历史 Release 快照版本。
首次发布后的安全写入机制
当项目完成首次发布后,write-document 与 delete-document 操作将自动创建或追加至变更请求(返回 suggested: true)。系统无需额外的 create-change-request 接口——首次发起的暂存写入会自动完成创建。在人类成员在 OriginAI Web 控制台中**确认应用(Apply)**之前,这些写入绝不会污染工作区。
Agent 可通过 --proposal <id> 继续向特定变更请求追加修改,或指定 --new-proposal 另立请求。推荐在调用 submit-proposal 标记就绪前,先通过 describe-proposal 补充完整的修改意图与设计权衡。详见工作区与 Release 快照。
仓库同步模型与指针机制
本地配置文件 .origin.json 包含 release_hash(标识当前代码仓库最近一次完整对齐的已发布 Release 版本),以及可选的 proposal_id(实现绑定目标——当下一条 PR 旨在专项实现某份变更请求时,通过 get-proposal-diff <id> --bind 写入)。
- 执行
get-diff:若绑定了proposal_id,系统将返回已发布 Release 与该变更请求的差异;若未绑定,则展示本地同步指针与最新 Release 的全量差异。请始终先研读diff。 - 在工程代码中实现这些规格差异。
- 若实现的是变更请求,应先在 OriginAI 中确认应用并发布新版本,随后再在本地运行
sync推进release_hash指针。请注意:sync仅在检测到新的 Release 哈希生成后,才会清除本地配置文件中的proposal_id。
典型工作流 A —— 已有产品逆向导入(OriginAI → 本地代码库)
npx originai login
npx originai link --project <project-id> --skill
npx originai doctor
npx originai get-diff
# 编码 Agent 根据 Diff 编写实现代码
npx originai sync典型工作流 B —— 全新产品起草(代码库 → OriginAI,首次发布前)
npx originai login
npx originai create-project --name "My App"
npx originai link --project <new-id> --skill
# 直接在命令行中以内联方式起草 RPML —— 本地无需生成物理 .rpml 文件
npx originai validate --content "<page mode='doc'>…</page>"
npx originai write-document --name "README.rpml" --content "<rpml>"
# 针对规划的每个页面路由逐一写入 .rpml,随后验证:
npx originai list-documents --read-type workspace随后前往 OriginAI 官方 Web 界面发布首个 Release。首次发布完成后,外部 Agent 后续的所有写入将自动受控转为变更请求——遵循 list-proposals、describe-proposal、submit-proposal 的标准化协同闭环,经人类确认应用后再行发布。
避免直接编写裸 HTTP 请求调用 API
请始终优先使用官方 CLI 或 MCP 协议工具。手动编写 curl 或 fetch 调用 origin-api 极易在签名认证头、URL 编码规范或请求超时重试机制上产生偏离。若需要让 Agent 在无工具环境下通过 HTTP 自动发现 Skill 规范,参见 Agent Skills 规范。