OkayTeacher
ZH English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

如何开启通知

此浏览器或网址无法使用通知。请使用支持通知的浏览器,通过安全连接访问SONUB。

如果通知被屏蔽,请在浏览器设置中允许通知。

  1. 打开地址栏旁的站点设置或浏览器的站点设置,将此网站的通知设为允许。
  2. 在设备设置中允许浏览器发送通知,并检查勿扰模式或专注模式。
  3. 返回SONUB,刷新页面,然后通过铃铛开启通知。

在iPhone或iPad上,将SONUB添加到主屏幕,从主屏幕打开后允许通知。

工具

工具大师

、、、、 和 agy 都运行同样的智能体循环,也有同样的习惯 — AGENTS.md、斜杠命令、计划模式、批准和 。把共同的部分学一次,哪个工具都能用。

一名学生拿着一个发光的技能卡带,卡带的线插进六个不同的终端机器人,六个机器人都以同样的方式亮起来
先认识几个词

工具、智能体和 Harness 是什么?

像 或 这样的只有一个,但从不同角度看,它有三个名字:、和 。先弄懂这三个词,这一页的其余内容就很好读了。

Claude CodeCodexHermes Agent 同一个程序,三个名字

  • 一个人捧着打开的工具箱,里面升起一个终端窗口,连着一个发着微光的小 AI 球

    工具(Tool)

    看作人使用的东西时

    工具就是拿来用的东西。Claude Code 和 Codex 是让人使用电脑和 的工具。这类工具也叫智能体编程工具(agentic coding tool)。

    You → Tool → Computer + AI

  • 一个正在干活的机器人:发光的模型球装在带着工具的 Harness 身体里,两部分一起沿着循环走

    智能体(Agent)

    看作模型加 Harness 时

    智能体是能自己一步步把事情做完的 AI。广义上说,智能体就是和 Harness 合在一起—— 把它写成 "Agent = Model + Harness"。所以当 模型在 Claude Code 里,两者合起来就是一个智能体。

    Agent = Model + Harness

  • 一个空的 Harness 框架,带着工具,胸口的插槽空着,旁边是一个等着插进去的模型球

    Harness

    看作模型以外的一切时

    广义上说,Harness 是 AI 模型以外的一切:任何把模型包起来、让它去干活的 AI 工具。Harness 负责读文件、执行命令、请求许可,并把结果交还给模型。所以 Claude Code、Codex 和 都是 Harness。

    Harness = Agent − Model

如今工具也被叫作 Harness 或智能体

起初人们只把这些程序叫作工具。现在,说到包在模型外面的那部分时叫 Harness,说到连同模型一起干活的整体时叫智能体。三个名字都对,指的是同一个程序。

详细了解 Agent = Model + Harness

本页的六个工具

核心思想

智能体 = 模型 + Harness

LangChain 用一句话这样说:

Agent = Model + Harness. If you're not the model, you're the harness.

LangChain — The Anatomy of an Agent Harness (新窗口)

所有不属于模型的、设置和,都属于 Harness。模型本身只会预测文字。Harness 把它变成能读文件、运行命令、在工作完成时停下来的智能体。

智能体

你在终端里对话的对象

模型

负责思考 — 读完收到的所有内容,预测接下来的文字或一次

Harness

其余的一切 — 组织输入、运行工具、让循环继续下去

  • 加载 AGENTS.md
  • 工具 — 文件、、网页、
  • 和批准
  • 沙箱
  • 循环
  • 和压缩
  • 会话和记忆
一个发光的大脑球,加上一个装满工具的机器人框架 — 笔记本、扳手、屏幕、盾牌、锁和循环箭头 — 等于一个胸口装着那颗球、正在用笔记本电脑工作的小机器人

六个 Harness,许多模型

Claude Code、Codex、、、 和 agy 都是 Harness。它们各自包裹不同的模型 — Claude、、、Grok、Kimi,OpenCode 则几乎可以用任何模型 — 但每个 Harness 做的事都一样。所以本页的习惯可以从一个工具带到下一个工具。

Harness — 三种视角
从提示词到报告

一步一步看智能体循环

跟着一个真实的请求走一遍 — “修好点了没反应的注册按钮,并加一个测试”。模型和 Harness 轮流工作,直到工作被确认完成。

