配置速查表
维度 | Claude Code | Codex | Opencode |
|---|---|---|---|
项目配置文件 | .claude/CLAUDE.md | .codex/AGENTS.md | AGENTS.md(项目根) |
Skill 目录(项目级) | .claude/skills/ | .codex/skills/ | skills/ |
Skill 目录(用户级) | ~/.claude/skills/ | ~/.codex/skills/ | ~/.opencode/skills/ |
状态文件 | STATE.md(项目根) | STATE.md | STATE.md |
循环配置 | LOOP.md | LOOP.md | LOOP.md |
调度命令 | /loop 1d/ | Automations 页面 | systemd / cron + |
持续目标 | /goal | /goal | opencode run "Goal: ..." |
子 Agent 目录 | .claude/agents/ | .codex/agents/*.toml | opencode agent <name> |
连接器 | MCP servers | MCP Connectors | opencode.json+ MCP |
Token 预算 | loop-budget.md | loop-budget.md | loop-budget.md |
运行日志 | loop-run-log.md | loop-run-log.md | loop-run-log.md |
脚手架 | /loop 逐步搭建 | 手动 | AGENTS.md+ |
健康检查 | loop-audit | loop-audit | loop-audit |
重要提醒:Skill 文件跨工具兼容。同一份 SKILL.md 可以同时放在.claude/skills/、.codex/skills/和skills/下,三个工具都能用。格式是公开标准(agentskills.io)。
一、Claude Code 配置
1. 配置文件放哪里
项目根目录/
├── .claude/
│ ├── CLAUDE.md # 项目规则(循环宪法)
│ ├── skills/
│ │ ├── loop-triage/
│ │ │ └── SKILL.md # 分诊技能
│ │ ├── minimal-fix/
│ │ │ └── SKILL.md # 最小修复技能
│ │ └── loop-verifier/
│ │ └── SKILL.md # 验证技能
│ └── agents/
│ ├── implementer.md # 实现者 Agent
│ └── reviewer.md # 审查者 Agent
├── STATE.md # 循环记忆
└── LOOP.md # 循环配置
2. CLAUDE.md 配置模板
markdown |
# CLAUDE.md — 循环宪法
## 项目规则
- 语言: TypeScript / Python
- 测试: `npm test`, `pytest`
- 构建: `npm run build`
## 循环模式
- 初始 L1 报告模式,不自动改代码
- 每次读 STATE.md 再开始工作
- 每次跑完写入 STATE.md
## 安全边界
- 不自动推送和合并
- 不碰 .env、auth/、secrets/、payments/
- 改代码必须用 git worktree 隔离
## 验证
- 任何代码改动必须由独立的 Verifier 检查
- 验证必须跑真实测试,不能只看代码
3. 调度命令
bash |
# L1 — 每日分诊(报告模式)
/loop 1d 跑 $loop-triage。读 STATE.md。产出追加到 STATE.md。不改代码。
# L2 — 分诊 + 自动修小问题
/loop 1d 跑 $loop-triage。高优先级小修小补:开工作树 → $minimal-fix → $loop-verifier → 验证通过开 PR。更新 STATE.md。
# /goal — 持续到条件满足
/goal "test/auth 下全部测试通过,lint 干净"
# /schedule — 定时调度(Claude Code Web 界面)
/schedule "每天早上 9 点跑 daily-triage,发状态报告给我"
4. 特色功能
- 独立的 /goal 判断模型
:默认用 Haiku 判断"是否完成",写代码的模型不给自己打分
- Hooks 集成
:在
.claude/hooks.json配置 GitHub Actions 回调 - MCP 生态最完整
:GitHub / Linear / Slack / Jira / Notion 都有原生连接器
二、Codex 配置
1. 配置文件放哪里
项目根目录/
├── .codex/
│ ├── AGENTS.md # 项目规则
│ └── skills/
│ ├── loop-triage/
│ │ └── SKILL.md
│ ├── minimal-fix/
│ │ └── SKILL.md
│ └── loop-verifier/
│ └── SKILL.md
├── STATE.md
└── LOOP.md
2. AGENTS.md 配置模板
markdown |
# AGENTS.md — 循环配置
## 循环规则
- L1 报告模式,前两周不自动修复
- 先读 STATE.md,再决定做什么
- 每次运行结束更新 STATE.md
## 安全
- 不经批准不推送
- 禁止修改 .env、credentials/、secrets/
- 每次代码实验用 git worktree 隔离
## 预算
- 每日 Token 上限 100k
- 超过 80% 自动切报告模式
- 超过 100% 跳过本次运行
3. 调度方式
Codex 的调度在网页界面的 Automations 标签页配置,不是命令行:
打开 codex.ai/app
进入 Automations 标签页
选择项目 → 写 Prompt → 选频率
输出发送到 Triage Inbox 或写回 STATE.md
Automation Prompt 示例(L1 分诊):
markdown |
跑 loop-triage Skill。读 STATE.md。扫描最近 24 小时 CI 失败和 Open Issue。
输出结构化的优先级报告,追加到项目根目录的 STATE.md。
不改代码,只报告。
Automation Prompt 示例(L2 分诊+修复):
markdown |
跑 loop-triage Skill。高优先级项中,判断为小修小补的:
开工作树 → 跑 minimal-fix Skill → 跑 loop-verifier Skill → 验证通过的开 PR。
中高风险项标记为"需人工审查"。
更新 STATE.md。不改不相关的代码。
4. 其他命令
bash |
# /goal — Codex 也支持
/goal "计费模块迁移完成,旧 API 零调用"
# exec — 非交互模式跑脚本
codex exec "跑 loop-triage Skill,只报告,不改代码"
5. 特色功能
- Automations 从网页配置
,不需要记命令
- Triage Inbox
:Codex 自带的分类收件箱,适合 L1 报告模式
- 子 Agent TOML 配置
:在
.codex/agents/下用 TOML 文件定义 Agent
三、Opencode 配置
1. 配置文件放哪里
Opencode 不像 Claude Code 和 Codex 有固定的隐藏目录约定。它通过项目根目录的AGENTS.md加载规则,Skill 放在skills/目录下:
项目根目录/
├── AGENTS.md # 项目规则
├── skills/
│ ├── loop-triage/
│ │ └── SKILL.md
│ ├── minimal-fix/
│ │ └── SKILL.md
│ └── loop-verifier/
│ └── SKILL.md
├── STATE.md
└── LOOP.md
2. AGENTS.md 配置模板
markdown |
# AGENTS.md — Opencode 循环配置
## 循环模式
- L1 报告模式,不改代码
- 每次先读 STATE.md 再开始工作
- 每次跑完写入 STATE.md
## 安全
- 不自动推送和合并
- 不修改 .env、secrets/、payments/
- 改代码用 git worktree 隔离
## 验证
- 所有代码改动必须由独立 Verifier 检查
- Verifier 必须跑真实测试
3. 调度方式
Opencode 本身没有内置调度器。调度依赖外部 cron 或 systemd timer:
bash |
# /etc/cron.d/opencode-daily-triage
# 每个工作日早 9 点跑分诊
0 9 * * 1-5 cd /path/to/project && opencode run "跑 $loop-triage,读 STATE.md,只报告不改代码" --timeout 300
# 用 opencode run 跑目标和循环
# L1 — 一次分诊
opencode run "跑 $loop-triage。读 STATE.md。产出追加到 STATE.md。"
# /goal 模式
opencode run "Goal: test/auth 全部测试通过。Verifier 确认后停。"
# L2 — 分诊+修复(手动触发)
opencode run "跑 $loop-triage。高优先级小修小补:开 worktree → $minimal-fix → $loop-verifier → 通过开 PR。更新 STATE.md。"
4. 特色功能
- AGENTS.md 最灵活
:项目根目录直接放,不限制目录名称
- Skill 目录结构简洁
:
skills/<name>/SKILL.md,没有.opencode/前缀 - 外部调度自由度高
:可以用 systemd、cron、GitHub Actions 任意调度方式
- export 功能
:
opencode export <sessionID>导出完整会话,适合审计和调试
5. 适用场景
Opencode 适合需要灵活调度方式的场景——你已经有自己的一套自动化基础设施(cron/systemd/GitHub Actions),不需要工具内置调度。AGENTS.md 放在项目根目录,Skill 放在skills/,没有藏起来的配置,对团队协作更友好。
四、跨工具迁移指南
你不需要锁定一个工具。同一个循环设计可以跨工具跑。
Skill 文件直接复制
bash |
# 从 Claude Code 复制到 Opencode
cp -r .claude/skills/loop-triage skills/loop-triage
# 从 Claude Code 复制到 Codex
cp -r .claude/skills/loop-triage .codex/skills/loop-triage
# 一键同步(如果装了 loop-sync)
npx @cobusgreyling/loop-sync .
脚手架生成(推荐方式)
bash |
# 直接在一个目录下生成 Claude Code 的循环
npx @cobusgreyling/loop-init . --pattern daily-triage --tool claude
# 生成 Codex 的循环
npx @cobusgreyling/loop-init . --pattern daily-triage --tool codex
# 生成 Opencode 的循环
npx @cobusgreyling/loop-init . --pattern daily-triage --tool opencode
跨工具迁移对照
要做的事 | Claude Code | Codex | Opencode |
|---|---|---|---|
启动每日循环 | /loop 1d <prompt> | Automations 页面配置 | cron + |
持续目标 | /goal <条件> | /goal <条件> | opencode run "Goal: ..." |
调用 Skill | $skill-name | $skill-name | 在 prompt 中引用 |
定义子 Agent | .claude/agents/*.md | .codex/agents/*.toml | opencode agent <name> |
设置 MCP | .claude/settings.json | 应用设置 | opencode.json |
Token 预算 | loop-budget.md | loop-budget.md | loop-budget.md |
运行日志 | loop-run-log.md | loop-run-log.md | loop-run-log.md |
五、三份可复用的 Skill 文件
无论用哪个工具,这三份 SKILL.md 都是一模一样的。放在对应的 skills/ 目录下即可。
loop-triage(分诊)
markdown |
---
name: loop-triage
description: >
分诊最近 24 小时 CI 失败、Issue 和提交。
产出结构化优先级报告供循环消费。
写入 STATE.md。
user_invocable: true
---
# Loop Triage Skill
你是分诊 Agent。产出优先级列表。
## 输入(循环提供)
- 最近 24h CI/测试失败
- 负责人名下的 Open Issue
- 最近 24-48h main 分支提交
- 当前 STATE.md
## 输出格式
### 1. 高优先级(立即处理)
- 一句话描述
- 为什么重要
- 建议循环下一步
### 2. 观察项
### 3. 噪音/忽略
### 4. 状态更新
minimal-fix(最小修复)
markdown |
---
name: minimal-fix
description: >
对指定问题产出最小代码改动。
不改无关代码,不重构。
user_invocable: true
---
# Minimal Fix Skill
只修一个特定问题,最小 diff。
## 流程
1. 确认根因
2. 只改必须改的
3. 跑相关测试
4. 输出改了什么、为什么、跑了什么
## 规则
- 一个问题一次调用
- 不碰禁用路径列表
- 不用工作树时要求隔离
loop-verifier(独立验证)
markdown |
---
name: loop-verifier
description: >
独立验证循环产出的代码改动。
找理由拒绝,不是找理由接受。
跑真实测试。
user_invocable: true
---
# Loop Verifier Skill
默认立场:拒绝。除非证据充分。
## 检查清单
1. 范围:只改了相关文件
2. 意图:确实解决了声明问题
3. 测试:跑了测试,报告结果
4. 不作弊:没有跳过测试
5. 风险:中高风险建议人工审查
六、快速起步对照表
步骤 | Claude Code | Codex | Opencode |
|---|---|---|---|
| 第 1 步 | 写 | 写 | 写 |
| 第 2 步 | 把 3 份 SKILL.md 放 | 把 3 份 SKILL.md 放 | 把 3 份 SKILL.md 放 |
| 第 3 步 | 创建 | 创建 | 创建 |
| 第 4 步 | /loop 1d 跑 $loop-triage,只报告 | Automations: 分诊 Prompt,每天一次 | cron + |
| 第 5 步 | 读一周 STATE.md,调优 | 读一周收件箱,调优 | 读一周 STATE.md,调优 |
| 第 6 步 | 加 $minimal-fix + $loop-verifier | 升级 Automation 为 L2 | cron 命令加 L2 参数 |
| 健康检查 | npx @cobusgreyling/loop-audit . | 同上 | 同上 |