Skip to main content

CLI 概览

更新 2026-10-02 8 分钟阅读 在 GitHub 上编辑 ↗

概览在终端执行的 moai(Go 二进制)的所有命令与标志。它与在 Claude Code 对话窗输入的 /moai(斜杠子命令)是完全不同的工具 —— 本页只讲终端 CLI。

各命令的详细参考(标志、子命令、示例)请见 CLI 参考 部分。

命令树

bash
moai --help

moai CLI 分为三组。

组命令说明
Launchmoai cc · moai glm启动 Claude Code 会话(选择后端)
Projectmoai init · moai update · moai doctor · moai status项目初始化、更新、诊断、状态查询
Toolsmoai profile · moai inventory · moai hook · moai worktree · moai spec · moai harness · …配置、清单、钩子、工作树等工具

用 moai version 确认当前安装的版本。

bash
moai version
text
╭────────────────────────╮
│                        │
│    moai-adk v3.0.0     │
│                        │
│                        │
╰────────────────────────╯
 v3.0.0   none   built unknown

框式横幅下方一行按 <版本> <提交哈希> built <构建时刻> 顺序显示。若像 go install 那样在无 ldflags 下构建,提交显示为 none,构建时刻显示为 unknown。


moai init

初始化项目。交互式向导会设置语言、Git 自动化、模型策略、harness 配置文件等。

bash
moai init [project-name] [OPTIONS]

标志

标志说明
--non-interactive跳过交互式向导(使用标志与默认值)
--force强制重新初始化既有项目(会备份当前 .moai/)
--no-hooks跳过 Git 钩子安装
--all部署 catalog 全部条目(core + optional packs + harness-generated)
--mode <ddd|tdd>开发方法论(默认: tdd)
--language <lang>主编程语言
--framework <name>框架名称(默认: 自动检测或 “none”)
--name <name>项目名称(默认: 目录名)
--root <path>项目根目录(默认: 当前目录)
--git-mode <manual|personal|team>Git 工作流模式(默认: manual)
--git-provider <github|gitlab>Git 提供者
--enable-lsp启用 LSP 联动(默认: true)
--enforce-quality强制质量门禁(默认: true)
--enable-design启用 design 工作流(默认: true)
--profile <high|medium|low>已弃用的桩 —— 为脚本兼容仍接受值,但没有任何效果,并打印指向 moai profile setup 的弃用警告
--model-policy <high|medium|low>已弃用的桩 —— 为脚本兼容仍接受值,但没有任何效果,并打印指向 moai profile setup 的弃用警告
--high已弃用的桩 —— 已退役的 --model-policy high 的别名,打印同样的弃用警告

示例

bash
# 初始化新项目(交互式向导)
moai init my-project

# 安装到既有文件夹
cd my-existing-project
moai init

# 非交互(CI/CD)
moai init --non-interactive

详细的向导步骤请参阅初始设置页面。


moai update

将 MoAI-ADK 更新到最新版本。不带标志运行时会一并更新二进制与模板,用户自定义资产会自动保留。

bash
moai update [OPTIONS]

标志

标志说明
--check仅确认是否有新版本(不更新)
-c, --config重新运行设置向导(不同步模板)
--force强制更新(跳过版本一致检查、强制 备份+合并、覆盖归档 drift)
--yes自动批准所有确认(CI/CD 模式)
--templates-only跳过二进制更新,仅同步模板
--binary跳过模板同步,仅更新二进制
--dry-run不改动文件系统,仅显示计划的操作
--no-hooks跳过 Git 钩子安装
--verbose显示所有警告(诊断模式)
--shell-env为 Claude Code 配置 shell 环境变量
--profile <high|medium|low>已弃用的桩 —— 为脚本兼容仍接受值,但没有任何效果,并打印指向 moai profile setup 的弃用警告

示例

bash
# 默认更新(二进制 + 模板)
moai update

# 仅确认是否有新版本
moai update --check

# 重新运行设置向导
moai update -c

# 仅同步模板
moai update --templates-only

详细的更新流程请参阅更新页面。


moai doctor

执行系统诊断。检查 Git、项目结构、配置文件、各语言的开发工具。

bash
moai doctor [OPTIONS]

标志

标志说明
-v, --verbose显示详细的工具版本与语言检测结果
--fix提出缺失工具的修复建议
--export <path>将诊断结果导出为 JSON 文件
--check <tool>仅确认特定工具(例: git, go, config)

子命令

命令说明
moai doctor sandbox诊断沙箱后端可用性
moai doctor permission诊断权限解析
moai doctor hook显示 30 个钩子事件覆盖率表
moai doctor config dump连同 provenance 转储合并后的配置
moai doctor config diff <tier-a> <tier-b>对比两个配置层级

