CLI 快速入门
ComateCLI 是一个运行在终端里的 AI 编码助手。
- 直接运行:打开一个可对话的交互式 TUI
- 配合子命令:化身可脚本化、可接入 CI 的 Headless CLI
两种模式共享同一套登录态、模型与配置。
1. 快速开始
一句话结论:三步 —— 安装、登录、使用 环境要求:Node.js ≥ 20.10
1.1 安装
使用 npm 全局安装:
1npm i -g @comate/comatecli
安装完成后,命令行工具名为 comatecli。
关于升级:
- TUI 启动时会自动在后台检查更新(见 §3.5)
- 也可手动执行
comatecli update
1.2 登录
1# 默认:设备码登录,自动打开浏览器完成授权
2comatecli login
3
4# SSH / 无浏览器环境:仅打印登录链接,手动在别处打开
5comatecli login --no-browser
6
7# 验证登录态
8comatecli status # 已登录 → 退出码 0;未登录 → 退出码 1
1.3 第一次对话
1# 交互式 TUI
2comatecli
3
4# 一次性 Headless 提问
5comatecli run -q "解释这个仓库的构建流程"
2. 交互式 TUI:终端里的结对编程
2.1 Slash 命令全集
在输入框输入 / 即可弹出命令菜单(↑↓ 选择,Enter 执行,Tab 只补全,Esc 关闭):
| 命令 | 别名 | 作用 |
|---|---|---|
/help |
显示命令清单 | |
/clear |
清空对话并立即新建会话(生成中会先取消) | |
/compact |
压缩会话上下文(总结历史,释放 token) | |
/mode [名] |
切换模式:Agent / Plan / Goal(详见 §2.3) | |
/goal |
进入 Goal 模式(等同于 /mode goal) |
|
/model |
打开模型选择器,选中后持久化 | |
/resume |
/history |
从历史会话列表中恢复一个会话并完整重放 |
/ide |
连接 IDE,在编辑器中查看改动 diff(/ide disconnect 断开) |
|
/exit |
/quit |
退出 TUI |
注意:路径如
/Users/xxx、/tmp/a不会被误判为命令,可放心粘贴。 关于额度:赠送额度用尽后,模型会自动切换为 Auto 免费模式(每日有限额)。/model会给出相应提示 —— 你仍可继续使用,升级套餐后恢复全部模型选择。
2.2 三种模式:Agent / Plan / Goal
| 模式 | 行为 | 适用场景 |
|---|---|---|
| Agent(默认) | 收到任务直接实施 | 日常改代码、答疑 |
| Plan | 先产出计划 → 你批准 → 自动切回 Agent 实施 | 大改动、想先看方案 |
| Goal | 围绕长期目标自动连续续跑直到完成或阻塞,Esc 可暂停 | 长任务放养式推进 |
- Plan 批准门:计划就绪后弹出「开始实施(切回 Agent 执行此计划)/ 继续完善计划(直接输入修改意见,Esc)」。
- Goal 横幅:顶部实时显示
◆ 目标推进中 · 耗时 · 轮次 N · Xk tokens,四态(推进中 / 收尾中 / 已完成 / 已阻塞)。
模式与模型选择都会持久化,下次启动自动恢复。
2.3 会话管理
| 操作 | 行为 |
|---|---|
/clear |
立即新建会话,即时可用 |
/resume |
选择历史会话 → 完整重放全部内容 → 恢复后会询问是否顺手做一次 /compact |
/compact |
生成中不可用;执行时显示「压缩中」,完成后落一条系统提示 |
| 排队发送 | 助手忙时继续输入会进入「❖ 待发送 N 条」队列,任务完成后依次发出;输入框为空时按 ↑ 可整体撤回重新编辑 |
2.4 审批与安全
核心原则:有风险的操作(执行命令、退出时还有后台任务)都会先询问你;30 秒不操作自动取消,不会卡死。
Bash 命令审批门(三选项):
- 是(仅本次)
- 是,本会话不再询问任何命令
- 否,并告诉我该怎么做(Esc)
超时控制:
- 默认 30s(可通过环境变量
COMATE_APPROVAL_TIMEOUT_MS调整) - 超时自动取消执行
- 子任务(agent)里发起的命令同样会弹到主界面,并标注「来自 <agent 链>」
退出保护:
- Ctrl+C 时若有后台任务在跑,会弹「⚠ N 个后台任务仍在运行,退出会终止它们」
- 3 秒内再按一次 Ctrl+C 才真正退出(会逐个终止后台任务)
- 按任意其他键取消
2.5 输入进阶
- 多行输入:Opt+Enter(或 Ctrl+Enter)换行,Enter 发送。
-
粘贴图片:
- 复制图片后按 Ctrl+V,插入
[image-N]占位符,随消息一起发送 - 单图 ≤ 10MB,每条消息最多 5 张
- 剪贴板里有图时 footer 会提示「剪贴板有图片 · 按 ctrl+v 插入」
- 复制图片后按 Ctrl+V,插入
-
输入历史:
- 输入框为空时 ↑/↓ 回溯历史输入
- Ctrl+R 打开历史搜索
-
Emacs 键位:
- Ctrl+A/E:行首/尾
- Ctrl+K/U/W:删至行尾/行首/前词
- Ctrl+Y:粘回
- Alt+B/F:按词移动
2.6 鼠标与滚动
滚轮上下翻(±3 行),PageUp/PageDown/Home/End 翻屏与跳转;上滚后底部显示「▲ 上方 N 行 · End 回到底部」。
框选复制:
- 左键拖拽框选(双击选词、三击选行)
- Cmd+C(kitty 系终端,保留选区)或 Ctrl+C(通用,复制后清选区)复制
- Esc 仅清选区
- 拖选本身不复制,需显式按键
折叠/展开:
- 单击可折叠 / 展开输出块
- Ctrl+O 全局展开 / 收起所有可折叠详情(长输出、diff、子任务树)
2.7 快捷键速查
| 键 | 作用 |
|---|---|
| Enter | 发送 |
| Opt+Enter / Ctrl+Enter | 换行 |
| Esc | 中断生成 / 清选区 / 关闭菜单 |
| Ctrl+C | 退出(有选区时=复制;有后台任务时需 3s 内二次确认) |
| Ctrl+O | 展开 / 收起全部详情 |
| Ctrl+V | 粘贴剪贴板图片 |
| Ctrl+R | 搜索输入历史 |
| ↑ / ↓ | 菜单导航 / 输入历史 / 撤回排队消息 |
| Tab | 菜单补全(不执行) |
| PageUp/PageDown/Home/End | 视口翻页 / 跳顶 / 跳底 |
2.8 自定义扩展:Skill / Command / Agent
把扩展放进 .comate/ 目录即可出现在 / 菜单(项目级 <仓库根>/.comate/ 或个人级 ~/.comate/):
| 类型 | 位置 | 格式要点 | 菜单标签 |
|---|---|---|---|
| Skill | .comate/skills/<name>/SKILL.md |
YAML frontmatter:name、description 必填 | [skill] |
| Command | .comate/commands/<name>.md |
frontmatter 仅 description,正文即模板 | [command] |
| Agent | .comate/agents/<name>.md |
frontmatter:name、description 必填,可选 model | [agent] |
菜单里选中后先变成可编辑的青色 /name token,回车提交时才真正生效;删掉字符即取消。
同名条目自动去重,.comate 目录下的定义优先。
3. Headless 使用:脚本与 CI
一句话结论:
comatecli run是 Headless 模式的主入口 —— 一条命令完成一次(或多轮)AI 任务,stdout 出结果、stderr 出错误、退出码 0/1 可判定,天然适合管道、脚本与 CI。 周边还有login/status/mode/model/update等子命令,把「配置好再跑」的闭环补齐。
3.1 子命令总览
| 命令 | 作用 | 典型场景 |
|---|---|---|
comatecli(裸) |
进入交互 TUI | 日常使用 |
run |
非交互执行一次 AI 任务 | 脚本 / CI |
login / logout / status |
登录 / 登出 / 查登录态(未登录退出码 1) | 首次配置、CI 前置检查 |
mode get/set/list |
查看 / 切换 / 列出默认模式(与 TUI 共享) | 预设行为 |
model get/set/list |
查看 / 切换 / 列出模型(按模型名操作) | 预设模型 |
update [--check] [--force] |
升级(--check 只检查:有更新退出码 1) |
运维 |
list-model |
输出可用模型 JSON | 脚本消费 |
skill install <name> |
安装 skill | 扩展管理 |
search / inspect / indexing / ping |
代码搜索 / 环境体检 / 索引 / 连通性 | 诊断 |
serve [--port …] / serve kill |
启 / 停本机 HTTP SSE 服务 | 集成 |
每个命令都支持 --help 查看详情。
3.2 comatecli run 详解
最小可用(--query、--activate-skill、--activate-command 至少给一个):
1comatecli run -q "找出本仓库里所有 TODO 并按模块归类"
常用配方:
1# 指定模型与模式
2comatecli run -q "重构 src/utils 里的重复代码" -m "某模型显示名" --mode Agent
3
4# 多轮会话:继续当前目录最新会话 / 指定会话 ID
5comatecli run --continue -q "接着把单测也补上"
6comatecli run -c <conversationId> -q "第二轮问题"
7
8# 附件与能力激活
9comatecli run -q "看下这张报错截图" --attach-image ./shot.png
10comatecli run -q "评审这个文件" --attach-file src/app.ts --enable-codebase-search
11comatecli run --activate-skill deploy-check # 直接跑一个 skill
12
13# 结构化输出(脚本解析)与流式输出
14comatecli run -q "总结变更" -d task-json | jq .
15comatecli run -q "长任务" -d delta-stream
16
17# 自动重试:最后一轮无文本产出/报错时补发「继续」,最多 3 次
18comatecli run -q "跑通全部单测" --retry 3 --retry-query "继续"
19
20# CI 示例:登录态检查 + 失败即挡门禁
21comatecli status || exit 1
22comatecli run -q "检查本次 diff 是否引入了明显缺陷,有则详细列出" || exit 1
Flag 全表(按用途分组):
| 组 | Flag | 说明 |
|---|---|---|
| 输入 | -q, --query <文本> |
提交内容 |
--append-system-prompt <文本> |
追加系统提示词 | |
| 会话 | -c, --conversation <id> |
指定会话(多轮);与 --continue 互斥 |
--continue |
继续当前目录最新会话 | |
| 模型/模式 | -m, --model <名> |
模型(推荐用显示名,也接受 ID) |
--mode <名> |
Agent(默认)/ Ask / Plan / Goal | |
| 能力激活 | --activate-skill <名>(可重复) |
激活 Skill |
--activate-command <名>(可重复) |
激活 Command | |
--activate-subagent <名>(可重复) |
激活 Subagent | |
--activate-rule <路径>(可重复) |
激活 Rule | |
--enable-codebase-search |
启用代码库搜索 | |
--disable-built-in-skills |
禁用内置 skills | |
--disable-hooks |
禁用 hooks | |
| 附件 | --attach-image <路径/ID>(可重复) |
附图 |
--attach-file <路径>(可重复) |
附文件 | |
| 输出 | -d, --display <模式> |
task(默认,人读)/ task-json / delta-stream / event-stream / record-stream / record |
--no-delta-batch |
仅 delta-stream 下逐条输出原始增量 |
|
| 重试 | --retry <N> |
最多自动重试 N 次(须与 --retry-query 成对) |
--retry-query <文本> |
重试时发送的内容,默认「继续」 | |
| 执行 | --cwd <路径> |
工作区目录 |
--spawn-mode <LOCAL|WORKTREE> |
执行位置(本地 / 隔离 worktree) | |
--background-timeout <秒> |
后台任务最长等待;不设 = 无限等 | |
--memory |
任务完成后立即触发记忆抽取并等待 | |
--ripgrep <路径> |
指定 ripgrep 路径(支持 ~) |
|
| 鉴权 | -l, --license <license> |
License(不落盘的一次性鉴权) |
退出码约定:
0:成功1:参数校验失败 / 鉴权失败 / 运行异常
错误信息走 stderr,正常输出走 stdout。
run不带任何参数时只打印帮助,不会误发空请求。
3.3 Headless 鉴权的两种方式
| 方式 | 做法 | 适用 |
|---|---|---|
| 落盘凭证(推荐) | 先 comatecli login,之后所有命令免参 |
个人机器 |
| 显式 License | 每条命令带 -l <license> |
CI / 临时环境(把 License 放进 CI 的 secret) |
3.4 mode / model 子命令
1# 模式管理
2comatecli mode # 查看当前模式(未设显示默认 Agent)
3comatecli mode list # Agent / Plan / Goal,当前项打 *
4comatecli mode set Plan
5
6# 模型管理
7comatecli model # 查看当前模型(离线,只读本地配置)
8comatecli model list # 联网列出可用模型名(--ids 附带模型 ID)
9comatecli model set auto # auto 免联网即可设置
10comatecli model set "某模型显示名" # 按名匹配(大小写不敏感),联网校验通过才落盘
3.5 update 升级
自动升级:TUI 启动后后台静默检查并安装,结果在下次启动的横幅提示(「 已更新到 vX」),不阻塞使用。
手动升级:
1comatecli update # 前台安装,装完提示重启生效
2comatecli update --check # 只检查:已最新退出码 0,有更新退出码 1(CI 友好)
3comatecli update --force # 强制重装最新(含预发布)
评价此篇文章
