欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

Claude Code 编码代理

Claude Code 编码代理

委派编码任务给 Claude Code CLI(功能开发、PR 提交)

Claude Code — Hermes 编排指南

通过 Hermes 终端将编码任务委派给 Claude Code(Anthropic 的自主编码代理 CLI)。Claude Code v2.x 可以读取文件、编写代码、运行 shell 命令、生成子代理(subagent),并自主管理 git 工作流。

前置条件

  • 安装: npm install -g @anthropic-ai/claude-code
  • 认证: 运行 claude 一次以登录(Pro/Max 用户使用浏览器 OAuth,或设置 ANTHROPIC_API_KEY
  • 控制台认证: claude auth login --console 用于 API 密钥计费
  • SSO 认证: claude auth login --sso 用于企业版
  • 检查状态: claude auth status(JSON)或 claude auth status --text(人类可读格式)
  • 健康检查: claude doctor — 检查自动更新器和安装健康状态
  • 版本检查: claude --version(需要 v2.x+)
  • 更新: claude updateclaude upgrade
  • 两种编排模式

    Hermes 与 Claude Code 的交互有两种根本不同的方式。请根据任务选择。

    模式 1:Print 模式(`-p`)— 非交互式(大多数任务的首选)

    Print 模式执行一次性任务,返回结果后退出。无需 PTY,没有交互式提示。这是最干净的集成路径。

    
    terminal(command="claude -p 'Add error handling to all API calls in src/' --allowedTools 'Read,Edit' --max-turns 10", workdir="/path/to/project", timeout=120)
    

    何时使用 print 模式:

  • 一次性编码任务(修复 bug、添加功能、重构)
  • CI/CD 自动化和脚本化
  • 使用 --json-schema 进行结构化数据提取
  • 管道输入处理(cat file | claude -p "analyze this"
  • 任何不需要多轮对话的任务
  • Print 模式会跳过所有交互式对话框 — 没有工作区信任提示,没有权限确认。因此非常适合自动化场景。

    模式 2:通过 tmux 的交互式 PTY — 多轮会话

    交互式模式为你提供完整的对话式 REPL,你可以发送后续提示、使用斜杠命令,并实时观察 Claude 工作。需要 tmux 编排。

    
    # Start a tmux session
    terminal(command="tmux new-session -d -s claude-work -x 140 -y 40")
    
    # Launch Claude Code inside it
    terminal(command="tmux send-keys -t claude-work 'cd /path/to/project && claude' Enter")
    
    # Wait for startup, then send your task
    # (after ~3-5 seconds for the welcome screen)
    terminal(command="sleep 5 && tmux send-keys -t claude-work 'Refactor the auth module to use JWT tokens' Enter")
    
    # Monitor progress by capturing the pane
    terminal(command="sleep 15 && tmux capture-pane -t claude-work -p -S -50")
    
    # Send follow-up tasks
    terminal(command="tmux send-keys -t claude-work 'Now add unit tests for the new JWT code' Enter")
    
    # Exit when done
    terminal(command="tmux send-keys -t claude-work '/exit' Enter")
    

    何时使用交互式模式:

  • 多轮迭代工作(重构 → 审查 → 修复 → 测试的循环)
  • 需要人工介入决策的任务
  • 探索式编码会话
  • 需要使用 Claude 的斜杠命令时(/compact/review/model
  • PTY 对话框处理(交互式模式的关键)

    Claude Code 首次启动时最多会出现两个确认对话框。你必须通过 tmux send-keys 处理它们:

    对话框 1:工作区信任(首次访问某个目录时)

    
    ❯ 1. Yes, I trust this folder    ← DEFAULT (just press Enter)
      2. No, exit
    

    处理方法: tmux send-keys -t Enter — 默认选项即为正确选项。

    对话框 2:绕过权限警告(仅在使用 --dangerously-skip-permissions 时)

    
    ❯ 1. No, exit                    ← DEFAULT (WRONG choice!)
      2. Yes, I accept
    

    处理方法:必须先按 DOWN 键导航,再按 Enter:

    
    tmux send-keys -t  Down && sleep 0.3 && tmux send-keys -t  Enter
    

    健壮的对话框处理模式

    
    # Launch with permissions bypass
    terminal(command="tmux send-keys -t claude-work 'claude --dangerously-skip-permissions "your task"' Enter")
    
    # Handle trust dialog (Enter for default "Yes")
    terminal(command="sleep 4 && tmux send-keys -t claude-work Enter")
    
    # Handle permissions dialog (Down then Enter for "Yes, I accept")
    terminal(command="sleep 3 && tmux send-keys -t claude-work Down && sleep 0.3 && tmux send-keys -t claude-work Enter")
    
    # Now wait for Claude to work
    terminal(command="sleep 15 && tmux capture-pane -t claude-work -p -S -60")
    

    注意:对某个目录首次接受信任后,信任对话框不会再次出现。只有权限对话框会在每次使用 --dangerously-skip-permissions 时重复出现。

    CLI 子命令

    子命令用途
    `claude`启动交互式 REPL
    `claude "query"`以初始提示启动 REPL
    `claude -p "query"`Print 模式(非交互式,完成后退出)
    `cat file claude -p "query"`通过管道将内容作为 stdin 上下文传入
    `claude -c`继续当前目录中最近的一次对话
    `claude -r "id"`按 ID 或名称恢复指定会话
    `claude auth login`登录(添加 `--console` 用于 API 计费,`--sso` 用于企业版)
    `claude auth status`检查登录状态(返回 JSON;`--text` 为人类可读格式)
    `claude mcp add -- `添加 MCP 服务器
    `claude mcp list`列出已配置的 MCP 服务器
    `claude mcp remove `移除 MCP 服务器
    `claude agents`列出已配置的代理
    `claude doctor`对安装和自动更新器运行健康检查
    `claude update` / `claude upgrade`将 Claude Code 更新到最新版本
    `claude remote-control`启动服务器,以便从 claude.ai 或移动应用控制 Claude
    `claude install [target]`安装原生构建(stable、latest 或特定版本)
    `claude setup-token`设置长期有效的认证令牌(需要订阅)
    `claude plugin` / `claude plugins`管理 Claude Code 插件

    Print 模式深入解析

    结构化 JSON 输出

    
    terminal(command="claude -p 'Analyze auth.py for security issues' --output-format json --max-turns 5", workdir="/project", timeout=120)
    

    返回一个包含以下内容的 JSON 对象:

    
    {
      "type": "result",
      "subtype": "success",
      "result": "The analysis text...",
      "session_id": "75e2167f-...",
      "num_turns": 3,
      "total_cost_usd": 0.0787,
      "duration_ms": 10276,
      "stop_reason": "end_turn",
      "terminal_reason": "completed",
      "usage": { "input_tokens": 5, "output_tokens": 603, ... },
      "modelUsage": { "claude-sonnet-4-6": { "costUSD": 0.078, "contextWindow": 200000 } }
    }
    

    关键字段:session_id 用于恢复会话,num_turns 为代理循环次数,total_cost_usd 用于支出追踪,subtype 用于成功/错误检测(successerror_max_turnserror_budget)。

    流式 JSON 输出

    如需实时 token 流式输出,请使用 stream-json 搭配 --verbose

    
    terminal(command="claude -p 'Write a summary' --output-format stream-json --verbose --include-partial-messages", timeout=60)
    

    返回以换行分隔的 JSON 事件。用 jq 过滤出实时文本:

    
    claude -p "Explain X" --output-format stream-json --verbose --include-partial-messages | 
      jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'
    

    流事件包括 system/api_retry,带有 attemptmax_retrieserror 字段(例如 rate_limitbilling_error)。

    双向流式传输

    如需实时输入和输出双向流式传输:

    
    claude -p "task" --input-format stream-json --output-format stream-json --replay-user-messages
    

    --replay-user-messages 会将用户消息重新输出到 stdout 以作确认。

    管道输入

    
    # Pipe a file for analysis
    terminal(command="cat src/auth.py | claude -p 'Review this code for bugs' --max-turns 1", timeout=60)
    
    # Pipe multiple files
    terminal(command="cat src/*.py | claude -p 'Find all TODO comments' --max-turns 1", timeout=60)
    
    # Pipe command output
    terminal(command="git diff HEAD~3 | claude -p 'Summarize these changes' --max-turns 1", timeout=60)
    

    用于结构化提取的 JSON Schema

    
    terminal(command="claude -p 'List all functions in src/' --output-format json --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' --max-turns 5", workdir="/project", timeout=90)
    

    从 JSON 结果中解析 structured_output。Claude 会在返回前根据 schema 验证输出。

    会话延续

    
    # Start a task
    terminal(command="claude -p 'Start refactoring the database layer' --output-format json --max-turns 10 > /tmp/session.json", workdir="/project", timeout=180)
    
    # Resume with session ID
    terminal(command="claude -p 'Continue and add connection pooling' --resume $(cat /tmp/session.json | python3 -c 'import json,sys; print(json.load(sys.stdin)["session_id"])') --max-turns 5", workdir="/project", timeout=120)
    
    # Or resume the most recent session in the same directory
    terminal(command="claude -p 'What did you do last time?' --continue --max-turns 1", workdir="/project", timeout=30)
    
    # Fork a session (new ID, keeps history)
    terminal(command="claude -p 'Try a different approach' --resume  --fork-session --max-turns 10", workdir="/project", timeout=120)
    

    用于 CI/脚本的 Bare 模式

    
    terminal(command="claude --bare -p 'Run all tests and report failures' --allowedTools 'Read,Bash' --max-turns 10", workdir="/project", timeout=180)
    

    --bare 会跳过 hooks、插件、MCP 发现和 CLAUDE.md 加载。启动速度最快。需要 ANTHROPIC_API_KEY(跳过 OAuth)。

    如需在 bare 模式下选择性加载上下文:

    `claude auto-mode`查看 auto 模式分类器配置
    要加载的内容标志
    系统提示词追加内容`--append-system-prompt "text"` or `--append-system-prompt-file path`
    设置`--settings `
    MCP 服务器`--mcp-config `

    过载时的回退模型

    
    terminal(command="claude -p 'task' --fallback-model haiku --max-turns 5", timeout=90)
    

    当默认模型过载时自动回退到指定模型(仅限 print 模式)。

    完整 CLI 标志参考

    会话与环境

    自定义代理`--agents ''`
    标志效果
    `-p, --print`非交互式一次性模式(完成后退出)
    `-c, --continue`继续当前目录中最近的一次对话
    `-r, --resume `按 ID 或名称恢复指定会话(无 ID 时显示交互式选择器)
    `--fork-session`恢复时创建新的会话 ID,而不是复用原 ID
    `--session-id `为对话使用指定的 UUID
    `--no-session-persistence`不将会话保存到磁盘(仅限 print 模式)
    `--add-dir `授予 Claude 访问其他工作目录的权限
    `-w, --worktree [name]`在 `.claude/worktrees/` 下的独立 git worktree 中运行
    `--tmux`为 worktree 创建 tmux 会话(需要 `--worktree`)
    `--ide`启动时自动连接有效的 IDE
    `--chrome` / `--no-chrome`启用/禁用 Chrome 浏览器集成(用于 Web 测试)
    `--from-pr [number]`恢复与指定 GitHub PR 关联的会话

    模型与性能

    `--file `启动时要下载的文件资源(格式:`file_id:relative_path`)
    标志效果
    `--model `模型选择:`sonnet`、`opus`、`haiku` 或完整名称如 `claude-sonnet-4-6`
    `--effort `推理深度:`low`、`medium`、`high`、`max`、`auto`Both
    `--max-turns `限制代理循环次数(仅限 print 模式;防止失控)
    `--max-budget-usd `以美元为单位限制 API 支出(仅限 print 模式)
    `--fallback-model `默认模型过载时自动回退(仅限 print 模式)

    权限与安全

    `--betas `API 请求中包含的 Beta 头(仅限 API 密钥用户)
    标志效果
    `--dangerously-skip-permissions`自动批准所有工具使用(文件写入、bash、网络等)
    `--allow-dangerously-skip-permissions`将绕过权限作为*选项*启用,但默认不开启
    `--permission-mode ``default`、`acceptEdits`、`plan`、`auto`、`dontAsk`、`bypassPermissions`
    `--allowedTools `白名单指定工具(逗号或空格分隔)
    `--disallowedTools `黑名单指定工具

    输出与输入格式

    `--tools `覆盖内置工具集(`""` = 无,`"default"` = 全部,或工具名称)
    标志效果
    `--output-format ``text`(默认)、`json`(单个结果对象)、`stream-json`(换行分隔)
    `--input-format ``text`(默认)或 `stream-json`(实时流式输入)
    `--json-schema `强制输出符合 schema 的结构化 JSON
    `--verbose`完整的逐轮输出
    `--include-partial-messages`包含到达的部分消息块(stream-json + print)

    系统提示词与上下文

    `--replay-user-messages`将用户消息重新输出到 stdout(stream-json 双向)
    标志效果
    `--append-system-prompt `**追加**到默认系统提示词(保留内置能力)
    `--append-system-prompt-file `将文件内容**追加**到默认系统提示词
    `--system-prompt `**替换**整个系统提示词(通常建议改用 --append)
    `--system-prompt-file `用文件内容**替换**系统提示词
    `--bare`跳过 hooks、插件、MCP 发现、CLAUDE.md、OAuth(启动最快)
    `--agents ''`以 JSON 动态定义自定义子代理
    `--mcp-config `从 JSON 文件加载 MCP 服务器(可重复使用)
    `--strict-mcp-config`只使用 `--mcp-config` 提供的 MCP 服务器,忽略所有其他 MCP 配置
    `--settings `从 JSON 文件或内联 JSON 加载额外设置
    `--setting-sources `逗号分隔的加载来源:`user`、`project`、`local`
    `--plugin-dir `仅为本会话从目录加载插件

    调试

    `--disable-slash-commands`禁用所有 skills/斜杠命令
    标志效果
    `-d, --debug [filter]`启用调试日志,可选类别过滤器(例如 `"api,hooks"`、`"!1p,!file"`)

    代理团队

    `--debug-file `将调试日志写入文件(隐式启用调试模式)
    标志效果
    `--teammate-mode `代理团队的显示方式:`auto`、`in-process` 或 `tmux`

    --allowedTools / --disallowedTools 的工具名称语法

    
    Read                    # All file reading
    Edit                    # File editing (existing files)
    Write                   # File creation (new files)
    Bash                    # All shell commands
    Bash(git *)             # Only git commands
    Bash(git commit *)      # Only git commit commands
    Bash(npm run lint:*)    # Pattern matching with wildcards
    WebSearch               # Web search capability
    WebFetch                # Web page fetching
    mcp____   # Specific MCP tool
    

    设置与配置

    设置优先级(从高到低)

  • CLI 标志 — 覆盖一切
  • 本地项目:.claude/settings.local.json(个人,已被 gitignore)
  • 项目:.claude/settings.json(团队共享,纳入 git 跟踪)
  • 用户:~/.claude/settings.json(全局)
  • 设置中的权限配置

    
    {
      "permissions": {
        "allow": ["Bash(npm run lint:*)", "WebSearch", "Read"],
        "ask": ["Write(*.ts)", "Bash(git push*)"],
        "deny": ["Read(.env)", "Bash(rm -rf *)"]
      }
    }
    

    记忆文件(CLAUDE.md)层级

  • 全局:~/.claude/CLAUDE.md — 应用于所有项目
  • 项目:./CLAUDE.md — 项目特定上下文(纳入 git 跟踪)
  • 本地:.claude/CLAUDE.local.md — 个人项目覆盖(已被 gitignore)
  • 在交互式模式中使用 # 前缀可快速添加到记忆:# Always use 2-space indentation

    交互式会话:斜杠命令

    会话与上下文

    `--brief`启用 `SendUserMessage` 工具用于代理与用户通信
    命令用途
    `/help`显示所有命令(包括自定义和 MCP 命令)
    `/compact [focus]`压缩上下文以节省 token;CLAUDE.md 在压缩后保留。例如 `/compact focus on auth logic`
    `/clear`清空对话历史,重新开始
    `/context`以彩色网格可视化上下文占用情况,并附优化建议
    `/cost`查看 token 用量,含按模型和缓存命中的细分
    `/resume`切换到或恢复其他会话
    `/rewind`回退到对话或代码的先前检查点
    `/btw `提出附带问题而不增加上下文开销
    `/status`显示版本、连接状态和会话信息
    `/todos`列出对话中跟踪的行动事项

    开发与审查

    `/exit` or `Ctrl+D`结束会话
    命令用途
    `/review`对当前更改请求代码审查
    `/security-review`对当前更改执行安全分析
    `/plan [description]`进入 Plan 模式,自动开始任务规划
    `/loop [interval]`在会话中安排周期性任务

    配置 & Tools

    `/batch`为大型并行更改自动创建 worktree(5-30 个)
    命令用途
    `/model [model]`在会话中切换模型(用方向键调整 effort)
    `/effort [level]`设置推理努力程度:`low`、`medium`、`high`、`max` 或 `auto`
    `/init`为项目记忆创建 CLAUDE.md 文件
    `/memory`打开 CLAUDE.md 进行编辑
    `/config`打开交互式设置配置
    `/permissions`查看/更新工具权限
    `/agents`管理专用子代理
    `/mcp`管理 MCP 服务器的交互式界面
    `/add-dir`添加额外的工作目录(对 monorepo 很有用)
    `/usage`显示计划限额和速率限制状态
    `/voice`启用按住说话的语音模式(支持 20 种语言;按住空格键录音,松开发送)

    自定义斜杠命令

    创建 .claude/commands/.md(项目共享)或 ~/.claude/commands/.md(个人):

    
    # .claude/commands/deploy.md
    Run the deploy pipeline:
    1. Run all tests
    2. Build the Docker image
    3. Push to registry
    4. Update the $ARGUMENTS environment (default: staging)
    

    用法:/deploy production$ARGUMENTS 会被替换为用户输入。

    Skills(自然语言调用)

    与斜杠命令(手动调用)不同,.claude/skills/ 中的 skills 是 markdown 指南,当任务匹配时 Claude 会通过自然语言自动调用:

    
    # .claude/skills/database-migration.md
    When asked to create or modify database migrations:
    1. Use Alembic for migration generation
    2. Always create a rollback function
    3. Test migrations against a local database copy
    

    交互式会话:键盘快捷键

    常规控制

    `/release-notes`交互式选择查看版本发布说明
    按键操作
    `Ctrl+C`取消当前输入或生成
    `Ctrl+D`退出会话
    `Ctrl+R`反向搜索命令历史
    `Ctrl+B`将正在运行的任务转入后台
    `Ctrl+V`将图片粘贴到对话中
    `Ctrl+O`转录模式 — 查看 Claude 的思考过程
    `Ctrl+G` or `Ctrl+X Ctrl+E`在外部编辑器中打开提示词

    模式切换

    `Esc Esc`回退对话或代码状态 / 生成摘要
    按键操作
    `Shift+Tab`循环切换权限模式(Normal → Auto-Accept → Plan)
    `Alt+P`切换模型
    `Alt+T`切换思考模式

    多行输入

    `Alt+O`切换 Fast 模式
    按键操作
    `` + `Enter`快速换行
    `Shift+Enter`换行(另一种方式)

    输入前缀

    `Ctrl+J`换行(另一种方式)
    前缀操作
    `!`直接执行 bash,绕过 AI(例如 `!npm test`)。单独使用 `!` 可切换 shell 模式。
    `@`引用文件/目录并自动补全(例如 `@./src/api/`)
    `#`快速添加到 CLAUDE.md 记忆(例如 `# Use 2-space indentation`)

    专业技巧:"ultrathink"

    在提示词中使用关键词 "ultrathink" 可让特定一轮使用最大推理努力。无论当前 /effort 设置如何,这都会触发最深的思考模式。

    PR 审查模式

    快速审查(Print 模式)

    
    terminal(command="cd /path/to/repo && git diff main...feature-branch | claude -p 'Review this diff for bugs, security issues, and style problems. Be thorough.' --max-turns 1", timeout=60)
    

    深度审查(交互式 + Worktree)

    
    terminal(command="tmux new-session -d -s review -x 140 -y 40")
    terminal(command="tmux send-keys -t review 'cd /path/to/repo && claude -w pr-review' Enter")
    terminal(command="sleep 5 && tmux send-keys -t review Enter")  # Trust dialog
    terminal(command="sleep 2 && tmux send-keys -t review 'Review all changes vs main. Check for bugs, security issues, race conditions, and missing tests.' Enter")
    terminal(command="sleep 30 && tmux capture-pane -t review -p -S -60")
    

    按编号审查 PR

    
    terminal(command="claude -p 'Review this PR thoroughly' --from-pr 42 --max-turns 10", workdir="/path/to/repo", timeout=120)
    

    Claude Worktree 配合 tmux

    
    terminal(command="claude -w feature-x --tmux", workdir="/path/to/repo")
    

    .claude/worktrees/feature-x 创建独立的 git worktree,并为其创建 tmux 会话。可用时会使用 iTerm2 原生面板;如需传统 tmux,请添加 --tmux=classic

    并行 Claude 实例

    同时运行多个独立的 Claude 任务:

    
    # Task 1: Fix backend
    terminal(command="tmux new-session -d -s task1 -x 140 -y 40 && tmux send-keys -t task1 'cd ~/project && claude -p "Fix the auth bug in src/auth.py" --allowedTools "Read,Edit" --max-turns 10' Enter")
    
    # Task 2: Write tests
    terminal(command="tmux new-session -d -s task2 -x 140 -y 40 && tmux send-keys -t task2 'cd ~/project && claude -p "Write integration tests for the API endpoints" --allowedTools "Read,Write,Bash" --max-turns 15' Enter")
    
    # Task 3: Update docs
    terminal(command="tmux new-session -d -s task3 -x 140 -y 40 && tmux send-keys -t task3 'cd ~/project && claude -p "Update README.md with the new API endpoints" --allowedTools "Read,Edit" --max-turns 5' Enter")
    
    # Monitor all
    terminal(command="sleep 30 && for s in task1 task2 task3; do echo '=== '$s' ==='; tmux capture-pane -t $s -p -S -5 2>/dev/null; done")
    

    CLAUDE.md — 项目上下文文件

    Claude Code 会自动从项目根目录加载 CLAUDE.md。用它来持久化项目上下文:

    
    # Project: My API
    
    ## Architecture
    - FastAPI backend with SQLAlchemy ORM
    - PostgreSQL database, Redis cache
    - pytest for testing with 90% coverage target
    
    ## Key Commands
    - `make test` — run full test suite
    - `make lint` — ruff + mypy
    - `make dev` — start dev server on :8000
    
    ## Code Standards
    - Type hints on all public functions
    - Docstrings in Google style
    - 2-space indentation for YAML, 4-space for Python
    - No wildcard imports
    

    要具体。不要写“编写好的代码”,而要写“JS 使用 2 空格缩进”或“测试文件使用 .test.ts 后缀命名”。具体的指令能节省反复纠正的周期。

    Rules 目录(模块化 CLAUDE.md)

    对于规则较多的项目,可使用 rules 目录代替一个庞大的 CLAUDE.md:

  • 项目规则:.claude/rules/*.md — 团队共享,纳入 git 跟踪
  • 用户规则:~/.claude/rules/*.md — 个人,全局
  • rules 目录中的每个 .md 文件都会作为额外上下文加载。这比把所有内容塞进单个 CLAUDE.md 更清晰。

    自动记忆

    Claude 会自动将学到的项目上下文存储在 ~/.claude/projects//memory/ 中。

  • 限制:每个项目 25KB 或 200 行
  • 这与 CLAUDE.md 是分开的 — 它是 Claude 自己关于项目的笔记,跨会话累积
  • 自定义子代理

    .claude/agents/(项目)、~/.claude/agents/(个人)中定义专用代理,或通过 --agents CLI 标志(会话级)定义:

    代理位置优先级

  • .claude/agents/ — 项目级,团队共享
  • --agents CLI 标志 — 会话级,动态
  • ~/.claude/agents/ — 用户级,个人
  • 创建代理

    
    # .claude/agents/security-reviewer.md
    ---
    name: security-reviewer
    description: Security-focused code review
    model: opus
    tools: [Read, Bash]
    ---
    You are a senior security engineer. Review code for:
    - Injection vulnerabilities (SQL, XSS, command injection)
    - Authentication/authorization flaws
    - Secrets in code
    - Unsafe deserialization
    

    调用方式:@security-reviewer review the auth module

    通过 CLI 动态创建代理

    
    terminal(command="claude --agents '{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer focused on performance"}}' -p 'Use @reviewer to check auth.py'", timeout=120)
    

    Claude 可以编排多个代理:“Use @db-expert to optimize queries, then @security to audit the changes.”(先让 @db-expert 优化查询,然后让 @security 审计更改。)

    Hooks — 事件驱动的自动化

    .claude/settings.json(项目)或 ~/.claude/settings.json(全局)中配置:

    
    {
      "hooks": {
        "PostToolUse": [{
          "matcher": "Write(*.py)",
          "hooks": [{"type": "command", "command": "ruff check --fix $CLAUDE_FILE_PATHS"}]
        }],
        "PreToolUse": [{
          "matcher": "Bash",
          "hooks": [{"type": "command", "command": "if echo "$CLAUDE_TOOL_INPUT" | grep -q 'rm -rf'; then echo 'Blocked!' && exit 2; fi""}]
        }],
        "Stop": [{
          "hooks": [{"type": "command", "command": "echo 'Claude finished a response' >> /tmp/claude-activity.log"}]
        }]
      }
    }
    

    全部 8 种 Hook 类型

    `/`斜杠命令
    Hook触发时机常见用途
    `UserPromptSubmit`Claude 处理用户提示之前输入验证、日志记录
    `PreToolUse`工具执行之前安全门禁、拦截危险命令(exit 2 = 拦截)
    `PostToolUse`工具完成后自动格式化代码、运行 linter
    `Notification`权限请求或等待输入时桌面通知、告警
    `Stop`Claude 完成一次响应时完成日志、状态更新
    `SubagentStop`子代理完成时代理编排
    `PreCompact`上下文记忆被清除之前备份会话转录

    Hook 环境变量

    `SessionStart`会话开始时加载开发上下文(例如 `git status`)
    变量内容
    `CLAUDE_PROJECT_DIR`当前项目路径
    `CLAUDE_FILE_PATHS`正在修改的文件

    安全说明 Hook Examples

    
    {
      "PreToolUse": [{
        "matcher": "Bash",
        "hooks": [{"type": "command", "command": "if echo "$CLAUDE_TOOL_INPUT" | grep -qE 'rm -rf|git push.*--force|:(){ :|:& };:'; then echo 'Dangerous command blocked!' && exit 2; fi""}]
      }]
    }
    

    MCP 集成

    为数据库、API 和服务添加外部工具服务器:

    
    # GitHub integration
    terminal(command="claude mcp add -s user github -- npx @modelcontextprotocol/server-github", timeout=30)
    
    # PostgreSQL queries
    terminal(command="claude mcp add -s local postgres -- npx @anthropic-ai/server-postgres --connection-string postgresql://localhost/mydb", timeout=30)
    
    # Puppeteer for web testing
    terminal(command="claude mcp add puppeteer -- npx @anthropic-ai/server-puppeteer", timeout=30)
    

    MCP 作用域

    `CLAUDE_TOOL_INPUT`JSON 格式的工具参数
    标志作用域存储位置
    `-s user`全局(所有项目)`~/.claude.json`
    `-s local`本项目(个人)`.claude/settings.local.json`(已被 gitignore)

    Print/CI 模式下的 MCP

    
    terminal(command="claude --bare -p 'Query database' --mcp-config mcp-servers.json --strict-mcp-config", timeout=60)
    

    --strict-mcp-config 会忽略来自 --mcp-config 之外的所有 MCP 服务器。

    在聊天中引用 MCP 资源:@github:issue://123

    MCP 限制与调优

  • 工具描述:每个服务器的工具描述和服务器指令上限为 2KB
  • 结果大小:默认有上限;使用 maxResultSizeChars 注解可允许最多 500K 字符的大型输出
  • 输出 token:export MAX_MCP_OUTPUT_TOKENS=50000 — 限制 MCP 服务器的输出以防止上下文泛滥
  • 传输方式:stdio(本地进程)、http(远程)、sse(服务器推送事件)
  • 监控交互式会话

    读取 TUI 状态

    
    # Periodic capture to check if Claude is still working or waiting for input
    terminal(command="tmux capture-pane -t dev -p -S -10")
    

    留意以下指示信息:

  • 底部的 = 等待你的输入(Claude 已完成或正在提问)
  • 行 = Claude 正在积极使用工具(读取、写入、运行命令)
  • ⏵⏵ bypass permissions on = 状态栏显示的权限模式
  • ◐ medium · /effort = 状态栏显示的当前 effort 等级
  • ctrl+o to expand = 工具输出被截断(可交互展开)
  • 上下文窗口健康度

    在交互式模式中使用 /context 查看上下文占用的彩色网格。关键阈值:

  • < 70% — 正常运行,全精度
  • 70-85% — 精度开始下降,考虑使用 /compact
  • > 85% — 幻觉风险显著上升,使用 /compact/clear
  • 环境要求 Variables

    `-s project`本项目(团队共享)`.claude/settings.json`(纳入 git 跟踪)
    变量效果
    `ANTHROPIC_API_KEY`用于认证的 API 密钥(OAuth 的替代方案)
    `CLAUDE_CODE_EFFORT_LEVEL`默认 effort:`low`、`medium`、`high`、`max` 或 `auto`
    `MAX_THINKING_TOKENS`限制思考 token(设为 `0` 可完全禁用思考)
    `MAX_MCP_OUTPUT_TOKENS`限制 MCP 服务器的输出(默认值不定;例如设为 `50000`)
    `CLAUDE_CODE_NO_FLICKER=1`启用备用屏幕渲染以消除终端闪烁

    成本与性能技巧

  • 在 print 模式使用 --max-turns 防止失控循环。大多数任务从 5-10 开始。
  • 使用 --max-budget-usd 设置成本上限。注意:系统提示词缓存创建的最低费用约为 $0.05。
  • 简单任务使用 --effort low(更快、更便宜)。复杂推理使用 highmax
  • CI/脚本中使用 --bare 以跳过插件/hook 发现的开销。
  • 使用 --allowedTools 仅保留任务所需的能力(例如审查时只用 Read)。
  • 交互式会话中上下文变大时使用 /compact
  • 使用管道输入代替让 Claude 读文件,当你只需分析已知内容时。
  • 简单任务使用 --model haiku(更便宜),复杂多步骤工作使用 --model opus
  • 在 print 模式使用 --fallback-model haiku 以优雅应对模型过载。
  • 为不同任务开启新会话 — 会话持续 5 小时;全新上下文效率更高。
  • 在 CI 中使用 --no-session-persistence 以避免在磁盘上累积保存的会话。
  • 陷阱与注意事项

  • 交互式模式必须使用 tmux — Claude Code 是完整的 TUI 应用。在 Hermes 终端中单独使用 pty=true 虽然可行,但 tmux 提供了用于监控的 capture-pane 和用于输入的 send-keys,这对编排至关重要。
  • --dangerously-skip-permissions 对话框默认选项是 "No, exit" — 你必须先按 DOWN 再按 Enter 才能接受。Print 模式(-p)则完全跳过此对话框。
  • --max-budget-usd 最低约为 $0.05 — 仅系统提示词缓存创建就需要这么多。设置更低会立即报错。
  • --max-turns 仅限 print 模式 — 在交互式会话中会被忽略。
  • Claude 可能使用 python 而非 python3 — 在没有 python 符号链接的系统上,Claude 的 bash 命令第一次会失败,但它会自我纠正。
  • 会话恢复要求相同目录--continue 查找的是当前工作目录的最近会话。
  • --json-schema 需要足够的 --max-turns — Claude 必须先读取文件才能产出结构化输出,这需要多轮。
  • 信任对话框每个目录只出现一次 — 仅首次出现,之后会被缓存。
  • 后台 tmux 会话会持续存在 — 完成后务必用 tmux kill-session -t 清理。
  • 斜杠命令(如 /commit)只在交互式模式有效 — 在 -p 模式下,请用自然语言描述任务。
  • --bare 跳过 OAuth — 需要 ANTHROPIC_API_KEY 环境变量或设置中的 apiKeyHelper
  • 上下文退化是真实存在的 — 当上下文窗口使用超过 70% 时,AI 输出质量会明显下降。用 /context 监控并主动 /compact
  • Hermes 代理规则

  • 单任务优先使用 print 模式(-p — 更干净、无需处理对话框、输出结构化
  • 多轮交互式工作使用 tmux — 这是编排 TUI 的唯一可靠方式
  • 始终设置 workdir — 让 Claude 专注于正确的项目目录
  • 在 print 模式设置 --max-turns — 防止无限循环和成本失控
  • 监控 tmux 会话 — 使用 tmux capture-pane -t -p -S -50 检查进度
  • 留意 提示符 — 表示 Claude 正在等待输入(已完成或正在提问)
  • 清理 tmux 会话 — 完成后及时终止,避免资源泄漏
  • 向用户汇报结果 — 完成后总结 Claude 做了什么、改了什么
  • 不要终止较慢的会话 — Claude 可能在做多步骤工作;应检查进度
  • 使用 --allowedTools — 将能力限制为任务实际所需
  • `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`出于安全考虑从子进程中剥离凭据

    安装指南

    复制下方命令,在终端运行即可安装:

    # 安装到当前项目
    npx skills add claude-code-5
    # 全局安装 — 所有项目可用
    npx skills add claude-code-5 -g
    ⚡ 一键安装到 GenHub

    需已安装 GenHub 桌面端

    使用指南

    安装完成后,在对话框中直接使用此技能。

    基本信息
    作者 Community 分类 agent 难度 Intermediate 时长 1 hour
    🛠️ 安装命令
    # 安装到当前项目
    npx skills add claude-code-5
    # 全局安装
    npx skills add claude-code-5 -g

    发表评论