[控场AI]
· 11 分钟阅读· 5,648 字

四大AI编程Agent命令对比:/compact还是/compress?

四大AI编程Agent命令对比:/compact还是/compress?

四大AI编程Agent的九项常用命令与启动参数对照,揭示同名命令的隐藏差异。

文章基于Claude Code、Codex CLI、Gemini CLI和OpenCode四家官方文档,系统整理了切换模型、压缩上下文、开启新会话、恢复会话、代码审查等九项日常操作在四个Agent中的真实命令名与启动参数,指出上下文压缩命令即存在`/compact`与`/compress`的分裂。作者重点剖析了"同名不同命"的陷阱:`/model`是否持久化、`/clear`清空范围各异、`/review`在v2.1.223前后含义改变、`/stats`所指不同、`/init`写入的文件各不相同。文章还提及其自研的Hermes IDE通过统一操作栏减少这种认知负担,并建议读者以已安装版本的实际命令列表为准。

同时使用Claude Code、Codex CLI、Gemini CLI和OpenCode的开发者,几乎每周都会撞上同一个问题:同一个操作,四个工具用了四套命令名。

最经典的例子是上下文压缩。你在Gemini CLI里输入/compact,它不认识——Gemini CLI的命令是/compress,官方文档只有一句解释:"用摘要替换整个聊天上下文"。而Claude Code、Codex CLI和OpenCode都叫/compact。

本文基于四家厂商的官方文档,整理九项日常操作在四个Agent中的真实命令名,并指出那些"名字相同、行为不同"的陷阱。

四大AI编程Agent命令对比

命令对照表:九项任务,四个Agent

以下内容来自Claude Code命令参考、Codex CLI命令文档、Gemini CLI命令参考和OpenCode TUI文档。括号内为别名。

任务Claude CodeCodex CLIGemini CLIOpenCode
切换模型/model/model/model/models
先规划再执行/plan/plan/planTab切换到Plan agent
压缩上下文/compact/compact/compress/compact(/summarize)
查看上下文用量/context/status无命令无命令
开启新会话/clear(/new、/reset)/new或/clear/clear/new(/clear)
恢复会话/resume(/continue)/resume/resume(/chat)/sessions(/resume、/continue)
查看diff/diff/diff无命令无命令
代码审查/code-review(/review)/review无命令无命令
用量与成本/usage(/cost、/stats)/status、/usage/stats无命令(用shell的opencode stats)

几个单元格需要补充说明。OpenCode没有/plan命令,它的Plan agent是一个独立的主Agent,在任何编辑或bash命令前会先询问确认,通过Tab切换。Gemini CLI中与上下文最接近的文档化命令是/stats model,显示token数量与配额。OpenCode没有查看用量或上下文的斜杠命令,但可以在shell中运行opencode stats查看跨会话的token用量与成本。

什么是斜杠命令(slash command)。 文中反复出现的 /compact、/model 这类以斜杠开头的指令,是终端式交互界面(TUI)中的一种约定:用户无需输入自然语言,而是键入预设的短指令来直接触发某个确定性操作。它最早由 Slack、Discord 等聊天工具普及,随后被 Claude Code 等 AI 编程 Agent 借用。斜杠命令与"提示词"的本质区别在于,它不走模型推理,而是由 CLI 自身解析后执行本地逻辑——例如切换会话状态、清空缓冲区、调用某个子命令。正因为绕过了模型,同名命令在不同产品中的实际行为完全由各自实现决定,这也是文章强调"同名不同命"的根源。多数工具支持别名(alias),并在输入 / 后弹出候选列表。

上下文压缩(compact / compress)为什么存在。 大语言模型的输入窗口是有限的,一次会话中累积的对话、文件内容和工具调用结果会不断占用 token。当接近上限时,若不做处理,要么报错,要么被迫截断历史。上下文压缩的做法是:把已有对话交给模型生成一份摘要,用摘要替换原始记录,从而在保留关键信息的同时释放窗口空间。这解释了为什么该命令与"查看上下文用量"(/context、/stats model)总是配套出现。压缩是有损的——细节会丢失,因此不少工具让它带有确认提示或子选项。Gemini CLI 把它命名为 /compress,其余三家叫 /compact,语义相同但键名不同。

启动参数同样混乱

同样的任务在启动参数层面差异更大。以下来自各工具的CLI参考:

任务Claude CodeCodex CLIGemini CLIOpenCode
指定模型--model opus-m <model>-m <model>-m provider/model
以plan模式启动--permission-mode plan无--approval-mode plan--agent plan
恢复上一个会话-ccodex resume --last-r latest-c
恢复指定会话-r <id或name>codex resume <id>-r <index或id>-s <id>

最容易输错的是会话恢复这一行。Codex把它做成了子命令,而其余三个都用flag:

claude -c              # Claude Code:最近的会话
codex resume --last    # Codex CLI:跳过选择器
gemini -r latest       # Gemini CLI:最近的会话
opencode -c            # OpenCode:继续上一个会话

Codex还有一个非交互式的codex review命令,可以对未提交的改动、某个基础分支或某次commit进行审查,适合放进脚本里。

同名不同命的命令

看起来一模一样的单元格,才是真正让人踩坑的地方。

/model与持久化。 Claude Code中,/model切换模型后会将其保存为新会话的默认值。在选择器中按s键可只对当前会话生效。Gemini CLI的/model set <name>接受一个可选的--persist标志——所以在运行之前,先想清楚这次切换是否应该跨会话保留。

