AI 引导与子任务
AI 编程工具装好了不等于好用——怎么"指挥"它才是关键。本文记录 Claude Code 和 Codex 的引导技巧:项目规范注入、计划模式、子任务拆分、自定义命令。
相关文档:Claude Code (opens new window) | Codex (opens new window)
# 项目规范注入
不管是 Claude Code 还是 Codex,核心思路都一样:把项目规则写进文件,让 AI 每次启动自动读取。
# Claude Code — CLAUDE.md
在项目根目录放一个 CLAUDE.md,Claude Code 启动时自动加载。
# CLAUDE.md
## 项目概述
VuePress 1.9.5 + vuepress-theme-vdoing 构建的知识库
## 开发命令
- npm run dev # 开发服务器
- npm run build # 构建
## 代码规范
- 回复使用中文
- frontmatter 包含 title、date、permalink、categories
- 知识库文章放 01.知识库/,随笔放 _posts/随笔/
- 目录用数字前缀排序(01.、02.)
支持多级 CLAUDE.md:
项目根/
├── CLAUDE.md # 全局规范
├── frontend/
│ └── CLAUDE.md # 前端特定规范
└── backend/
└── CLAUDE.md # 后端特定规范
Claude Code 在 frontend/ 目录工作时,会同时加载根目录和 frontend/ 的 CLAUDE.md。
还有用户级全局配置 ~/.claude/CLAUDE.md,所有项目生效:
# ~/.claude/CLAUDE.md
- 始终用中文回复
- 代码风格精简,不要写多余注释
- 修改前先检索相关代码
# Codex — AGENTS.md
Codex 用 AGENTS.md,作用和 CLAUDE.md 一样:
# AGENTS.md
## 项目概述
Spring Boot 3.2 + MyBatis Plus 后端项目
## 规范
- 使用 Java 17
- 数据库迁移用 Flyway
- API 返回统一用 Result<T> 包装
Codex 也会读取项目根目录的 AGENTS.md,支持多级目录。
# Claude Code 引导技巧
# 权限模式 — 控制AI的自主程度
Claude Code 有四种权限模式,交互界面中按 Shift+Tab 循环切换:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Plan | 只读规划,不改代码不执行命令 | 大重构前先看方案、不确定影响范围 |
| Manual(默认) | 每次写操作和命令执行都要确认 | 日常开发,需要把控每一步 |
| Auto-Accept Edits | 自动接受文件编辑,执行命令仍需确认 | 改动多但信任 AI 的编辑能力 |
YOLO(--dangerously-skip-permissions) | 全自动,不弹任何确认 | 跑测试、CI 等可信任务 |
# 启动时指定模式
claude --permission-mode plan # 规划模式
claude --permission-mode auto-edit # 自动接受编辑
claude --dangerously-skip-permissions # 全自动(YOLO)
# 交互界面中切换
# 按 Shift+Tab 在四种模式间循环
实际使用建议:
- 新项目不熟代码 → 先 Plan 看方案,确认后切 Manual 执行
- 日常迭代 → Manual,关键步骤过一眼
- 大量重复改动(重命名、批量替换)→ Auto-Accept Edits
- CI/CD 流水线 → YOLO,反正在沙箱里跑
# Subagents — 开子任务
Claude Code 内置 Agent 机制,可以让主会话派生子任务并行处理。
交互式使用:直接在对话中让 Claude 开子任务:
帮我检查 src/ 下所有文件的 lint 问题,开子任务并行处理
命令行使用:
# 指定 agent 类型
claude --agent Explore "搜索所有调用 deprecated API 的地方"
# 动态定义子 agent
claude --agents '{"reviewer":{"description":"代码审查","prompt":"你是代码审查员,检查代码质量和安全性"}}'
内置 Agent 类型:
| Agent | 用途 |
|---|---|
Explore | 只读搜索,快速定位代码位置 |
Plan | 设计实现方案,不执行修改 |
general-purpose | 通用多步骤任务 |
claude | 默认 catch-all |
# 自定义 Slash Command
把常用引导逻辑封装成命令,放在 .claude/commands/ 目录,天然是项目级的——每个项目的命令互不影响:
<!-- .claude/commands/review.md -->
审查当前 git diff 的代码变更,关注:
1. 潜在的 bug
2. 性能问题
3. 安全漏洞
4. 代码风格
输出格式:按严重程度排序,给出具体修改建议。
使用:
# 在交互界面输入
/review
# 带参数
/review --fix
用户级全局命令放 ~/.claude/commands/,所有项目通用。项目级和用户级同名时,项目级优先。
# 项目级 MCP 与 Skill 配置
每个项目的 MCP Server 和 Skill 需求不同——Java 项目要数据库 MCP,前端项目要浏览器 MCP。Claude Code 支持三个层级的配置。
# 配置层级(优先级从高到低)
| 层级 | 路径 | 作用域 |
|---|---|---|
| 项目本地 | .claude/settings.local.json | 当前项目,不提交 git |
| 项目共享 | .claude/settings.json | 当前项目,提交 git 共享给团队 |
| 用户全局 | ~/.claude/settings.json | 所有项目 |
# 项目级 MCP 配置
# 添加项目级 MCP(写入 .claude/settings.json)
claude mcp add --scope project mysql npx -y @benborla29/mcp-server-mysql
# 添加用户级 MCP(所有项目生效)
claude mcp add --scope user github npx -y @modelcontextprotocol/server-github
也可以直接编辑 .claude/settings.json:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "xxx"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
实际项目配置示例:
项目 A(Java 后端)/.claude/settings.json:
MCP: mysql、github、context7
项目 B(前端)/.claude/settings.json:
MCP: puppeteer、filesystem、context7
项目 C(Python 脚本)/.claude/settings.json:
MCP: sqlite、sequential-thinking
每个项目进去自动加载对应的 MCP,互不干扰。
# 项目级 Skill(自定义命令)
Skill 就是 .claude/commands/ 下的 Markdown 文件,项目级和用户级分开:
项目根/
├── .claude/
│ └── commands/
│ ├── deploy.md # 项目专属:部署流程
│ ├── db-migrate.md # 项目专属:数据库迁移
│ └── test-api.md # 项目专属:API 测试
~/.claude/
└── commands/
├── review.md # 通用:代码审查
└── submit.md # 通用:提交规范
项目级 Skill 示例(.claude/commands/deploy.md):
执行部署流程:
1. 运行 npm run build
2. 执行 deploy.sh 部署到测试环境
3. 验证健康检查接口 /api/health
4. 输出部署结果
# 敏感信息隔离
MCP 的密钥、Token 不要写进 .claude/settings.json(会提交 git),放在 .claude/settings.local.json:
// .claude/settings.local.json(加进 .gitignore)
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_PASSWORD": "真实的数据库密码"
}
}
}
}
# Hooks — 自动化触发
Hooks 可以在特定事件发生时自动执行脚本,实现自动化引导:
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
],
"Stop": [
{
"command": "npm run lint"
}
]
}
}
PostToolUse— 每次 AI 编辑文件后自动格式化Stop— AI 完成任务后自动跑 lint
# 追加系统提示
临时调整 AI 行为,不改 CLAUDE.md:
# 追加到默认提示后面
claude --append-system-prompt "始终使用 TypeScript,不要用 any"
# 完全替换系统提示
claude --system-prompt "你是一个 Python 专家,只回答 Python 相关问题"
# 动态引导 — 执行中补充信息
AI 在执行任务时不需要停下来等你说完——你可以随时插入补充信息,不用打断它当前的工作。
直接输入:AI 正在跑的时候,直接打字回车,消息会在当前轮次中生效。Claude Code 会把这个消息作为"途中补充"处理,不当作新的独立对话:
# AI 正在重构代码,你突然想到一个约束
别忘了保留原来的 @Deprecated 注解
AI 会收到这条补充,调整后续行为。不需要等它停下来,也不用重新解释上下文。
/btw:专门用于"顺便说一句"的场景。AI 正在处理 A 任务,你突然想到 B 任务的约束,用 /btw 插入,不影响 A 的执行:
# AI 正在写 API 接口
/btw 接口返回值用 Result<T> 包装,不要直接返回实体
# AI 继续写,但会把这条约束纳入
实际使用技巧:
| 场景 | 操作 |
|---|---|
| AI 方向跑偏 | 直接输入纠正方向,不用等它跑完 |
| 想到遗漏的约束 | /btw 补充约束条件 |
| AI 在读错文件 | 直接说"看 src/utils/ 不是 src/lib/" |
| 临时改需求 | 直接输入"改为支持分页查询" |
| 补充上下文 | 粘贴错误日志或代码片段 |
核心原则:动态引导的价值在于省一轮对话。不用等 AI 跑完发现错了再重来,在它跑的过程中就把方向纠正过来。
# Codex 引导技巧
# 审批模式
Codex 有三种审批模式,控制 AI 的自主程度:
# suggest(默认)— 每步都要确认
codex --approval-mode suggest "重构 UserService"
# auto-edit — 自动编辑文件,但执行命令需要确认
codex --approval-mode auto-edit "修复所有 lint 错误"
# full-auto — 全自动,不确认(谨慎使用)
codex --approval-mode full-auto "运行测试并修复失败的用例"
# 非交互模式
单次任务直接出结果,不进入交互:
# 打印模式
codex -q "分析这个项目的架构"
# 指定输出格式
codex -q --output-format json "列出所有 TODO 注释"
# 指定模型
# 使用指定模型
codex --model o4-mini "优化这段 SQL 查询"
# 在 AGENTS.md 中固定模型
# codex 默认使用配置的模型
# 自定义 Instructions
Codex 支持在 AGENTS.md 中写更详细的引导:
# AGENTS.md
## 编码规范
- 优先使用 Stream API,不要写 for 循环
- 所有 public 方法必须写 Javadoc
- 异常处理用全局 @ControllerAdvice,不要在业务代码里 try-catch
## 提交规范
- commit message 格式:type(scope): description
- type 只允许:feat、fix、refactor、docs、chore
# 实战:引导 AI 做代码审查
# Claude Code
# 方式一:自定义命令
# .claude/commands/review.md
审查 git diff 的变更,按 bug / 性能 / 安全 / 风格 分类输出
# 执行
/review
# 方式二:Subagent
claude --agent Explore "搜索所有 @Deprecated 标注的方法,列出替代方案"
# Codex
# suggest 模式,逐步确认
codex --approval-mode suggest "审查 src/ 目录的代码质量,列出需要改进的地方"