谁来做 你 — 提出请求并批准 模型 — 思考并决定 Harness — 组织输入、运行工具、检查权限
智能体循环
  1. 你 你的提示词 你输入的请求
  2. Harness 组织输入 指令、工具、AGENTS.md、历史记录
  3. 模型 模型推理 用工具调用或文字回答
  4. Harness 运行工具 权限检查、沙箱、批准
  5. Harness 加入结果 带着新的输出回到模型
  6. 模型 最终报告 没有工具调用的文字结束这一轮

箭头按顺序走。粗箭头就是循环 — 每个工具结果都会回到模型。虚线箭头只在模型只用文字回答、没有工具调用时才走。

  1. 第 1 步 · 你

    提示词到达

    你输入请求并按 Enter。Harness 把你的话包装成一条用户消息 — 放在输入的最后。

    产出
    {"type": "message", "role": "user",
     "content": [{"type": "input_text",
       "text": "Fix the signup button that does nothing and add a test"}]}
  2. 第 2 步 · Harness

    Harness 组织输入

    在模型看到你的话之前,Harness 先收集需要的东西 — 它自己的指令、模型可以的工具列表、关于沙箱和何时请求批准的说明、你的 AGENTS.md 文件,以及工作文件夹和 Shell。之后的每一轮,到目前为止的整段对话也会放进去。

    产出
    instructions  base instructions for the model
    tools         shell · update_plan · web_search · mcp__…
    input
      developer   <permissions instructions> sandbox · approval
      user        AGENTS.md  (project root → cwd)
      user        <environment_context> cwd · shell
      user        "Fix the signup button …"
  3. 第 3 步 · 模型

    模型思考

    Harness 把输入发给模型。模型只会用两种方式之一回答 — 给你的一条消息,或者一次工具调用,也就是一个小小的 请求,比如“运行这条 Shell 命令”。模型自己无法碰你的电脑。

    产出
    {"type": "function_call", "name": "shell",
     "arguments": "{\"command\":\"rg -n signup src\"}",
     "call_id": "call_1"}
  4. 第 4 步 · 模型 Harness

    收集上下文

    要修按钮,模型得先找到它,所以它会请求读取类的工具 — 用 rg 搜索代码、列出文件夹、读取文件。Claude Code 把这个阶段叫作 “gather ”(收集上下文)。

    产出
    $ rg -n signup src
    src/components/SignupButton.jsx:8:  <button type="button">Sign up</button>
    src/api/auth.js:21:export async function signup(email, password) {
  5. 第 5 步 · Harness

    Harness 运行工具

    Harness 检查权限。允许,而且在沙箱里?那就运行。还没有允许?那就先问你。然后它把这次调用和输出加进对话,再去问模型。这一来一回就是循环,一个请求可能要转几十圈。

    产出
    {"type": "function_call_output",
     "call_id": "call_1",
     "output": "src/components/SignupButton.jsx:8: …"}
  6. 第 6 步 · 模型 Harness

    修改文件

    理解代码之后,模型会请求编辑 — 用新文字替换文件的一部分。Harness 写入修改,你会以 的形式看到。Claude Code 在每次编辑前都会保存检查点,方便你。

    产出
    --- a/src/components/SignupButton.jsx
    +++ b/src/components/SignupButton.jsx
    -  <button type="button">Sign up</button>
    +  <button type="button" onClick={() => signup(email, password)}>
    +    Sign up
    +  </button>
  7. 第 7 步 · 模型 Harness

    运行命令

    接下来,模型请求在 Shell 里运行测试或构建。会改动文件夹以外东西的命令,正是批准和沙箱起作用的地方。

    产出
    $ npm test -- SignupButton
  8. 第 8 步 · 模型

    验证

    模型读取测试日志。如果测试失败,它就回到读代码和编辑(第 4 步和第 6 步),再跑一次测试 — 直到测试通过,或者它卡住了,停下来问你。

    产出
    FAIL  SignupButton.test.jsx
      ✕ calls signup when clicked
    … fix → run again …
    PASS  SignupButton.test.jsx
      ✓ calls signup when clicked
  9. 第 9 步 · 模型 Harness

    最终报告

    当模型只用文字回答、没有工具调用时,这一轮就结束了。Harness 显示总结,把控制权交还给你。好的报告会说明改了什么、测试结果,以及没有检查的地方。

    产出
    {"type": "message", "role": "assistant",
     "content": [{"type": "output_text",
       "text": "Connected the button to signup() and added SignupButton.test.jsx. npm test passes."}]}

对话每一轮都在变长

每一轮都会加入工具调用和它的结果,然后把整个列表重新发送一次。 — 模型一次最多能读的量 — 会慢慢被填满。

  1. 新的调用和结果 指令、工具和 AGENTS.md 第 1 轮
  2. 新的调用和结果 之前的调用和结果 指令、工具和 AGENTS.md 第 2 轮
  3. 新的调用和结果 之前的调用和结果 之前的调用和结果 指令、工具和 AGENTS.md 第 3 轮
  4. 总结 指令、工具和 AGENTS.md 压缩之后
  • 指令、工具和 AGENTS.md
  • 之前的调用和结果
  • 新的调用和结果
  • 总结
在“工具上下文”标签页了解更多 — 什么占满了上下文,以及如何压缩
  • 提示词缓存

    在 Codex 中,旧的输入正好是新输入的开头部分(前缀),所以可以重用之前的计算。在对话中途更换工具、模型、沙箱、批准模式或工作文件夹,会破坏这个前缀,让下一个请求变慢。

  • 压缩

    对话太长时,Harness 会用一段更短的总结替换它,然后继续。Codex 超过上限后会自动压缩。Claude Code 也会自动压缩,你还可以带着重点运行 /compact。对话早期的规则可能会丢失 — 长期要遵守的规则请放在 AGENTS.md 里。

  • 批准和沙箱归 Harness 管

    模型只负责请求。命令是运行、等你批准,还是被拦下,由 Harness 决定。在 Codex 中,沙箱只管它自己的 Shell 工具 — MCP 工具必须自己守住限制。

Codex 和 Claude Code — 同样的循环,不同的细节

Codex 和 Claude Code 如何描述这个循环
主题CodexClaude Code
名称 智能体循环(agent loop) — 和工具调用不断重复,直到一条助手消息结束这一轮。 来源 (新窗口) 循环(agentic loop) — 收集上下文、采取行动、验证结果,这几个阶段会相互交融。 来源 (新窗口)
对话 每个请求都会重新发送全部历史,所以每个请求都是独立的。 来源 (新窗口) 每条消息、每次工具使用和结果都保存在 ~/.claude/projects 下的 文件里,所以可以继续或分叉。 来源 (新窗口)
压缩 超过 auto_compact_limit 后,通过一个专门的压缩自动进行。 来源 (新窗口) 接近上限时自动进行。带着重点运行 /compact,可以留下你需要的内容。 来源 (新窗口)
安全 把沙箱和批准规则告诉模型,并在 Shell 工具上强制执行。 来源 (新窗口) 权限模式(Shift+Tab),加上可以撤销文件编辑的检查点。 来源 (新窗口)

Codex 的细节来自 OpenAI 的文章,Claude Code 的细节来自 Anthropic 的文档。其他工具运行同样的循环,但没有公开同样详细的说明。

比较

每个工具支持什么

每一格都链接到我们核对的地方 — 官方页面,或者 2026-10-26 时该工具自己的 输出。

图例 支持 不支持 支持,名称不同 未确认
六个编程智能体 CLI 的共同功能
功能 Claude Code Codex CLI OpenCode Grok Build Kimi Code Antigravity CLI
读取 AGENTS.md 支持,名称不同 CLAUDE.md 只有没有 CLAUDE.md 时才读 AGENTS.md,或者在 CLAUDE.md 里加上 @AGENTS.md 支持 AGENTS.md 支持 AGENTS.md 支持 AGENTS.md 支持 AGENTS.md 支持 AGENTS.md 也读取 GEMINI.md
/goal — 长期目标 支持 /goal 支持 /goal 不支持 没有内置 — 已有功能请求在讨论中 支持 /goal 支持 /goal 支持 /goal
斜杠命令 支持 /help 支持 /help 支持 /help 支持 /help 支持 /help 支持 /help
计划模式 支持 /plan 支持 /plan 支持,名称不同 Plan agent 用 Tab 切换 支持 /plan 支持 /plan 支持 /plan
批准模式 支持 --permission-mode 核对命令 claude --help 支持 /permissions 支持 permission 支持 --permission-mode 核对命令 grok --help 支持 --yolo · --auto 核对命令 kimi --help 支持 --mode 核对命令 agy --help
继续会话 支持 claude -c 核对命令 claude --help 支持 codex resume 核对命令 codex --help 支持 opencode -c 核对命令 opencode --help 支持 grok -c 核对命令 grok --help 支持 kimi -c 核对命令 kimi --help 支持 agy -c 核对命令 agy --help
不用聊天直接运行(headless) 支持 claude -p 核对命令 claude --help 支持 codex exec 核对命令 codex --help 支持 opencode run 核对命令 opencode --help 支持 grok -p 核对命令 grok --help 支持 kimi -p 核对命令 kimi --help 支持 agy -p 核对命令 agy --help
MCP 支持 claude mcp 核对命令 claude --help 支持 codex mcp 核对命令 codex --help 支持 opencode mcp 核对命令 opencode --help 支持 grok mcp 核对命令 grok --help 支持 /mcp 支持 agy mcp 核对命令 agy --help
技能(SKILL.md) 支持 .claude/skills 支持 .agents/skills 支持 .agents/skills 支持 .grok/skills 支持 .agents/skills 支持 .agents/skills
子智能体 支持 .claude/agents 支持 .codex/agents 支持 .opencode/agents 支持 .grok/agents 支持 .kimi-code/agents 支持 .agents/agents
切换模型 支持 /model 支持 /model 支持,名称不同 /models 支持 /model 支持 /model 支持 /model
压缩上下文 支持 /compact 支持 /compact 支持 /compact 支持 /compact 支持 /compact 支持 /compact 核对命令 agy changelog
用 /init 生成指令文件 支持,名称不同 /init → CLAUDE.md 支持 /init → AGENTS.md 支持 /init → AGENTS.md 未确认 支持 /init → AGENTS.md 未确认

命令经常变化。“未确认”表示我们在官方页面或 --help 里没有找到,并不代表没有这个功能。

一个文件,所有工具

AGENTS.md — 每个请求都需要的规则

三个不同的机器人俯身看着同一本打开的笔记本,每个都带着一个对勾点头

AGENTS.md 是项目里的一个普通 文件。智能体会在你说第一句话之前先读它,所以你不必一遍遍重复规则。

里面写什么

  • 如何运行项目
  • 如何测试 — 以及测试必须通过
  • 代码风格
  • 不能碰的东西
  • 如何报告
一个简短的例子
# AGENTS.md

## 运行
- 先 npm install,再 npm run dev

## 测试
- 完成前运行 npm test。所有测试都必须通过。

## 风格
- React 函数组件,缩进 2 个空格。

## 不要碰
- .env、数据库文件夹和 package-lock.json

## 报告
- 列出改动的文件、测试结果,以及你没有检查的地方。

每个工具在哪里读取

  • Claude Code

    它自己的文件是 CLAUDE.md。只有当所在文件夹及上层文件夹都没有 CLAUDE.md 时,才会读 AGENTS.md。想两个都用,就在 CLAUDE.md 里写上 @AGENTS.md。

    来源 (新窗口)
  • Codex CLI

    从一直到当前文件夹,按顺序拼接,离得越近的文件越优先。文件是 ~/.codex/AGENTS.md。默认上限 32 。

    来源 (新窗口)
  • OpenCode

    项目里的 AGENTS.md 和 ~/.config/opencode/AGENTS.md。没有 AGENTS.md 时,会改读 CLAUDE.md。

    来源 (新窗口)
  • Grok Build

    从根到你工作的文件夹,每一层文件夹里的 AGENTS.md(以及 CLAUDE.md)。越深的文件越优先。

    来源 (新窗口)
  • Kimi Code

    项目里的 AGENTS.md 或 .kimi-code/AGENTS.md,再加上对所有项目生效的 ~/.kimi-code/AGENTS.md。

    来源 (新窗口)
  • Antigravity CLI

    任何文件夹里的 AGENTS.md 和 GEMINI.md,以及 .agents/rules。全局规则放在 ~/.gemini。找到的所有规则会合并在一起。

    来源 (新窗口)
CLAUDE.md 和 AGENTS.md 一起用
长时间的工作

/goal — 一直做到完成

一个小机器人沿着长长的石阶向顶端的旗子攀登,经过一块块打了对勾的石头,旁边有一个时钟和一块满电的电池

普通请求在模型不再调用工具的那一刻就结束了。 则设定一条终点线 — 智能体会一轮接一轮地继续工作,直到条件满足。

/goal 所有测试都通过,并且注册按钮会调用 signup()。不要改动数据库。

写一个可以检验的目标

  • 让它可以测试 — 写“tests/signup 里的所有测试都通过”,而不是“让它更好”。
  • 设定一个上限,比如预算或时间,并在开始前先提交(commit)。
  • 时不时看一眼。长期目标也可能慢慢跑偏。
  • 支持Claude Code

    设定一个完成条件。Claude 会一直工作,直到条件满足、判断无法完成,或因错误停下。也可以和 -p 一起用。

    来源 (新窗口)
  • 支持Codex CLI

    在较大的任务运行期间,Codex 持续跟踪的目标(goals 功能,默认开启)。

    来源 (新窗口)
  • 不支持OpenCode

    目前还没有内置的 /goal — 可以改用自定义命令。

    来源 (新窗口)
  • 支持Grok Build

    带一个目标和可选 --budget 的 /goal,另外还有 status、pause、resume 和 clear。

    来源 (新窗口)
  • 支持Kimi Code

    启动一个自主目标,还有 status、pause、resume、cancel 等。

    来源 (新窗口)
  • 支持Antigravity CLI

    当智能体想停下时, 会拦住它,要它检查自己的工作并继续。

    来源 (新窗口)
AI 课程 — 目标和循环
提示词工程

用 5W1H 写请求

中间是一张对话气泡卡片,连着六个圆形徽章 — 一个人、一个盒子、一个时钟、一个地图图钉、一个灯泡和一把扳手

大多数糟糕的结果,都来自漏掉了智能体猜不到的信息的请求。六个问题 — 谁、什么、何时、何地、为什么、怎么做 — 能补上其中大多数漏洞。

不好的提示词

“按钮坏了。修一下。”

哪个按钮?怎么坏的?怎么知道修好了?智能体只能去猜,还可能改错文件。

好的提示词 — 5W1H

  1. 谁 想在我们首页注册的新访客。
  2. 什么 点“注册”按钮没有任何反应。让它调用 signup(),并加一个测试。
  3. 何时 从昨天那次以后,每次点击都这样。
  4. 何地 首页的 src/components/SignupButton.jsx。不要碰文件。
  5. 为什么 大家注册不了,我们正在流失新会员。
  6. 怎么做 找出点击没反应的原因,用最小的改动修好,运行 test,然后告诉我你改了什么。

5W1H 不能保证结果一定好,但能覆盖大多数情况。如果智能体还要问你问题,缺的那一块通常就是这六个之一。

AI 课程 — 提示词工程
一起用更好

AGENTS.md + 5W1H 提示词

把工作分开。AGENTS.md 放每个请求都需要的内容,只放这一次请求需要的内容。

AGENTS.md — 每一次

如何测试、代码风格、不能碰的东西、如何报告

提示词 — 只有这一次

这一个请求的谁、什么、何时、何地、为什么和怎么做

一本厚厚的规则书和一张小便利贴滑进一个开心的机器人里,它开始在笔记本电脑上打字 智能体两个都会读
  • 提示词变短

    不用再在每条消息里写“跑一下测试,别碰数据库”。

  • 每个工具都是同样的规则

    从 Claude Code 换到 Codex 或 Kimi,规则也会跟着过去。

  • 和团队共享

    这个文件放在 里,所以每个人、每个智能体都遵守同样的规则。

  • 只改一次

    智能体重复犯同一个错时,不用再解释一遍,在 AGENTS.md 里加一行就好。

速查表

通用命令

一张像键盘的卡片上有五个发光的键,用线连着三台不同的小型终端机器

同样的操作几乎在每个工具里都管用。例外写在比较表里。

  • 在项目文件夹里启动

    cd my-project claude · codex · opencode · grok · kimi · agy
  • 生成指令文件

    /init Claude Code 会写 CLAUDE.md。Grok 和 agy 未确认。
  • 编辑前先做计划

    /plan OpenCode — 按 Tab 切换到 Plan 智能体。
  • 切换模型

    /model OpenCode — /models。
  • 腾出上下文

    /compact
  • 设定长期目标

    /goal OpenCode 没有。
  • 继续上一次会话

    claude -c · opencode -c · grok -c · kimi -c · agy -c codex resume --last
  • 不用聊天运行一次

    claude -p · grok -p · kimi -p · agy -p codex exec · opencode run
  • 管理 MCP 服务器

    claude mcp · codex mcp · opencode mcp · grok mcp · agy mcp Kimi — 在聊天里用 /mcp。

在 SONUB 学更多

官方来源

于 2026-10-26 对照官方文档和已安装的 CLI(--help)核对。命令会变化,请同时阅读官方文档。

各工具的文档