示例

bash
# 完整诊断
moai doctor

# 详细诊断
moai doctor --verbose

# 导出诊断结果
moai doctor --export diagnostics.json

moai status

一目了然地查询项目状态。显示是否已初始化、SPEC 数量、配置文件数。

bash
moai status

这是无标志的只读命令。详细的输出内容请参阅项目状态页面。


moai inventory

综合查询活跃会话、工作树、harness 的只读命令。

bash
moai inventory [OPTIONS]

标志

标志说明
--json结构化 JSON 输出
--project-root <path>项目根路径(默认: 当前目录)

详细的 JSON schema 与使用示例请参阅moai inventory页面。


moai profile

管理 Claude Code 设置配置文件。可为每个配置文件维护独立的模型、语言、显示设置。

bash
moai profile [COMMAND]

子命令

命令说明
moai profile list显示所有可用配置文件
moai profile setup运行交互式设置向导
moai profile current显示当前活跃的配置文件
moai profile delete <name>删除指定的配置文件

用 -p 标志指定运行时的配置文件:

bash
moai cc -p work       # 用 work 配置文件运行 Claude
moai glm -p cost-save # 用 cost-save 配置文件运行 GLM

详情请参阅配置文件管理页面。


moai hook

处理 Claude Code 钩子事件的调度器。由 settings.json 的钩子设置以 moai hook <event> 形式调用。

bash
moai hook <event>

支持的子命令(42 个)

moai hook 调度器把标准 Claude Code 钩子事件与 MoAI 专用内部动作合在一起,共提供 42 个子命令。所有名称均为 kebab-case。下面是有代表性的事件。

钩子事件数与子命令数是两个不同的数字。 moai doctor hook 显示的 30 是 Claude Code 定义的钩子事件种类,这里的 42 是 moai hook 接受的子命令数量。由于 MoAI 专用内部动作没有对应事件也作为子命令存在,两者并不一致。

事件说明
session-start会话开始
session-end会话结束
pre-tool工具执行前(PreToolUse)
post-tool工具执行后(PostToolUse)
post-tool-failure工具执行失败后
stop会话停止
stop-failure停止失败
compact上下文压缩前(PreCompact)
post-compact上下文压缩后
notification系统通知
subagent-start子智能体开始
subagent-stop子智能体结束
user-prompt-submit用户提示提交
permission-request权限请求
permission-denied权限拒绝
teammate-idle队友空闲状态
task-completed任务完成
task-created任务创建
worktree-create工作树创建
worktree-remove工作树移除
instructions-loaded指令加载完成
config-change配置变更
cwd-changed工作目录变更
file-changed文件变更
elicitationMCP elicitation 请求
elicitation-resultMCP elicitation 结果

还包含 MoAI 专用子命令。

子命令说明
stop-goal回合结束时评估活跃会话的 goal
pre-push按约定校验提交信息
spec-statusgit 提交时自动更新 SPEC status
harness-classify运行 harness 分类器并记录层级晋升
harness-observe · harness-observe-stop · harness-observe-subagent-stop · harness-observe-user-prompt-submit记录 harness 使用日志

钩子不由用户直接执行 —— Claude Code 的 settings.json 会自动调用。


moai worktree

管理 Git worktree 以进行并行 SPEC 开发。

bash
moai worktree <COMMAND> [ARGS]...

子命令

命令说明
moai worktree sync [branch-name]与 base 分支同步 worktree
moai worktree done <branch-name>移除分支的 worktree,可选删除分支
moai worktree remove <path>移除指定路径的 worktree
moai worktree clean清理 stale 引用,收拾已合并/已废弃的 worktree
moai worktree recover恢复 worktree 注册表
moai worktree snapshot捕获工作树状态快照
moai worktree verify对照快照校验工作树状态
moai worktree restore把工作树恢复到快照 HEAD 状态

进入工作树是启动器的职责。列表查询则直接用 git。

bash
moai cc -w feat-login           # 在工作树中开始工作 (不存在则创建)
moai cc -w feat-login --spawn   # 保留当前会话,在新 tmux 窗口中打开
git worktree list               # 工作树列表

moai cc / moai glm

moai cc 和 moai glm 使用明确选择的后端启动 Claude Code。旧 CG 配置必须先迁移才能启动。

bash
moai cc [-p profile] [-- claude-args...]
moai glm [-p profile] [-- claude-args...]

moai cg 已停用。它会显示迁移提示并退出,不会启动 Claude 或 GLM,也不是 moai cc 的别名。项目中若仍有 llm.team_mode: cg,必须先明确选择迁移方案,才能启动会话。 CG 停用与配置迁移

启动标志

三条启动命令共同支持的标志。