/clear与/new的区别。 Claude Code的/clear开启新对话并清空上下文,但保留项目记忆,/new只是它的别名。在Codex中,/new在同一CLI会话中开启新聊天,而/clear还会清空终端。在Gemini CLI中,/clear重置对话和屏幕,但Ctrl+L只清屏、保留上下文。

/review的历史变迁。 Claude Code中它是/code-review的别名,检查当前diff中的正确性bug,支持--fix应用发现的问题。在v2.1.223之前,/review是一个独立命令,按编号审查GitHub pull request——所以网上较早的文章描述的是旧版本行为。Codex的/review则是对工作区进行审查。Gemini CLI没有内置的审查命令。

/stats的不同含义。 Claude Code把它当作/usage的别名,打开时停在Stats标签页。Gemini CLI的/stats显示会话统计,带有model和tools子命令。

成本信息。 这些命令中,只有Claude Code的/usage被文档明确说明会显示会话成本。Codex的/status显示"会话配置与token用量",/usage显示账户级token用量。Gemini的/stats model显示token与配额。三者都没有文档说明会给出具体的美元数字。

忙碌时的/plan。 Codex明确说明:"当Codex正在工作时,/plan暂时不可用。"必须等当前回合结束。

还有一个容易在初始化仓库时踩坑的点:/init在四个工具中都存在,但写入的文件各不相同。Claude Code写CLAUDE.md,Codex和OpenCode写AGENTS.md,Gemini CLI写GEMINI.md。

Gemini CLI的一个特殊背景

Gemini CLI的文档提到,对于未付费层和Google One用户,"Gemini CLI已于6月18日被Antigravity CLI取代"。该声明只点名这两类用户。如果你已经迁移到Antigravity,它的命令不在本文表格中。

Plan 模式与权限模型。 文中多处提到 plan,它实际是一套"先只读规划、再动手执行"的工作模式。在此模式下,Agent 可以读取文件、分析代码、提出方案,但在执行任何写入、编辑或 shell 命令前必须先获得用户确认。它与权限(permission / approval)体系紧密相关:Claude Code 通过 --permission-mode plan 控制,Gemini CLI 用 --approval-mode plan,OpenCode 则把它实现为一个独立的 Plan agent(用 Tab 切换)。理解这一层有助于看懂启动参数表:不同厂商把同一种安全约束分别表达成了"权限模式"与"专用 Agent"两种形态,这正是命令碎片化的深层原因。

一个统一入口的尝试

笔者开发了Hermes IDE,以下内容请据此斟酌。Hermes在真实终端中运行各Agent自己的界面,因此上表中的每条命令都仍按厂商文档的方式工作。Hermes没有重命名任何命令。

Hermes IDE 2.3.4改变的是每个会话上方的操作栏。根据发布说明,它"现在对每个Agent的工作方式都一致,包括Antigravity、OpenCode和Kiro:Model、Plan和Review始终在同一位置,并且可以固定你常用的项"。你在Codex会话上方点击Plan的位置,和点击Claude Code上方的位置完全相同,不用再猜这个Agent用哪个名字。

命令列表还包含你自己的命令和skills,每项带有简短描述,以及最近使用过的命令。自定义命令是命名问题最严重的地方,因为每个团队都在发明自己的名字,名字旁边有描述会很有帮助。发布说明还提到,命令列表会匹配每个Agent的当前版本。

同一版本还有两个安全细节:点击命令永远不会影响你正在输入的内容,且只在Agent等待时才会执行。开启新聊天、重置或退出登录都会先询问并说明会丢失什么——考虑到/clear在不同工具中行为差异之大,这一点很重要。

还有一个上下文仪表盘,显示对话的填充程度,接近满时提供Compact选项,你可以直接从操作栏压缩上下文,而不必记住这个Agent管它叫什么。

如果你全天只用一个Agent,它自己的命令菜单可能就够了——Claude Code的/过滤器在匹配别名方面做得不错。Hermes在macOS、Windows和Linux上免费提供,采用BSL 1.1源码可用许可,与Nous Research、Anthropic、OpenAI、Google及其他Agent厂商无关联。

保留表格,但先检查版本

命令会变。Claude Code的/review在v2.1.223改变了含义,Gemini CLI的用户群体在6月发生了变化。在信任任何速查表(包括本文)之前,先打开你已安装的Agent显示的命令列表,以它为准。在Claude Code中,输入/会列出你可用的命令,包括别名。

多Agent并行开发已经成为常态,但命令碎片化带来的认知负担真实存在。短期看,记住每个工具的差异是必要成本;长期看,IDE层面的统一抽象或许才是减少上下文切换损耗的方向。

AGENTS.md 与项目级约定文件。 文中 /init 会写入 CLAUDE.md、AGENTS.md 或 GEMINI.md,这类文件是 Agent 的"项目记忆"——用户在仓库根目录维护的自然语言说明,用来交代构建命令、代码规范、目录约定等,Agent 在每次会话启动时读取。AGENTS.md 是一个试图跨工具通用的开放约定,被 Codex 和 OpenCode 采用;CLAUDE.md 与 GEMINI.md 则是各家私有格式。它们通常与会话命令中的 /clear 行为相关联:清空对话上下文往往并不删除这类持久化记忆文件,这也是文章提醒"清除"含义有别的背景之一。

#Claude Code命令#Gemini CLI compress#AI编程Agent对比#Codex CLI#OpenCode命令#compact compress区别#AI编程工具
分享:

相关推荐