标志说明
-p, --profile <name>使用命名的 Claude 配置文件
--permission-mode <mode>权限模式(default, acceptEdits, plan, auto, bypassPermissions, dontAsk)
-b, --bypass--permission-mode bypassPermissions 的简写

moai cc 额外支持以下标志。

标志说明
-c, --continue续接上一个会话
-m, --model <model>覆盖模型选择
--chrome / --no-chrome原样传递给 Claude Code。启动器不会自行添加任一标志,因此除非传入 --no-chrome,否则可通过 /chrome 连接

auto 权限模式在 GLM(第三方提供者)中不可用 —— 仅在 moai cc 中支持。

会话模型的确定顺序(moai cc)

moai cc 按下面的顺序查找会话模型,并把找到的第一个值作为 --model 传给 Claude Code。

  1. 显式指定的 --model 参数
  2. 配置文件中的模型(在 moai profile setup 里选的值)
  3. 环境变量 ANTHROPIC_MODEL(仅本次启动)
  4. 项目 .claude/settings.local.json 里的 model(仅本项目)
  5. 该配置文件的用户级 settings.json 中用 /model 保存的值 —— 启动时会用一行提示,例如 model: opus (user /model)
  6. 以上都为空时不传任何值。此时由项目 .claude/settings.json 里的 model 固定值决定会话模型,启动器会指出该值以及修改方法

越具体、越新近由用户直接指定的,优先级越高。第 3 步和第 4 步由 Claude Code 自己应用,所以启动器不传 --model,直接让路。项目设置优先于用户级设置,所以没有第 5 步时,用 /model 选的模型会被项目固定值盖住。moai glm 不适用这条规则:GLM 需要以槽位别名传入模型,而在 Anthropic 账户里用 /model 选的值属于另一个模型系列,会连到错误的槽位。

moai glm 子命令

命令说明
moai glm setup <api-key>保存 GLM API 密钥
moai glm status显示当前 GLM 凭据状态
moai glm tools管理 Z.AI MCP 服务器工具(启用/禁用)

moai goal

为当前会话注册·查询·解除基于条件的自主 goal 循环。在条件满足之前,每个回合结束时进行评估。

bash
moai goal <COMMAND>
命令说明
moai goal arm <condition>为活跃会话注册·激活 goal
moai goal status输出活跃会话的 goal 状态
moai goal clear解除活跃会话的 goal

moai handoff

管理用于跨越 /clear 边界续接会话的 auto-resume 交接待处理记录。

bash
moai handoff <COMMAND>
命令说明
moai handoff save把粘贴即用的 resume 正文保存为待处理记录
moai handoff clear移除待处理的交接记录

moai session

管理用于缓解多会话竞态的活跃会话协调注册表。

bash
moai session <COMMAND>
命令说明
moai session current输出当前编排器会话 UUID
moai session list活跃会话列表(可用 --filter-spec 过滤)
moai session register <session_id> <spec_id> <phase>向注册表登记会话
moai session deregister <session_id>从注册表移除会话(幂等)
moai session heartbeat <session_id>更新会话 last_heartbeat
moai session purge移除过期条目(默认: 最后 heartbeat 超过 30 分钟)
moai session doctor诊断会话注册表为空的原因

moai web

启动基于浏览器的配置编辑器 MoAI Web Console。

bash
moai web [OPTIONS]
标志说明
--port <N>绑定到 127.0.0.1 的 TCP 端口(默认: 3041)
--no-open不自动打开浏览器
--no-reuse不从过期的 moai 实例回收端口

moai version

显示版本、commit 哈希、构建日期。

bash
moai version
moai --version    # 相同

模型策略(性能层级)

按智能体逐一分配模型的旧性能层级系统已经退役。v3.2 起,子代理沿用主会话的模型与推理深度 —— 生成子代理时不传 model 也不传 effort,MoAI 智能体定义对两者都不作声明。模型策略的位置上剩下的,是会话层面的一个选择:moai profile setup 的会话模型策略问题,决定以此配置文件启动的 Claude 会话的默认推理强度(未单独选择推理强度时的回退值)。

旧值今天的含义
high会话 effort 回退 high
medium会话 effort 回退 medium
low会话 effort 回退 low
bash
# 配置会话模型策略(以及配置文件的其余全部)
moai profile setup

# 已退役的逐智能体旗标只打印弃用警告,没有任何效果
moai init my-project --model-policy high

旧的 --model-policy、--profile、--high、--medium-alias、--low 旗标是已弃用的桩:为脚本兼容仍接受值,但没有任何效果,并打印指向 moai profile setup 的警告。会话级模型·effort 调节见模型策略页面,矩阵的退役见配置矩阵页面。


参考