agent:~/.claude$ cat agent-architecture.md

智能体架构:构建 AI 驱动的开发框架

# 构建生产级 AI 智能体框架的完整体系。涵盖技能、钩子、记忆、子智能体、多智能体编排,以及使 AI 编码智能体成为可靠基础设施的设计模式。

author: words: 6854 read_time: 120m updated: 2026-08-01 22:14

Part 2 of Agentic Engineering

$ less agent-architecture.md

简而言之:Claude Code并非一个能够访问文件的聊天框,而是一个可编程运行时,拥有30个已记录的生命周期事件。每个事件都可通过模型无法跳过的 shell 脚本接入 hooks。将 hooks 组合成 dispatchers,将 dispatchers 组合成 skills,将 skills 组合成 agents,再将 agents 组合成 workflows,最终便可构建一套自主开发 harness:它能够强制执行约束、委派工作、跨会话持久保存 memory,并编排多 agent deliberation。Claude Code v2.1.147 新增了默认关闭的Workflow工具(CLAUDE_CODE_WORKFLOWS=1),推动确定性的多 agent orchestration 从纯用户空间脚本逐步演变为第一方运行时原语;v2.1.149 则从安全层面进一步印证了同一原则,修复了 PowerShell 权限绕过问题以及 git-worktree sandbox allowlist 问题。hooks 和 evidence gates 仍然负责保障正确性。5253本指南涵盖该技术栈的每一层:从单个 hook 到由10个 agent 组成的共识系统。无需任何框架。全部使用 bash 和 JSON。

Andrej Karpathy 创造了一个术语,用来描述围绕 LLM agent 逐渐形成的系统:claws。它指的是让 agent 能够突破上下文窗口限制、掌控外部世界的 hooks、脚本与 orchestration 机制。1大多数开发者将 AI 编码 agent 视为交互式助手:输入提示词,看着它编辑文件,然后继续下一项工作。这种思维方式会将生产力限制在您能够亲自监督的范围内。

基础设施式的思维模型截然不同:AI 编码 agent 是一个以 LLM 为内核的可编程运行时。模型执行的每项操作都会经过您控制的 hooks。您定义的是策略,而非提示词。模型在您的基础设施中运行,就像 Web 服务器在 nginx 规则约束下运行一样。您不会守在 nginx 前逐条输入请求,而是对其进行配置、部署和监控。

这种区别至关重要,因为基础设施的收益会不断叠加。一个能够阻止 bash 命令泄露凭据的 hook,可以保护每个会话、每个 agent 和每次自主运行。一个编码了评估标准的 skill,无论由您还是 agent 调用,都能始终如一地执行。一个负责安全代码审查的 agent,无论您是否在旁监督,都会运行相同的检查。2


核心要点

  • Hooks 能保证执行,提示词不能。对于代码检查、格式化、安全检查以及任何无论模型如何操作都必须每次运行的任务,请使用 hooks。退出代码2会阻止操作,退出代码1仅发出警告。3
  • Skills 封装可自动激活的领域专业知识。description字段决定一切。Claude使用 LLM 推理(而非关键词匹配)来判断何时应用某个 skill。4
  • Subagents 可防止上下文膨胀。使用隔离的上下文窗口进行探索和分析,能够让主会话保持精简。并行运行彼此独立的 subagents;当工作单元需要持续协作时,则使用 agent teams。5
  • Memory 存储在文件系统中。文件可跨上下文窗口持久保留。CLAUDE.md、MEMORY.md、rules 目录和 handoff 文档共同构成结构化的外部 memory 系统。6
  • 多 agent deliberation 能够发现盲点。单个 agent 无法挑战自身的假设。两个拥有不同评估优先级的独立 agent,可以发现 quality gates 无法解决的结构性缺陷。7
  • Harness 模式本身就是系统。CLAUDE.md、hooks、skills、agents 和 memory 并非相互独立的功能。它们共同构成位于您与模型之间的确定性层,并可随自动化规模一同扩展。

如何使用本指南

使用经验 从这里开始 然后探索
每天使用 Claude Code,希望更进一步 Harness 模式 Skills 系统Hook 架构
构建自主 workflows Subagent 模式 多 Agent Orchestration生产环境模式
评估 agent 架构 Agent 架构为何重要 决策框架安全注意事项
搭建团队 harness CLAUDE.md 设计 Hook 架构快速参考卡

各章节层层递进。末尾的决策框架提供了一张查询表,帮助您针对不同问题类型选择合适的机制。


五分钟黄金路径

在深入剖析之前,先来看从零到可用harness的最短路径。一个hook、一个skill、一个subagent、一个成果。

第 1 步:创建一个安全hook(2 分钟)

创建.claude/hooks/block-secrets.sh:

#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$CMD" | grep -qEi '(AKIA|sk-|ghp_|password=)'; then
    echo "BLOCKED: Potential secret in command" >&2
    exit 2
fi

.claude/settings.json中接入:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": ".claude/hooks/block-secrets.sh" }]
      }
    ]
  }
}

结果:Claude执行的每一条bash命令现在都会被筛查是否泄露凭证。模型无法跳过此检查。

第 2 步:创建一个代码审查skill(1 分钟)

创建.claude/skills/reviewer/SKILL.md,包含frontmatter(name: reviewerdescription: Review code for security issues, bugs, and quality problems. Use when examining changes, reviewing PRs, or auditing code.allowed-tools: Read, Grep, Glob)以及一份检查清单:SQL注入、XSS、硬编码密钥、缺失的错误处理、超过 50 行的函数。

结果:每当您提到review、check或audit时,Claude会自动激活这项专业能力。

第 3 步:派生一个subagent(30 秒)

在任意Claude Code会话中,请Claude使用独立agent审查最近 3 次提交中的安全问题。Claude会派生一个Explore agent,该agent读取diff、应用您的审查skill,并返回摘要。您的主上下文保持干净。

您现在拥有什么

一个三层harness:确定性的安全门禁(hook)、自动激活的领域专长(skill),以及保护上下文的隔离分析(subagent)。下文每一节都将围绕这三层中的一层展开。


为什么agent架构至关重要

Simon Willison将当下这个时刻概括为一个观察:编写代码如今已经很便宜。8 没错。但其推论是,验证如今才是昂贵的部分。缺乏验证基础设施的廉价代码会大规模制造bug。真正带来回报的投资不是更好的prompt,而是围绕模型构建的系统——那个能捕捉模型遗漏之处的系统。

三股力量使agent架构成为必需:

上下文窗口既有限又会损耗。每一次文件读取、工具输出和对话轮次都会消耗token。Microsoft Research与Salesforce对 15 个LLM进行了 20 万余次模拟对话测试,发现从单轮到多轮交互,性能平均下降 39%。9 这种退化最早在两轮之内就会出现,并遵循一条可预测的曲线:前 30 分钟的精准多文件编辑,到第 90 分钟时会退化为单文件的隧道视野。更长的上下文窗口并不能解决这一问题。同一研究中的”Concat”条件(将整段对话作为单一prompt)在内容完全相同的情况下达到了单轮表现的 95.1%。退化源自轮次边界,而非token上限。

模型行为是概率性的,不是确定性的。告诉Claude”编辑文件后务必运行Prettier”大约 80% 的时候管用。3 模型可能会忘记、优先考虑速度,或判断该改动”太小”。对于合规、安全和团队规范而言,80% 并不可接受。Hooks能保证执行:每一次Edit或Write都会触发您的格式化工具,次次如此,概莫能外。确定性胜过概率性。

单一视角会错过多维度问题。单个agent审查一个API端点时,检查了身份认证、验证了输入清洗,也核实了CORS头。一切看起来无懈可击。而另一个agent单独以渗透测试员的身份被prompt时,却发现该端点接受无限制的查询参数,可能通过数据库查询放大触发拒绝服务攻击。7 第一个agent从未检查这一点,因为其评估框架中没有任何部分将查询复杂度视为安全攻击面。这是结构性的盲区,再多的prompt工程也无法弥补。

Agent架构同时应对这三点:hooks强制确定性约束,subagents管理上下文隔离,多agent编排提供独立视角。三者合一,构成了harness。


Harness 模式

harness 不是框架,而是一种模式:它由一组可组合的文件、脚本和约定构成,将 AI 编码智能体封装在确定性基础设施中。其组件包括:

┌──────────────────────────────────────────────────────────────┐
│                      THE HARNESS PATTERN                      │
├──────────────────────────────────────────────────────────────┤
│  ORCHESTRATION                                                │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐             │
│  │   Agent     │  │   Agent    │  │  Consensus │             │
│  │   Teams     │  │  Spawning  │  │  Validation│             │
│  └────────────┘  └────────────┘  └────────────┘             │
│  Multi-agent deliberation, parallel research, voting          │
├──────────────────────────────────────────────────────────────┤
│  EXTENSION LAYER                                              │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │
│  │  Skills   │  │  Hooks   │  │  Memory  │  │  Agents  │    │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │
│  Domain expertise, deterministic gates, persistent state,     │
│  specialized subagents                                        │
├──────────────────────────────────────────────────────────────┤
│  INSTRUCTION LAYER                                            │
│  ┌──────────────────────────────────────────────────────┐    │
│  │     CLAUDE.md  +  .claude/rules/  +  MEMORY.md       │    │
│  └──────────────────────────────────────────────────────┘    │
│  Project context, operational policy, cross-session memory    │
├──────────────────────────────────────────────────────────────┤
│  CORE LAYER                                                   │
│  ┌──────────────────────────────────────────────────────┐    │
│  │           Main Conversation Context (LLM)             │    │
│  └──────────────────────────────────────────────────────┘    │
│  Your primary interaction; finite context; costs money        │
└──────────────────────────────────────────────────────────────┘

指令层:CLAUDE.md 文件和规则目录定义智能体需要了解的项目知识。它们会在会话开始时以及每次压缩后自动加载。这是智能体的长期架构记忆。

扩展层:skills 提供领域专业知识,并根据上下文自动激活。hooks 提供确定性关卡,在每次匹配的工具调用时触发。内存文件用于跨会话保留状态。自定义智能体则提供专门的 subagents 配置。

编排层:多智能体模式协调相互独立的智能体开展研究、审查和研讨。生成预算可防止递归失控,共识验证则用于确保质量。

核心洞见在于:大多数用户完全在核心层中工作,只能眼看上下文不断膨胀、成本节节攀升。高级用户会配置指令层和扩展层,随后仅使用核心层进行编排和最终决策。2

托管与自托管 Harness(2026年4月)

在2026年初的大部分时间里,“构建自己的 harness”是唯一切实可行的选择。2026年4月,情况发生了变化。Anthropic 于4月8日发布了公开测试版 Claude Managed Agents:将 harness 循环、工具执行、沙盒容器和状态持久化封装为 REST API,按标准 token 费用外加每会话小时0.08美元计费。OpenAI 于4月16日更新的 Agents SDK 正式确立了相同的分层方式——将 harness 与计算拆分为独立层,并提供原生沙盒供应商(Blaxel、Cloudflare、Daytona、E2B、Modal、Runloop、Vercel),以及快照与重新水合功能,以便在容器丢失后继续运行。2324

OpenAI 侧更深层的 SDK 功能随 openai-agents Python v0.14.0 一同落地(2026年4月15日发布,4月16日宣布):包括继承自 AgentSandboxAgent 子类,提供 default_manifest、沙盒指令和能力;用于描述全新工作区契约(文件、目录、本地文件、Git 仓库、环境、用户、挂载)的 Manifest;以及 SandboxRunConfig,用于按运行配置沙盒客户端、注入实时会话、覆盖 manifest、设置快照和实体化并发限制。内置能力涵盖 shell 访问、文件系统编辑、图像检查、skills、沙盒内存和压缩。沙盒内存会跨运行保留提取出的经验,并以渐进披露方式提供;工作区支持本地文件、Git 仓库条目和远程挂载(S3、R2、GCS、Azure Blob、S3 Files);快照可跨供应商移植。后端包括:UnixLocalSandboxClientDockerSandboxClient,以及通过可选扩展提供的 Blaxel、Cloudflare、Daytona、E2B、Modal、Runloop 和 Vercel 托管客户端。24

对于希望将 Claude Code 运行时作为库嵌入的 Python 项目——介于“通过 shell 调用 claude”和“通过 REST API 调用 Managed Agents”之间——claude-agent-sdk-python 是第三种选择。4月28日至29日发布的一系列版本(v0.1.69 → v0.1.71)将捆绑的 CLI 升级至 v2.1.123,将 mcp 依赖的最低版本提高至 >=1.19.0(旧版本会悄然丢弃进程内 MCP 工具返回的 CallToolResult,导致模型只能收到验证错误数据块),并使 SandboxNetworkConfig 与 TypeScript SDK 的 schema 保持一致(allowedDomainsdeniedDomainsallowManagedDomainsOnlyallowMachLookup)。30 截至2026年8月1日,该软件包在 PyPI 上的版本为 v0.2.128(捆绑 Claude CLI v2.1.220,mcp 最低版本现为 >=1.23.0),TypeScript SDK 的版本则为 v0.3.220;0.2.x 系列是在此处所述0.1.x 功能面的基础上渐进演进而来——下文的 include_hook_eventsskills 和沙盒配置选项仍然适用——近期版本主要着力提升子进程清理和 NDJSON 流的可靠性。86

如果您的 harness 包含语音或实时层,openai-agents-python v0.17.0(2026年5月8日)已将 RealtimeAgent 的默认模型更新为 gpt-realtime-241 现有实时会话会自动采用新的默认模型;如果评估工作需要维持原有行为,请显式固定先前的模型。

2026年7月,OpenAI 侧的托管方案也增加了多智能体能力:openai-agents-python v0.18.2(7月11日)和 openai-agents-js v0.13.2(7月10日)新增公开测试版托管多智能体支持——由 OpenAI 以托管服务形式编排多个智能体,与多智能体编排一节介绍的 Anthropic Managed Multiagent Orchestration 公开测试版直接对应。73 如今,两家供应商在多智能体层面均提供了与下表单智能体方案相同的权衡:供应商负责运行委派循环,而您需要放弃 hooks 功能面。

如今,架构上的分岔已然成为现实:

维度 自托管 harness(本指南的默认方案) 托管 harness(Claude Managed Agents / OpenAI Agents SDK)
运维负担 一切均由您负责运行 供应商负责运行循环、沙盒和状态
定制能力 完全自主——由您控制 hooks、skills 和内存 有限——仅限供应商定义的扩展点
成本模型 Token + 自托管计算资源 Token + 运行时小时溢价
状态持久性 由您自行设计 供应商通过检查点确保断开连接后仍可恢复
智能体团队编排 自行构建 供应商提供多智能体协调

如何选择:对于已经具备扎实基础设施能力、希望自行掌控 skills/hooks,或需要深入优化特定工作流的团队,自托管仍是合适之选。对于缺少专职平台工程师、价值实现速度比定制能力更重要,或需要智能体在笔记本电脑合盖后仍能可靠运行且不想自行构建持久化层的团队,托管方案更为合适。两者可以兼容——自托管 harness 可以通过 REST API 将特定的长时间运行任务委派给 Managed Agents。

Harness 在磁盘上的结构

~/.claude/
├── CLAUDE.md                    # Personal global instructions
├── settings.json                # User-level hooks and permissions
├── skills/                      # Personal skills (44+)
   ├── code-reviewer/SKILL.md
   ├── security-auditor/SKILL.md
   └── api-designer/SKILL.md
├── agents/                      # Custom subagent definitions
   ├── security-reviewer.md
   └── code-explorer.md
├── rules/                       # Categorized rule files
   ├── security.md
   ├── testing.md
   └── git-workflow.md
├── hooks/                       # Hook scripts
   ├── validate-bash.sh
   ├── auto-format.sh
   └── recursion-guard.sh
├── configs/                     # JSON configuration
   ├── recursion-limits.json
   └── deliberation-config.json
├── state/                       # Runtime state
   ├── recursion-depth.json
   └── agent-lineage.json
├── handoffs/                    # Session handoff documents
   └── deliberation-prd-7.md
└── projects/                    # Per-project memory
    └── {project}/memory/MEMORY.md

.claude/                         # Project-level (in repo)
├── CLAUDE.md                    # Project instructions
├── settings.json                # Project hooks
├── skills/                      # Team-shared skills
├── agents/                      # Team-shared agents
└── rules/                       # Project rules

此结构中的每个文件都各司其职。~/.claude/ 目录树属于个人基础设施,适用于所有项目。每个仓库中的 .claude/ 目录树则针对具体项目,并通过 git 共享。二者共同构成完整的 harness。


Skills 系统

Skills 是由模型调用的扩展。Claude 会根据上下文自动发现并应用它们,无需您显式调用。4一旦发现自己在不同会话中反复解释相同的上下文,就该构建一个 skill 了。

何时构建 Skill

情形 构建… 原因
每次会话都粘贴相同的检查清单 Skill 自动激活领域专业知识
显式运行相同的命令序列 斜杠命令 由用户调用且触发条件明确的操作
需要不会干扰上下文的隔离分析 Subagent 使用独立的上下文窗口专注处理任务
需要包含特定指令的一次性提示词 无需构建 直接输入即可。并非所有内容都需要抽象。

Skills 用于存放始终可供 Claude 使用的知识。斜杠命令则用于由您显式触发的操作。如果正在两者之间权衡,请思考:“应该让 Claude 自动应用它,还是由我决定何时运行?”

创建 Skill

Skills 可以存放在以下4个位置,作用域从最广到最窄:4

作用域 位置 适用范围
企业 托管设置 组织内的所有用户
个人 ~/.claude/skills/<name>/SKILL.md 您的所有项目
项目 .claude/skills/<name>/SKILL.md 仅限当前项目
插件 <plugin>/skills/<name>/SKILL.md 启用该插件的位置

每个 skill 都需要一个包含 YAML frontmatter 的 SKILL.md 文件:

---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
  and best practice violations. Use when examining code changes, reviewing
  PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---

# Code Review Expertise

## Security Checks
When reviewing code, verify:

### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content

### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source

Frontmatter 参考

字段 必需 用途
name 唯一标识符(小写、使用连字符,最多64个字符)
description 发现触发条件(最多1024个字符)。Claude 据此判断何时应用该 skill
allowed-tools 限制 Claude 的能力(例如,使用 Read, Grep, Glob 实现只读访问)
disable-model-invocation 阻止自动激活;skill 仅通过 /skill-name 激活
user-invocable 设置为 false 可将其从 / 菜单中完全隐藏
model 覆盖 skill 激活时使用的模型
context 设置为 fork,使其在隔离的上下文窗口中运行
agent 作为 subagent 运行,并使用独立的隔离上下文
hooks 定义仅作用于此 skill 的生命周期 hooks
$ARGUMENTS 字符串替换:替换为用户在 /skill-name 后输入的内容

Description 字段至关重要

会话开始时,Claude Code 会提取每个 skill 的 namedescription,并将其注入 Claude 的上下文。发送消息后,Claude 会运用语言模型推理判断是否有相关 skill。对 Claude Code 源代码的独立分析证实了这一机制:skill 描述会被注入系统提示词的 available_skills 部分,模型再通过标准语言理解能力选择相关 skills。10

不佳的 description:

description: Helps with code

有效的 description:

description: Review code for security vulnerabilities, performance issues,
  and best practice violations. Use when examining code changes, reviewing
  PRs, analyzing code quality, or when asked to review, audit, or check code.

有效的 description 应包括:它的功能(审查代码中的特定问题类型)、使用时机(检查变更、PR 和质量分析),以及用户自然会输入的触发词(review、audit、check)。

需要注意,自动激活是一种可调机制,而非铁律:自 v2.1.215 起,Claude 不再自行调用内置的 /verify/code-review skills,只会在显式调用时运行。这是对基于 description 激活机制的一次有意收缩,因为这类重量级审查 skills 在未经请求时运行,成本往往大于收益。74

上下文预算

所有 skill 描述共享一项动态扩展的上下文预算,额度为上下文窗口的1%,并以8,000个字符作为回退值。4如果有很多 skills,请保持每条描述简洁,并优先写明核心用例。虽然可以通过 SLASH_COMMAND_TOOL_CHAR_BUDGET 环境变量覆盖预算,11但更好的解决办法是缩短描述并提高准确性。在会话期间运行 /context,可检查是否有 skills 被排除。

支持文件与组织方式

Skills 可以引用同一目录中的其他文件:

~/.claude/skills/code-reviewer/
├── SKILL.md                    # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md        # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md    # Referenced: optimization guidelines

在 SKILL.md 中使用相对链接引用它们。skill 激活后,Claude 会按需读取这些文件。请将 SKILL.md 控制在500行以内,并把详细参考资料移至支持文件。12

通过 Git 共享 Skills

项目 skills(仓库根目录中的 .claude/skills/)可通过版本控制共享:4

mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push

团队成员拉取代码后会自动获得该 skill。无需安装,也无需配置。这是在团队中统一专业知识最有效的方式。

将 Skills 用作提示词库

除了单一用途的 skills,这种目录结构还可作为井然有序的提示词库:

~/.claude/skills/
├── code-reviewer/          # Activates on: review, audit, check
├── api-designer/           # Activates on: design API, endpoint, schema
├── sql-analyst/            # Activates on: query, database, migration
├── deploy-checker/         # Activates on: deploy, release, production
└── incident-responder/     # Activates on: error, failure, outage, debug

每个 skill 都承载您专业知识的一个不同侧面。它们共同构成知识库,Claude 会根据上下文自动调用。即使是初级开发者,也能在无需主动询问的情况下获得高级开发者级别的指导。

Skills 与 Hooks 组合使用

Skills 可以在 frontmatter 中定义自己的 hooks,这些 hooks 仅在 skill 运行期间激活。由此可创建领域特定的行为,而不会干扰其他会话:2

---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
  release, or push to production.
hooks:
  PreToolUse:
    - matcher: Bash
      hooks:
        - type: command
          command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---

理念型 skills 通过 SessionStart hooks 自动激活,无需显式调用即可向每个会话注入质量约束。skill 本身承载知识,hook 负责强制执行。二者结合,构成一层策略机制。

Skills 的常见错误

描述过于宽泛。 如果 git-rebase-helper skill 会因任何与 git 有关的提示词而激活(包括 rebase、merge、cherry-pick,甚至 git status),就会污染80%的会话上下文。解决办法是收紧描述,或添加 disable-model-invocation: true,要求通过 /skill-name 显式调用。4

过多 skills 争夺预算。 Skills 越多,争夺1%上下文预算的描述就越多。如果发现某些 skills 未能激活,请通过 /context 检查它们是否被排除。与其保留大量含糊的 skills,不如优先维护少量描述清晰的 skills。

关键信息深埋在支持文件中。 Claude 会立即读取 SKILL.md,但只在需要时访问支持文件。如果关键信息位于支持文件中,Claude 可能找不到它。请将必要信息直接写入 SKILL.md。4

SDK Skill 接口(2026年5月8日)

基于 claude-agent-sdk-python v0.1.77+ 的自托管 harness 应通过 ClaudeAgentOptionsskills 选项声明可用 skills,而不是继续在 allowed_tools 中使用旧版 "Skill" 值。37"Skill" 简写形式已被弃用;专用选项能向 Claude Code 提供结构更清晰的可用 skills 信息。v0.1.77 内置的 CLI 版本为 v2.1.133。

.claude/skills/ 中 Plugin 与 Skill 的融合(2026年5月29日)

Skills 一直从项目的 .claude/skills/ 目录加载。Claude Code v2.1.157 将此目录的支持范围扩展到了插件:如今,将插件放入 .claude/skills/ 即可自动加载,无需在 marketplace 中注册;claude plugin init <name> 也会在此处搭建一个新插件,并预先配置好 manifest 和 SKILL.md。58这一变化弥合了两种项目工具形态之间的鸿沟。过去,一种是直接提交到仓库的独立 skill;另一种是将 skill、hooks 和 MCP 服务器捆绑在一起,却必须通过 marketplace 安装的插件。对于 harness 设计,其实际意义在于:项目级工具不再需要绕道 registry 才能交付——编写、提交,团队成员执行 git pull 后即可获得相同的工具接口。插件仍然适用于捆绑式可安装场景(将 hooks、skills、MCP 服务器和 agents 打包在同一个 ZIP 中);变化在于,项目无需再为了从自身目录树加载插件而专门搭建 marketplace。

将隐藏内置接口作为治理手段(2026年6月8日)

Skills 代表能力,而能力也意味着攻击面。Claude Code v2.1.169 新增了 disableBundledSkills 设置(以及对应的 CLAUDE_CODE_DISABLE_BUNDLED_SKILLS 环境变量),可对模型完全隐藏内置 skills、workflows 和内置斜杠命令。60对于经过加固或受到监管的 harness,这是一项有意为之的攻击面削减措施:如果运维人员已经审核并批准了一组特定的项目和个人 skills,就可以屏蔽 Anthropic 随附的全部功能,使模型始终只在经过审核的接口范围内进行推理。应像对待工具允许列表一样对待此设置——默认配置提供广泛能力,而关闭默认能力是一项治理决策,并非单纯为了方便的开关。

嵌套 .claude/skills 与最近者优先解析(2026年6月16日)

Claude Code v2.1.178 让项目工具具备了位置感知能力。在嵌套的 .claude/skills 目录中定义的 skills,如今会在处理该目录下的文件时加载,不再局限于仓库根目录;如果出现名称冲突,嵌套 skill 会显示为 <dir>:<name>,因此二者仍可访问。63同一版本还让项目的其余接口按照离工作目录最近的原则解析:当嵌套 .claude/ 目录中的 agent、workflow 或输出样式发生名称冲突时,以最接近工作目录的定义为准;保存项目作用域的 workflow 时,也会写入最近的现有 .claude/workflows/,而不是一律保存到根目录。63对于 monorepo 或仓库套仓库的结构而言,这意味着项目不再只有一个扁平的全局接口,而是可以拥有按上下文激活的包级工具。例如,services/api/.claude/skills/ 可以包含仅在该目录树中工作时才显示的 API 专用 skills,并且不会与 services/web/ 中同名的 skill 冲突。


Hook Architecture

Hooks是由Claude Code生命周期事件触发的shell命令。3它们在LLM之外以普通脚本形式运行,而不是由模型解释的提示词。模型想运行rm -rf /?一段10行的Bash脚本会根据阻止列表检查该命令,并在shell看到它之前将其拒绝。无论模型是否愿意,hook都会触发。

可用事件

截至本指南更新时,Claude Code提供了分为8类的30个有文档记录的生命周期事件。事件列表会随版本发布不断扩充,因此请以参考文档为准;在配置生产环境hooks之前,请查看速查表中的最新完整表格:13

类别 事件 能否阻止?
会话 SessionStart, Setup, SessionEnd
用户/完成 UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle 提示词/扩展/停止/空闲事件可以阻止;StopFailure不能
工具 PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch 使用前/权限/批处理事件可以阻止;使用后事件不能
Subagent/任务 SubagentStart, SubagentStop, TaskCreated, TaskCompleted 停止/任务事件可以阻止;启动事件不能
上下文 PreCompact, PostCompact, InstructionsLoaded PreCompact可以阻止;压缩后/加载事件不能
文件系统/工作区 CwdChanged, DirectoryAdded, FileChanged, WorktreeCreate, WorktreeRemove worktree创建事件可以阻止;其他事件不能
配置/通知 ConfigChange, Notification 配置更改可以阻止,策略设置除外;通知不能
MCP Elicitation, ElicitationResult
最近有两项改进对后台和多代理harness尤为重要。自v2.1.198起,后台claude agents会话会触发Notification hook,其触发值为agent_needs_inputagent_completed。这样,协调器便能在代理集群成员因提示而阻塞或完成任务时立即响应——这相当于由通知驱动的claude agents --json轮询机制。自v2.1.199起,SessionStartSetupSubagentStart hooks在以代码2退出时会显示stderr(此前该输出会被静默丢弃)。因此,当启动或subagent启动hook失败时,现在会说明原因,而不再无提示地失败。

DirectoryAdded(v2.1.219)弥补了会话中途的工作区缺口。MessageDisplay在v2.1.152中加入以来,事件列表一直保持稳定;DirectoryAdded是此后首个新增的生命周期事件。它会在/add-dir或SDK的register_repo_root控制请求于会话进行期间注册新工作目录后触发。84它所弥补的缺口确实存在:此前,即使harness在SessionStart时对工作区进行了详尽验证,第二个存储库仍可能在完全不触发hook的情况下被接入。启动时针对工作区执行的任何断言——信任检查、密钥扫描、根据目录树推导的路径范围规则、按存储库加载策略——都需要在此处重新运行,因为会话的目录集合不再于启动时固定不变。该事件仅提供信息,不具备阻止能力,因此应将其作为重新推导状态和记录来源的触发器,而非gate;如果某个目录绝不允许添加,应在settings中将其拒绝,而不是试图通过hook否决。SDK端的支持也在同一版本落地(TypeScript v0.3.219将DirectoryAdded添加到控制协议生命周期事件中),因此,由SDK托管的harness与CLI托管的harness可以同等处理该事件。85

退出代码语义

退出代码决定hooks是否阻止操作:3

退出代码 含义 操作
0 成功 操作继续。详细模式下显示stdout。
2 阻止性错误 操作停止。Stderr会成为反馈给Claude的错误消息。
1、3等 非阻止性错误 操作继续。Stderr仅在详细模式下显示(Ctrl+O)。
关键:每个安全hook都必须使用exit 2,而不是exit 1。退出代码1只表示非阻止性警告,危险命令仍会执行。这是各团队最常见的hook错误。14

Hook配置

Hooks位于settings文件中。项目级hooks放在.claude/settings.json中,用于共享;用户级hooks放在~/.claude/settings.json中,用于个人配置:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/validate-bash.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
          }
        ]
      }
    ]
  }
}

matcher字段用于筛选特定于事件的值。对于工具事件,它会匹配tool_name值,例如BashEditWriteReadGlobGrep、类似mcp__server__tool的MCP工具名称,或用于匹配所有工具的*。简单名称和以|分隔的列表执行精确匹配;包含其他字符的值则视为JavaScript正则表达式。部分事件不支持matcher,只要完成配置就会始终触发。13自Claude Code v2.1.195起,包含带连字符标识符code-reviewermcp__brave-search)的matcher会执行精确匹配,不再意外进行子字符串匹配。因此,针对某个代理或服务器的hook,不会再对名称中仅包含该字符串的所有对象触发;若要涵盖来自带连字符MCP服务器的所有工具,请明确写出模式mcp__brave-search__.*66v2.1.214将同样的规范应用于路径模式:hook的if:条件使用单段dir/**模式时,现在只匹配<cwd>/dir,而不会匹配目录树任意位置所有名为dir的目录;只有在确实需要匹配任意深度时,才应写成**/dir/**74与v2.1.195中的更改一样,此项修复以明确声明的意图取代了意外的宽泛匹配;请审查所有曾暗中依赖旧版任意深度行为的hook条件。

Hook输入/输出协议

Hooks通过stdin接收包含完整上下文的JSON:

{
  "tool_name": "Bash",
  "tool_input": {
    "command": "npm test",
    "description": "Run test suite"
  },
  "session_id": "abc-123",
  "agent_id": "main",
  "agent_type": "main"
}

如需进行高级控制,PreToolUse hooks可以输出JSON,以修改工具输入、注入上下文或作出权限决策。请使用hookSpecificOutput包装器——对于PreToolUse,旧版顶层decision/reason格式已弃用:

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "allow",
    "permissionDecisionReason": "Command validated and modified",
    "updatedInput": {
      "command": "npm test -- --coverage --ci"
    },
    "additionalContext": "Note: This database has a 5-second query timeout."
  }
}

三类保证

编写任何hook之前,请先思考:我需要哪种保证?14

格式保证确保事后的一致性。针对Write/Edit的PostToolUse hooks会在每次文件更改后运行格式化程序。模型输出的具体形式并不重要,因为格式化程序会统一规范所有内容。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
          }
        ]
      }
    ]
  }
}

安全保证在危险操作执行前加以阻止。针对Bash的PreToolUse hooks会检查命令,并使用退出代码2阻止破坏性模式:

#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')

if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
    echo "BLOCKED: Dangerous command detected: $CMD" >&2
    exit 2
fi

质量保证在决策点验证状态。针对git commit命令的PreToolUse hooks会运行代码检查工具或测试套件,并在质量检查失败时阻止提交:

#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')

if echo "$CMD" | grep -qE "^git\s+commit"; then
    if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
        echo "LINT FAILED -- fix before committing:" >&2
        echo "$LINT_OUTPUT" >&2
        exit 2
    fi
fi

shell命令以外的Hook类型

Claude Code支持5种hook类型:13

命令hookstype: "command")运行shell脚本。速度快、结果确定,而且不消耗token。 MCP 工具 hookstype: "mcp_tool")会调用已连接的 MCP 服务器上的工具。当验证逻辑已位于 MCP 边界之后,且无需单独的 shell 脚本时,请使用此类 hooks。

Prompt hookstype: "prompt")会向快速 Claude 模型发送单轮提示。模型返回 { "ok": true } 表示允许,或返回 { "ok": false, "reason": "..." } 表示阻止。适用于正则表达式无法涵盖的细致评估。

Agent hookstype: "agent")会生成一个具备工具访问权限(Read、Grep、Glob)的 subagent,以执行多轮验证。此功能仍处于实验阶段;生产环境的 gates 应优先使用 command hooks,仅将 agent hooks 用于确实需要检查实际文件或测试输出的检查:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "agent",
            "prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
            "timeout": 120
          }
        ]
      }
    ]
  }
}

自 Claude Code v2.1.140 起,agent hook 输入包含 subagent_type,使共享 hook 无需根据提示文本进行猜测,即可区分 security-reviewer、explorer 或通用 worker 的运行任务。49

HTTP hookstype: "http")将事件的 JSON 输入作为 POST 请求发送到 URL,并接收返回的 JSON。适用于 webhooks、外部通知服务或基于 API 的验证(v2.1.63+)。不支持 SessionStart 事件:

{
  "hooks": {
    "PostToolUse": [
      {
        "hooks": [
          {
            "type": "http",
            "url": "https://your-webhook.example.com/hook",
            "headers": { "Authorization": "Bearer $WEBHOOK_TOKEN" },
            "allowedEnvVars": ["WEBHOOK_TOKEN"],
            "timeout": 10
          }
        ]
      }
    ]
  }
}

异步 Hooks

Hooks 可以在后台运行而不阻塞执行。对于通知和日志记录等非关键操作,请添加 async: true13

{
  "type": "command",
  "command": ".claude/hooks/notify-slack.sh",
  "async": true
}

异步模式适用于通知、遥测和备份。切勿将其用于格式化、验证或任何必须在下一步操作前完成的任务。

使用 Dispatchers 取代独立 Hooks

如果7个 hooks 均由同一事件触发,并分别独立读取 stdin,就会产生竞态条件。两个 hooks 同时写入同一个 JSON 状态文件会截断其中的 JSON,导致所有解析该文件的下游 hooks 失效。2

解决方法是:为每个事件设置一个 dispatcher,使用缓存的 stdin 依次运行 hooks:

#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"

for hook in "$HOOK_DIR"/*.sh; do
    [ -x "$hook" ] || continue
    echo "$INPUT" | "$hook"
    EXIT_CODE=$?
    if [ "$EXIT_CODE" -eq 2 ]; then
        exit 2  # Propagate block
    fi
done

调试 Hooks

以下5种技巧可用于调试无声失败的 hooks:14

  1. 单独测试脚本。 通过管道传入示例 JSON:echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh
  2. 使用 stderr 输出调试信息。 退出代码2对应的 stderr 会作为错误消息反馈给 Claude。非阻塞 stderr(退出代码1、3等)仅在详细模式(Ctrl+O)下显示。
  3. 留意 jq 失败。 错误的 JSON 路径会悄无声息地返回 null。请使用真实的工具输入测试 jq 表达式。
  4. 验证退出代码。 使用 exit 1 的 PreToolUse hook 看似正常工作,实际上毫无强制约束作用。
  5. 保持 hooks 快速运行。 Hooks 会同步运行。所有 hooks 的耗时应控制在2秒以内,最好低于500毫秒。

SDK 端 Hook 事件流

基于 claude-agent-sdk-python(v0.1.74+,2026年5月6日)构建的自托管 harness,可以直接从消息流订阅 hook 事件,无需通过 shell 脚本回调。36ClaudeAgentOptions 上设置 include_hook_events=True 后,HookEventMessage 对象(PreToolUse、PostToolUse、Stop 等)会与助手消息和工具结果通过同一迭代器产出。这与 TypeScript SDK 的 includeHookEvents 选项相对应;同一版本还将捆绑的 CLI 升级至 v2.1.129。

如果 harness 已在 Python 中运行,并希望 hook 信号与模型输出处于同一控制流中,事件流模式最为合适。对于需要组合多个工具、在 Claude Code 与 Codex 之间共享 hooks,或需要利用退出代码语义实现阻止机制的 harness,shell 脚本 hook 契约(退出代码、stdin JSON、dispatchers)仍是恰当选择。

TypeScript SDK 在2026年7月发布的一系列版本(v0.3.205–v0.3.208)进一步明确了流式协议的契约。70 中断现在会返回类型化回执:中断通过 still_queued UUID 确认哪些已排队消息仍在等待处理;会话则在 system/init 中声明 interrupt_receipt_v1 能力,使协调器能够区分“中断已生效”和“中断与已在传输中的消息擦肩而过”。command_lifecycle会分别报告每条消息的已排队、已启动、已完成、已取消和已丢弃状态。这是第一方首次无需推断会话记录,便能回答“我发送的消息发生了什么”。此外还引入了一些较小的接口改进:用于 subagent 完成载荷的 AgentToolCompletedOutput 类型,以及 canUseTool 回调现在可以返回不含 updatedInput 字段的 {behavior: 'allow'}

该系列中有一项属于安全底线,而非普通功能:v0.3.208 修复了调用方在 hook 等待期间发出的中止被转换为 hook 成功的问题——这意味着受 PreToolUse hook 约束的工具可能在调用方中止后仍然执行。70 如果您的 harness 使用 SDK 端 hooks 作为权限 gate,并依赖中止操作取消进行中的任务,请将 v0.3.208 视为最低版本;在更早版本中,“已中止”并不可靠地等同于“已阻止”。Python v0.2.127(2026年7月24日)是一个月内第二次出现此类绕过:当后台 subagents 仍在运行时,query() 会在收到第一个 result 帧后关闭 stdin,导致其 SDK-MCP 工具调用因 "Stream closed" 而失败,且完全绕过 PreToolUse hooks。85 应明确识别并警惕这一模式:SDK 端 hook 的强制约束会在生命周期边缘失效并放行——例如中止、拆除或流关闭。此时,传输连接会在收集到 hook 裁决之前终止。更棘手的是,这种失败悄无声息,因为被绕过的 hook 与批准操作的 hook 看起来毫无区别。请固定两个 SDK 的最低版本,并保留能够确凿验证其强制约束效果的 shell-hook 层。

Effort 与会话来源(2026年5月7日至8日)

Claude Code v2.1.132 和 v2.1.133 引入的两项功能,为 hooks 和子进程提供了更丰富的执行上下文信号:3839

  • hook 输入中的 effort.level Hooks 现在会在承载 tool_inputsession_id 的同一输入中接收 effort.level JSON 字段。相同的值也会导出为 $CLAUDE_EFFORT 环境变量,因此 Bash 命令无需解析 JSON 即可读取。可以根据 effort 层级调整 hook 成本:在 low 层级跳过高成本验证,在 xhighmax 层级运行完整的安全 gate。
  • Bash 子进程中的 CLAUDE_CODE_SESSION_ID 环境变量。 Bash 工具子进程现在可以通过 CLAUDE_CODE_SESSION_ID 获取 hooks 所看到的同一个 session_id 值。这弥补了来源追踪方面的缺口:此前,按会话记录状态的工具无法将子进程事件与 hook 事件关联起来。

这两种信号无需修改代码即可使用;忽略新字段的现有 hooks 仍可正常工作。

autoMode.hard_deny 与 v2.1.136 Hook/Plugin 修复(2026年5月8日)

Claude Code v2.1.136 为自动模式新增了一个 hard-deny 层级,并修复了一批影响长时间运行 harness 的 plugin 和 MCP 问题:40 - settings.autoMode.hard_deny Auto mode分类器中无条件阻止操作的规则,不受用户意图或允许例外影响。它位于现有允许/拒绝匹配器之上,是不容妥协的治理手段。对于绝不能被覆盖的规则(强制推送到main、包含密钥的文件、访问生产数据库),即使操作员已在个人设置中批准相应的大类,也应使用此设置。 - autoMode.classifyAllShell(v2.1.193)。 默认情况下,auto mode分类器只审查与任意代码执行模式匹配的shell命令。此设置会将每一条Bash/PowerShell命令都交由分类器处理,为受治理的harness提供最大覆盖范围。同一版本还会在记录、提示消息和/permissions中显示拒绝原因,将悄无声息的阻止转化为可审计的决策。Codex在v0.142.2中收紧了对应机制:如果PowerShell命令包含安全分类器无法检查的可执行AST区域,现在必须获得批准,而不会再被悄然放行。66 - Hook的ask为分类器设定下限(v2.1.211)。 hook与auto mode之间的优先级问题现已明确:如果PreToolUse hook返回ask权限决策,最终结果至少必须提示用户——对于未在沙箱中运行的Bash命令,auto mode无法再将其提升为允许。69 对受治理的harness而言,这正是此前缺失的保障层级:hook的ask会形成确定性的人机协同检查点,即便权限策略完全自动化也始终有效。对于需要人工决策而非直接拒绝的操作,请使用ask(而不只是退出码为2的阻止)。 - 分类器模型在每个会话中固定(v2.1.210)。 auto mode分类器默认使用Sonnet 5,并在会话期间保持固定,因此会话中途切换模型不再改变执行权限分类的模型。分类一致性是治理的一项基本属性;此项改动消除了一个不易察觉的漂移来源。 - MCP服务器在/clear后不再消失。 在VS Code扩展、JetBrains插件和Agent SDK中执行/clear后,通过.mcp.json、plugins和claude.ai连接器配置的服务器曾会悄然从活动集合中消失。该问题已在v2.1.136中修复。如果您曾遇到“MCP服务器X在会话中途消失”,原因正是如此。 - 并发刷新导致MCP OAuth刷新令牌丢失。 使用多个远程MCP服务器的用户应该不再需要每天重新进行身份验证。此前,并发刷新写入会相互覆盖。 - Plan mode现在能够正确阻止文件写入。 匹配的Edit(...)允许规则曾会绕过plan mode的写入保护。现在,无论是否存在允许规则,都会强制执行plan mode。 - Plugin的StopUserPromptSubmit hooks在会话中途不再失败。 缓存清理曾会删除当前会话仍在使用的plugin版本文件,导致这两个特定hook事件失效。修复后,正在使用的版本会保持固定。 - plugin.json中的skills条目。 设置skills曾会隐藏plugin的默认skills/目录。现在该条目可以正确组合;如果将其指向文件路径,系统会明确报错,而不再悄然失败。 - CLAUDE_ENV_FILE SessionStart hook环境变量过期。 SessionStart hooks通过CLAUDE_ENV_FILE导出的变量在/resume/clear后曾会过期。该问题已在v2.1.136中修复。现在,会话会在这些事件发生时重新加载环境文件。

对于治理型harness,值得重点关注的操作项是autoMode.hard_deny(新增治理手段)和MCP消失问题的修复(这种无声故障会破坏长时间运行的会话)。其余改动主要是易用性优化。

结构化Hook参数与阻止后的继续执行(2026年5月11日)

Claude Code v2.1.139新增了两个对生产harness至关重要的hook细节:用于命令hooks的args: string[]执行形式,以及用于PostToolUse hooks的continueOnBlock4244 当hook需要动态值或路径占位符时,优先使用args。它无需shell即可直接启动命令,从而消除一整类引号转义和注入错误。

如果PostToolUse hook需要将拒绝原因反馈给Claude,并继续当前轮次而非终止流程,请使用continueOnBlock。应将其视为改善操作员体验的功能,而不是绕过安全控制的手段。阻止型门禁仍须阻止不安全的结果。

同一版本还会将CLAUDE_PROJECT_DIR传递给MCP stdio服务器,并允许plugin配置在命令中引用${CLAUDE_PROJECT_DIR}42 MCP工具应依据该值解析项目相对路径,而不是依赖碰巧启动服务器的进程工作目录。2026年7月初发布的版本(v2.1.203–v2.1.206)将同一原则扩展到了协议层:MCP roots/list现在包含会话的其他工作目录,并会在目录变化时发送roots/list_changed通知。因此,遵循MCP roots的服务器能够跟踪多目录工作区的实际结构,而不会假定只有一个项目目录。68

对于harness操作员而言,Claude Code v2.1.140主要是一个可靠性版本:它修复了设置变更时ConfigChange hooks未触发的问题,解决了disableAllHooksallowManagedHooksOnly在不同设置层级无法正确协同的边缘情况,并阻止权限对话框暴露hook结果返回的非预期环境变量。49 这些改动使本节已有的治理模式更加可靠,无需采用新的hook架构。

Claude Code v2.1.141为hook输出新增了terminalSequence字段,可在没有控制终端的情况下用于桌面通知、窗口标题和响铃。50 应将其视为操作员信号机制,而非强制执行手段。安全与质量门禁仍应通过常规阻止约定来传达失败:使用结构化hook输出,并配合能够阻止不安全操作的退出行为。同一版本还新增了claude agents --cwd <path>,用于将Agent View限定在一个目录;新增CLAUDE_CODE_PLUGIN_PREFER_HTTPS,用于在缺少GitHub SSH密钥的环境中安装plugin;并新增ANTHROPIC_WORKSPACE_ID,用于覆盖多个工作区的工作负载身份联合规则。50 对团队harness而言,这些都是架构层面的细节:更聚焦的运维视图、更少的plugin安装前提假设,以及明确的企业令牌作用域。

与hook语义相比,Claude Code v2.1.142对于后台会话编排更为重要。51 claude agents现在可以使用明确的目录、设置、MCP、plugin、权限、模型和effort标志来调度后台会话,不再依赖封装程序的状态。该版本发布时,fast mode默认使用Opus 4.7;如果某个harness经过测量后确认依赖Opus 4.6的行为,可以使用CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1将其固定——截至v2.1.219,Opus 4.7已完全退出fast mode,/fast适用于Opus 5和Opus 4.8。84 对plugin根目录SKILL.md的发现支持,以及plugin提供的LSP可见性,减少了打包歧义。针对MCP_TOOL_TIMEOUT、已有后台会话worktrees、守护进程休眠/唤醒与升级后清理,以及plugin缓存清理的修复,弥补了若干可靠性缺口;否则,这些问题很容易被误判为编排故障。

Stop-hook引导、跨会话权限与multi-agent v2(2026年6月)

6月初的4项改动对harness和multi-agent设计具有重要意义。59

Stop/SubagentStop hooks新增了引导通道。 自Claude Code v2.1.163起,StopSubagentStop hook可以返回hookSpecificOutput.additionalContext,向Claude提供反馈并让当前轮次继续执行,同时不会将响应标记为hook错误。在此之前,Stop hook唯一真正有效的手段是通过退出码2进行阻止,但这会显示为错误,并计入连续阻止次数上限。对于质量门禁harness,这是更简洁妥当的基础机制:当Stop hook检测到“您声称已经完成,但测试仍未通过”时,现在可以注入“以下问题仍未解决,请继续处理”,而不必强行阻止。真正需要停止时使用阻止机制;对于“尚未完成,原因如下”的情况,则使用additionalContext

跨会话消息不再携带借用的权限。 v2.1.166强化了多会话场景:通过SendMessage从另一个Claude会话转发的消息不再携带原用户的权限,因此接收会话会拒绝转发的权限请求,auto mode也会将其阻止。如果您的编排允许agents相互发送消息,应将传入消息视为不可信数据,而非经过身份验证的指令。这与安全部分针对工具输出采用的原则相同,只是扩展到了agent间消息传递。截至v2.1.199,当两个agents名称相同而导致SendMessage路由错误时,Claude Code还会检测并发出警告。这是对上述权限边界的可靠性补充,因为消息抵达错误的同名agent本身就是一类编排故障。 模型韧性已成为一项一等设置。 fallbackModel设置现在可串联最多3个备用模型。当主模型过载或不可用时,会按顺序尝试这些模型;如果发生意外且不可重试的API错误,则会使用备用模型自动重试当前轮次一次。对于长时间运行的自主 harness,这能将主模型的暂时中断转化为平稳降级,而不是导致整个运行中止。claude agents --json还新增了waitingFor字段(v2.1.162),用于显示受阻的后台会话正在等待什么,例如权限提示。这显著提升了协调器轮询代理集群时的可观测性。

用于净室治理和故障排除的安全模式。 Claude Code v2.1.169新增了--safe-mode标志(以及对应的CLAUDE_CODE_SAFE_MODE环境变量),可在启动会话时一次性禁用所有自定义项:CLAUDE.md、插件、skills、hooks和MCP服务器。60这与 harness 恰恰相反,是一种有意构建的净室环境。每位运维人员最终都会追问:“这种行为究竟来自模型,还是来自我的某项配置?”安全模式正是用来回答这个问题的。当 hook 错误触发、skill 在不应激活时被激活,或MCP服务器污染上下文时,--safe-mode会提供一个已知为空的基线,便于进行差异对比。它也是一种治理原语:让您能够运行不带任何持久权限的纯模型,而这些权限通常由 harness 授予。当需要复现结果,又不希望任何运维人员定义的支撑结构施加影响时,这一点至关重要。

关于模型层级的说明。 自Claude Code v2.1.197(2026年6月30日)起,Claude Sonnet 5成为新会话随产品提供的默认模型。它原生支持1M上下文,并在8月31日前提供每百万 token 2美元/10美元的促销价格,取代 Opus 4.8成为开箱即用的选择。本指南将Opus 5(claude-opus-5)作为推荐的智能体默认模型:除非有意选择其他模型,否则自主 harness 应使用该模型运行。原因在于,长周期、高风险的智能体循环正是 Opus 的推理深度物有所值之处。Opus 5于2026年7月24日随Claude Code v2.1.219发布,成为新的默认 Opus:支持1M上下文,每百万 token 5美元/25美元(与其取代的 Opus 4.8价格相同),快速模式的价格为10美元/50美元,速度约为默认模式的2.5倍。Anthropic报告称,它在 Frontier-Bench v0.1上的成绩超过 Opus 4.8的两倍,而在 CursorBench 3.2上的得分与 Fable 5相差不到0.5%,成本却只有后者的一半。8487价格不变、能力更强,而且Anthropic将其描述为“更擅长验证自身工作并谨慎迭代”。这种升级难能可贵,对 harness 工作而言,无须再从成本角度加以论证;从4.8迁移只需更改 ID。对于成本敏感或高吞吐量的任务,可降级使用 Sonnet 5,其速度与智能水平之比更具优势。Opus 之上还有Claude Fable 5claude-fable-5),于2026年6月9日发布。这是一个全新层级,被称为Anthropic最强大的模型,是一套可供通用场景安全使用的“Mythos-class”系统;在Claude Code v2.1.170中,可通过/model claude-fable-5选择该模型。60应有的放矢地使用这一更高层级,只将其用于原始推理深度足以证明成本合理的决策,而不要将其设为整个代理集群的通用配置。Opus 5切换还带来两项维护层面的变化:Opus 4.7已退出快速模式(/fast现在适用于 Opus 5和 Opus 4.8);自动模式分类器的 Fable-5 fallback 自 v2.1.176起会选择“当前最佳的 Opus 模型”,如今该模型即为 Opus 5。84

Codex发布了 multi-agent v2。 Codex CLI v0.137.0让每个线程自行保留运行时选择,为生成的代理提供了更简洁的后续交互和元数据默认值(hide_spawn_agent_metadata现在默认为 true),并将原始父级事件传播给子级监听器。其 subagent 模型仍然明确:内置 default/worker/explorer 代理类型、通过 TOML 定义的自定义代理,以及并发控制(agents.max_threads默认为6,agents.max_depth默认为1)。同一版本还新增了 v1 skills 扩展,支持按轮次解析 skill 目录,并加入新的线程启动和轮次错误生命周期贡献者事件。这缩小了其与Claude Code的 hook/skill 功能差距,同时继续将内核沙箱策略作为默认边界。随后,Codex v0.138.0–v0.139.0进一步强化 multi-agent v2,使其适用于生产环境:代理间消息载荷现已加密;v2代理配置目录与代理驻留 LRU共同管理哪些代理保持驻留;并发量则按活跃执行而非已生成线程计算,因此空闲代理不再占用槽位。61生命周期API也更加成熟——close_agent在 v0.139.0中更名为interrupt_agent,准确反映其作用是中断正在运行的代理,而非仅仅关闭句柄。此外,subagent 引发的MCP启动警告现在仅限于所属线程,不再向上重复出现在父级转录记录中。61对于构建 Codex 侧编排的人员而言,这些正是演示原型与生产集群之间的分水岭:加密的消息传输、受限的驻留规模、按执行计数的并发机制,以及不会跨越线程边界泄漏的警告。随后,Codex v0.140.0又打通了一条跨工具通道:/import可选择性地将设置、项目配置和近期聊天从Claude Code导入 Codex;会话也支持永久删除(codex delete / /delete,并配有确认保护措施)。64/import首次正式承认运维人员会在不同 harness 之间切换——为某个工具构建的配置不再被困于其中。


记忆与上下文

每次 AI 对话都受限于有限的上下文窗口。随着对话不断推进,系统会压缩较早的轮次,为新内容腾出空间。这种压缩会造成信息损失。第 3 轮记录的架构决策到第 15 轮时可能已经丢失。9

多轮对话崩溃的三种机制

MSR/Salesforce 的研究发现了三种相互独立的机制,每种机制都需要采用不同的干预措施:9

机制 具体情况 干预措施
上下文压缩 为容纳新内容而丢弃较早的信息 将状态检查点保存到文件系统
推理一致性丧失 模型在不同轮次中与自己先前的决策相矛盾 全新上下文迭代(Ralph loop)
协调失败 多个 agent 持有不同的状态快照 agent 之间采用共享状态协议

策略 1:以文件系统作为记忆

跨越上下文边界时,最可靠的记忆存储在文件系统中。Claude Code 会在每次会话开始时以及每次压缩后读取 CLAUDE.md 和记忆文件。6

~/.claude/
├── configs/           # 14 JSON configs (thresholds, rules, budgets)
│   ├── deliberation-config.json
│   ├── recursion-limits.json
│   └── consensus-profiles.json
├── hooks/             # 95 lifecycle event handlers
├── skills/            # 44 reusable knowledge modules
├── state/             # Runtime state (recursion depth, agent lineage)
├── handoffs/          # 49 multi-session context documents
├── docs/              # 40+ system documentation files
└── projects/          # Per-project memory directories
    └── {project}/memory/
        └── MEMORY.md  # Always loaded into context

MEMORY.md 文件用于记录跨会话的错误、决策和模式。当您发现 VAR 为 0 时,((VAR++)) 在启用 set -e 的 bash 中会失败,便可将其记录下来。三个会话后,当您在 Python 中遇到类似的整数边界情况时,MEMORY.md 中的条目就会呈现这一模式。15

Auto Memory(v2.1.32+):Claude Code 会自动记录和回忆项目上下文。在工作过程中,Claude 会将观察结果写入 ~/.claude/projects/{project-path}/memory/MEMORY.md。会话开始时,Auto memory 会将前 200 行加载到系统提示词中。请保持内容精简,并通过链接指向单独的主题文件来记录详细信息。6 自 v2.1.210 起,写入 MEMORY.md 的内容如果超过大小限制,系统会报错,而不再静默截断69——故障会在写入时显现,而不会让记忆条目悄无声息地消失。如果您的 harness 会自动写入记忆,请妥善处理此错误;平台是在提示您该文件需要整理,而不是要求重试。

重视记忆整理,而非记忆数量(2026年5月):最近一篇关于 LLM-agent 协作的 arXiv 预印本指出,扩展回忆范围可能成为一种故障模式:在作者的实验中,更长的可见历史记录导致 28 种模型博弈设置中的 18 种协作效果下降。48 应将其视为设计警示,而非已成定论的法则。生产环境中的规则已经足够明确:保持 MEMORY.md 简短,通过链接指向详细内容,并在交接文档中提供可直接用于决策的摘要。原始对话记录、工具日志和冗长的回忆内容应存入可搜索的存储系统,而不应自动注入当前提示词。

策略 2:主动压缩

Claude Code 的 /compact 命令会总结对话并释放上下文空间,同时保留关键决策、文件内容和任务状态。15

何时进行压缩: - 完成一个独立子任务后(功能已实现、错误已修复) - 开始处理代码库中的新区域之前 - 当 Claude 开始重复内容或遗忘先前上下文时 - 在高强度会话期间,大约每 25-30 分钟一次

CLAUDE.md 中的自定义压缩指令:

# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session

压缩可以保护对话;而 /cd 命令(Claude Code v2.1.169)则用于保护提示词缓存。它可以在不中断当前流程的情况下,将会话迁移到新的工作目录,同时保留本轮对话中已经积累的缓存。60 此前,更改目录意味着必须启动新会话,并从冷缓存开始。对于需要从一个代码仓库转向同级仓库的长时间会话——这在单体仓库和多服务工作中十分常见——/cd 能够保留成本高昂的缓存前缀,同时重新定位文件系统上下文。

策略 3:会话交接

对于跨越多个会话的任务,请创建能够记录完整状态的交接文档:

## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py

Status/Files/Decision/Blocked/Next 结构能够以极低的 token 成本,为后续会话提供完整上下文。使用 claude -c(继续)启动新会话或读取交接文档,即可直接进入实现阶段。15

策略 4:全新上下文迭代(Ralph Loop)

对于持续时间超过 60-90 分钟的会话,每次迭代都应启动一个全新的 Claude 实例。状态通过文件系统持久化,而不是依赖对话记忆。每次迭代都能获得完整的上下文预算:16

Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria

与单个长会话对比:

Minute 0:   [200K tokens available] -> productive
Minute 30:  [150K tokens available] -> somewhat productive
Minute 60:  [100K tokens available] -> degraded
Minute 90:  [50K tokens available]  -> significantly degraded
Minute 120: [compressed, lossy]     -> errors accumulate

每次迭代使用全新上下文的方法,会在定位阶段产生 15-20% 的额外开销(读取状态文件、扫描 git 历史记录),换来每次迭代都能使用完整的认知资源。16 成本效益分析表明:对于不超过 60 分钟的会话,单次对话效率更高;超过 90 分钟后,尽管存在额外开销,全新上下文仍能产出质量更高的结果。

策略 5:托管式记忆整理(Dreaming)

Anthropic 的 Claude Managed Agents 于 2026年5月6日新增了 Research Preview 功能 Dreaming35 根据 Anthropic 的说明:“Dreaming 是一种定期运行的流程,它会审查您的 agent 会话和记忆存储,提取模式并整理记忆,使您的 agent 能够不断改进。”35

Dreaming 在会话之间于后台运行,不处于关键路径之上。它是对“以文件系统作为记忆”模式的补充,而非替代:MEMORY.md 文件仍然是承载核心状态的基础;Dreaming 会将整理后的记忆条目写入 Managed Agents 记忆存储,agent 则会在会话开始时读取这些内容。对于同时采用自托管文件系统状态和托管端整理机制的 harness,这两种模式可以并行共存。

文件系统记忆 Dreaming(托管式)
记忆存储位置 您的代码仓库,由版本控制管理 Anthropic 托管的记忆存储
更新时间 由您手动写入条目,或通过 hooks 写入 在会话之间通过后台进程更新
记录内容 您标记的决策、错误和模式 从会话历史中提取的模式
最适合 项目特有的组织知识 发现您难以手动察觉的跨会话模式

Dreaming 目前处于 Research Preview 阶段,其行为可能发生变化。对于自托管 harness,上文介绍的会话交接和 CLAUDE.md 模式仍是权威的记忆机制。

反模式

只需要 10 行,却读取整个文件。读取一个 2,000 行的文件就会消耗 15,000-20,000 个 token。请使用行偏移量:Read file.py offset=100 limit=20 可以节省其中绝大部分成本。15

在上下文中保留冗长的错误输出。完成错误调试后,上下文中可能仍保留着失败迭代产生的 40 多条堆栈跟踪。修复错误后执行一次 /compact,即可清除这些无用负担。

每次会话开始时都读取所有文件。让 Claude Code 的 glob 和 grep 工具按需查找相关文件,可以避免不必要的预加载,节省超过 100,000 个 token。15


Subagent 模式

subagents 是专门处理复杂任务的 Claude 实例,能够独立完成工作。它们从干净的上下文开始(不受主对话内容干扰),使用指定工具执行任务,并以摘要形式返回结果。探索结果不会使主对话变得臃肿,只有结论会返回主对话。5

内置 Subagent 类型

类型 模型 模式 工具 适用场景
Explore Haiku(快速) 只读 Glob、Grep、Read、安全的 bash 探索代码库、查找文件
General-purpose 继承 完整读写 所有可用工具 复杂研究与修改
Plan 继承(或 Opus) 只读 Read、Glob、Grep、Bash 执行前规划

创建自定义 Subagents

.claude/agents/(项目级)或 ~/.claude/agents/(个人级)中定义 subagents:

---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
  changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---

You are a senior security engineer reviewing code for vulnerabilities.

When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps

Focus on actionable security findings, not style issues.

Subagent 配置字段

字段 必需 用途
name 唯一标识符(小写字母与连字符)
description 调用时机(加入“PROACTIVELY”可鼓励自动委派)
tools 以逗号分隔。省略时继承所有工具。支持通过 Agent(agent_type) 限制可生成的 agents
disallowedTools 禁止使用的工具,将从继承或指定的工具列表中移除。从 v2.1.178 起,此处能够正确匹配 MCP 服务器级规范(mcp__servermcp__server__*mcp__*)。早期版本会悄然忽略这些规范,因此原本用于阻止某个 MCP 服务器的拒绝规则实际上毫无作用。63
model sonnetopushaikuinherit(默认值:inherit
permissionMode default(自 v2.1.200 起,在 CLI/IDE 中标记为“Manual”;manual 是配置值不变情况下可接受的别名)、acceptEditsdelegatedontAskbypassPermissionsplan。从 v2.1.212 起,Task 工具按调用设置的 mode 参数已弃用——subagents 会继承父会话的权限模式,而此前置元数据字段用于按 agent 覆盖该模式69
maxTurns subagent 停止前允许执行的最大 agentic 轮数
memory 持久化 memory 范围:userprojectlocal
skills 启动时将 skill 内容自动加载到 subagent 上下文中。从 v2.1.133 起,subagents 还会像父会话一样,通过 Skill 工具发现项目、用户和插件的 skills。早期版本会悄然从 subagent 上下文中丢弃这些内容。39
hooks 作用域限定于此 subagent 执行过程的生命周期 hooks
background 强制作为后台任务运行。从 v2.1.198 起,subagents 默认在后台运行——主会话可继续工作,并在任务完成时收到通知——因此该字段现在用于显式固定此行为,而非选择启用后台运行
isolation 设置为 worktree,使用隔离的 git worktree 副本

Worktree 隔离

Subagents 可以在临时 git worktrees 中运行,从而获得完整且隔离的仓库副本:5

---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---

You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.

对于可能破坏代码库的实验性工作,worktree 隔离至关重要。

只有边界切实有效,才能称为隔离。 Claude Code v2.1.210 修复了一个缺陷:采用 worktree 隔离的 subagents 可能会修改主检出目录——这恰恰是该机制本应防止的故障。69 如果您将 isolation: worktree 视为安全边界,而不仅仅是便利功能,请将 v2.1.210 作为最低版本。与之配套的权限变更则朝另一个方向发展:从 v2.1.211 起,“始终允许”规则会在仓库根目录跨 worktrees 保留,因此在一个 worktree 中接受的规则也会应用于同一仓库的其他 worktrees。69 这为并行 worktree agents 提供了合理便捷的操作体验,但也意味着在一次性实验中授予的权限会在实验结束后继续存在——授权时应着眼于整个仓库,而不仅仅是眼前的 worktree。

v2.1.216 完成了收尾工作,使 worktree 隔离从缺陷修复提升到可强制执行的级别。74 v2.1.210 的修复阻止了 worktree subagents 通过普通 git 调用修改主检出目录,但 git 本身提供了显式重定向机制——git -C <path>--git-dir 以及 GIT_DIR/GIT_WORK_TREE 环境变量——采用 worktree 隔离的 subagent 仍可利用其中任何一种方式指向共享检出目录。如今,所有这些逃逸通道均已封堵。同一版本还修复了 worktree 会话偶尔落入其他项目遗留 worktree 的问题;阻止工作流和计划任务在 .claude 处被植入符号链接后,将写入操作跟随到项目外部的目标;并使 /rewind 拒绝跨越符号链接和硬链接。这四项修复体现了同一原则:隔离边界不仅要抵御默认行为,还必须能够抵御刻意重定向——例如覆盖 git 环境变量、植入符号链接。如果 isolation: worktree 在您的 harness 中是安全边界,而非便利功能,那么 v2.1.216 就是新的最低版本。

并行 Subagents

对于彼此独立、无需相互协调的研究任务,请使用并行 subagents:5

> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes

每个 agent 都在自己的上下文窗口中运行,查找相关代码并返回摘要。主上下文始终保持干净。

递归防护

如果不限制生成数量,agents 会委派给其他 agents,后者又继续委派给更多 agents。每一层都会损失上下文并消耗 token。递归防护模式通过预算加以约束:16

#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"

MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12

# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)

if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
    echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
    exit 2
fi

# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"

关键经验: 应使用生成预算,而不能只依赖深度限制。基于深度的限制会追踪父子链条(在第 3 层阻止),却无法约束宽度:第 1 层有 23 个 agents,仍然只是“深度 1”。生成预算会追踪每个父级的活跃子级总数,并设置可配置的上限。预算模型直接对应实际故障模式(agents 总数过多),而不是使用替代指标(嵌套层级过多)。7

默认嵌套深度已经变动了 3 次;请勿以此为基础构建系统。 Claude Code v2.1.172(2026年6月10日)允许 sub-agents 生成自己的 sub-agents,最多可嵌套 5 层——此前委派实际上仅限 1 层。62 这一默认值从 v2.1.172 一直保持到 v2.1.216。v2.1.217(2026年7月21日)将其缩减到 1,默认关闭嵌套生成。随后,v2.1.219(2026年7月24日)取了折中值:“Subagents 现在默认可生成嵌套 subagents,最大深度为 3(此前为 1);设置 CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 可禁用嵌套。”84 先是 5,再是 1,然后是 3——后两次调整发生在短短 3 天内。

合理的解读并非其中某个数字才是正确答案,而是平台仍在摸索恰当的默认值。因此,对 harness 而言,继承“当前发布版本所带的值”并不可取。应将嵌套深度视为一项明确的预算:把 CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH 设置为架构真正需要的深度——对大多数编排而言是 1 或 2——这样升级就无法悄然改变您的 agent 集群委派层数。无论默认值如何反复变化,根本论点始终不变:agents 逐层委派给 agents 的链条消耗上下文和 token 的速度,往往快于其产出结果的速度。深度是一项需要纳入预算的风险,而不是应当追求的能力。无论默认值下一步如何漂移,上述递归防护都能阻止深层树状结构扩散为数百个活跃 agents。只有自行设定的限制,才能确保下次发布后,这个深度数字仍与您的理解一致。

Auto mode 现在会在启动前审查生成操作。 Claude Code v2.1.178 弥补了相应的治理缺口:在 auto mode 下,subagent 生成操作会在 subagent 启动之前由权限分类器评估,而不再等到它开始执行操作后才评估。63 过去,可以生成一个 subagent,让其请求父会话本应被禁止执行的操作——生成操作本身就成了绕过手段。在生成时进行审查,意味着递归防护终于与权限模型相互衔接:不能再将子级用作洗白步骤,以执行策略禁止的操作。

平台现在原生提供生成预算。 Claude Code v2.1.212(2026年7月)加入了第一方失控循环防护:会话默认最多生成 200 个 subagents(可通过 CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION 调整,/clear 会重置计数器),每个会话的 WebSearch 调用也限制为 200 次(CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION)。69 自 v1.0 起,本节一直将生成预算模式记录为用户层脚本;如今平台已原生提供该能力,印证了预算模型优于深度模型。但要留意其校准尺度:200 次生成比上述配置中的 12-agent 预算高出一个数量级。原生上限是防止循环彻底失控的保险丝,并不是针对您的架构调校的预算。请保留用户层防护,以实现每父级预算、深度追踪及符合实际编排需求的限制;再由平台上限兜住任何漏网之鱼。

第一方防护体系现在涵盖 4 个维度。 其中 3 个恰好为本节用户层防护所追踪的指标提供后备保障:每个会话的生成总数(v2.1.212,上限 200,CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION)、嵌套深度(CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH,当前默认值为 3,且事实证明并不稳定),以及并发执行数量(v2.1.217,默认值 20,CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS——一条消息无法再无限扩散出后台 agents)。7884 v2.1.219 增加了用户层防护通常未覆盖的第 4 个维度:编排宽度,即单个计划工作流可包含的 agent 数量。它以“建议少于 15 个 agents”的默认准则发布,并可通过任意 settings 文件中的 workflowSizeGuideline 配置(将在下文的 Workflow Tool 一节中介绍)。生成预算模式如今在其原本针对的所有维度上都有原生后备保障,此外还多了一个此前未涵盖的维度。

校准方面的提醒仍然适用,但各维度并不均衡。200 次生成和 20 个并发 agents 都是保险丝——比上述配置中的 12-agent deliberation 预算高出一个数量级,其目的在于捕获失控循环,而非塑造架构。宽度准则则是首个与实际预算处于同一尺度的原生数值:每个工作流 15 个 agents,与本指南的 12 个相差无几。采用平台默认值几乎没有成本;如果选择不同的值,则应有切实理由。请将 3 个保险丝设置为您能够充分论证的值,并根据预期编排结构设置宽度准则。

Agent Teams(研究预览版)

Agent Teams 用于协调多个 Claude Code 实例。它们独立工作,通过共享邮箱和任务列表进行沟通,还能相互质疑彼此的发现:5

组件 角色
Team lead 创建团队、生成 teammates 并协调工作的主会话
Teammates 分别处理指派任务的独立 Claude Code 实例
Task list 由 teammates 认领并完成的共享工作项(使用文件锁)
Mailbox 用于 agents 之间通信的消息系统

启用方式:export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

何时使用 agent teams,何时使用 subagents:

Subagents Agent Teams
通信 仅向主 agent 返回结果 Teammates 直接相互发送消息
协调 主 agent 管理所有工作 使用共享任务列表自主协调
最适合 只关注结果的聚焦型任务 需要讨论与协作的复杂工作
Token 成本 较低 较高(每个 teammate 都有独立上下文窗口)

Agent View 与目标循环(2026年5月)

Claude Code v2.1.139 新增了 Agent View。这是一个研究预览版界面,可通过 claude agents 启动,在同一屏幕上显示正在运行、受阻和已完成的 Claude Code 会话。4243 官方文档将其定位为一种分派和管理多个会话的方式:查看每个会话正在执行的工作,并识别哪些会话需要操作人员介入。43 这为多 agent 工作提供了最终摘要无法实现的运维视图。

在将 subagent 或 team 模式投入正式使用时,请使用 Agent View:检查哪些会话受阻、哪些仍在运行,以及工作分配是否符合预期架构。不要将其视为质量证明。它提供的是可观测性;工作是否可靠,仍须由测试、审查门禁和证据报告决定。

同一版本还新增了 /goal,用于设置完成条件,使 Claude 能够跨轮次持续运行,直至满足条件;该功能适用于交互模式、-p 和 Remote Control。42 应将 /goal 视为会话级完成循环,而非确定性门禁的替代品。它适合让 agent 始终专注于目标,但在失败必须阻止流程的场景中,测试、引用检查、部署检查和安全 hooks 仍应由命令或脚本提供支持。

Workflow Tool(v2.1.147+)

Claude Code v2.1.147 新增了默认关闭的 Workflow 工具,用于确定性的多 agent 编排。通过 CLAUDE_CODE_WORKFLOWS=1 启用。52 从架构角度看,这一点十分重要,因为它为 Claude Code 提供了第一方编排原语,可处理过去需要自定义分派脚本、邮箱状态和 subagent 协调约定的流程。

不要因此删除外围 harness。Workflow 可以组织执行过程,但无法取代安全模型。请继续将 PreToolUse 和 PostToolUse hooks 作为阻断层;保留生成预算或工作流步骤预算,以防宽度失控;确保文件系统状态可审计;并将最终证据报告置于模型自我评估之外。具体而言:使用 Workflow 规定编排结构;使用 hooks、测试和审查门禁判定事实。

动态工作流现在对宽度有了明确倾向(v2.1.219)。 动态工作流默认采用中等规模准则——“建议少于 15 个 agents”——还可在 /config 的 Dynamic workflow size 下选择其他规模或不设限制。当前准则会显示在运行中工作流的状态行里。84 该数字仅为建议,并不强制执行;它用于引导规划器,而非阻止宽度较大的计划。值得配置它的原因在于其下发机制:新的 workflowSizeGuideline settings 键可在任何 settings 文件中设置,包括托管 settings 和项目 settings;从 v0.3.219 起,它也已包含在 TypeScript SDK settings 类型中。因此,编排宽度可以成为团队或组织统一的标准,而不必由每位操作人员重新摸索。85 请在项目级设置该值,使其反映代码库中工作的实际分解方式。有两点操作注意事项:当 settings 文件控制该值时,/config 中的对应行会隐藏,这是正确行为,但如果不了解原因,看起来就像设置项凭空消失;此外,由于该准则用于引导规划器,而非限制执行,因此它属于结构范畴,而非安全范畴。宽度失控仍应由生成上限负责防范。

值得保留的认知框架是:这是第 4 个第一方防护维度——编排宽度,与生成数量、嵌套深度和并发执行并列——也是 Anthropic 首次按合理工作规模而非失控保险丝来校准数值。每个工作流 15 个 agents,与本指南自 v1.0 起采用的 12-agent deliberation 预算处于同一数量级。当平台默认值与自有预算从不同方向得出相近结论时,这几乎就是此类数字所能获得的最有力独立佐证。

会话分叉与自动后台运行的 MCP(2026年7月)

Claude Code v2.1.212 重塑了两种编排原语。69 /fork 现在会根据当前对话状态创建一个新的后台会话——分叉后的会话线独立运行,原会话则继续工作——此前的会话内行为已更名为 /subtask。这种区别对于编排设计十分重要:/subtask 是单个会话生命周期内有明确作用域的临时支线;/fork 则是一种低成本创建并行后台会话的方式,该会话会继承完整上下文,更接近 Ralph-loop 生成,而非 subagent。如果 harness 脚本原本假定 /fork 始终留在当前会话内,那么它们现在会改为分派后台工作。

同一版本会自动将耗时较长的 MCP 调用转入后台:运行超过 2 分钟的 MCP 工具调用会自动转为后台执行(可通过 CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS 调整阈值)。69 缓慢的 MCP 服务器不再阻塞 agentic 循环——但这也意味着“工具已返回”与“轮次继续执行”不再是同一事件。因此,原本假设 MCP 会同步完成的 hooks 或脚本,应以工具结果为准,而非以轮次边界为准。

对于无头编排,v2.1.211 新增了 --forward-subagent-text(环境变量:CLAUDE_CODE_FORWARD_SUBAGENT_TEXT),可将 subagent 的 assistant 文本转发到 stream-json 输出中。69 消费父级输出流的协调器进程现在可以直接观察 subagent 进度,无需轮询转录记录或等待最终摘要——这是对默认后台运行 subagents 的可观测性补充。v2.1.219 将该能力扩展到了第 1 层之外:深度为 2 或更深层级生成的 subagents 现在也会出现在转发流中,并以生成它们的 Agent tool_use id 作为键。84 这个键才是应当依赖的部分。默认重新启用嵌套后,扁平的 subagent 文本流会产生歧义——该 id 能让协调器识别哪个父级生成了哪个子级,从而直接根据输出流重建委派树,而无需推断。如果您的输出流消费者是按单层 subagents 编写的,它现在将看到此前根本不知道其存在的 agents 所输出的文本;请按生成操作的 tool_use id 分组,不要假定每一条转发行都来自直接子级。


多智能体编排

单智能体AI系统存在结构性盲点:它们无法挑战自己的假设。7多智能体审议在任何决策锁定之前,强制要求从多个视角进行独立评估。

跨工具编排(2026年4月): 谷歌于4月7日开源了Scion——一个多智能体管理程序,可将Claude Code、Gemini CLI和其他”深度智能体”作为并发进程运行,每个进程都拥有独立的容器、git worktree和凭据。可在本地、中心或Kubernetes上运行。其明确的理念是:”以隔离取代约束”——智能体在边界内以高度自治的方式运行,而这些边界由基础设施层强制执行,而非通过提示词。25这直接将子智能体隔离论点扩展到了不同的工具供应商之间。如果您的工作流横跨Claude和OpenAI模型,那么Scion是首个真正实现跨工具子智能体(带有每智能体独立worktree+凭据隔离)的参考实现。

辩论并非银弹: M3MAD-Bench研究集群(2026年初)发现,多智能体辩论会陷入瓶颈,且可能被误导性共识所颠覆——当其他智能体自信地断言错误答案时,有效论证反而会败下阵来。26Tool-MAD通过为每个智能体提供异构工具访问权限,并在评判阶段使用Faithfulness/Relevance分数来改进这一问题。如果您正在构建辩论式编排,请投资于(a)每个智能体的工具异构性,以及(b)量化的评判评分,而不要假定智能体越多=答案越好。

托管式多智能体编排与Outcomes(公开测试版)

如果您不想构建下文所述的审议基础设施,多智能体编排(Multiagent Orchestration)已于2026年5月6日在Claude Managed Agents中进入公开测试阶段。35Anthropic表示:”当工作量过大、单个智能体难以胜任时,多智能体编排允许领导智能体将任务分解为多个部分,并将每个部分委派给具有自身模型、提示词和工具的专家智能体。”35专家智能体”在共享文件系统上并行工作,并为领导智能体的整体上下文做出贡献。”35

追踪功能开箱即用。Anthropic表示:”您还可以在Claude Console中追踪每一个步骤:哪个智能体做了什么、按什么顺序、为什么这样做,让您完全掌握任务委派和执行的全貌。”35

配套的公开测试功能是Outcomes。Anthropic表示:”您编写一份描述成功标准的评分准则,智能体会朝着这一目标工作。一个独立的评分器在自己的上下文窗口中根据您的标准评估输出,因此不会受到智能体推理过程的影响。”35这正是本节后续记录的双门验证模式的托管服务版本:评分准则取代了手写的验证门,独立评分器取代了共识验证器。

自托管审议(本节) 托管式多智能体+Outcomes
专家路由 您自己编写派生逻辑 领导智能体将任务分解
验证 双门钩子+共识评分 独立上下文中的评分准则+评分器
追踪 您自行检测 Claude Console
最适合 需要完全控制或特定工具组合的模式 标准委派模式,验证评分准则即为契约
定价 仅Token+harness成本 标准Token加上Managed Agents的会话小时费率(4月8日发布基础版;参见23

当验证需要与您自己的钩子界面(PreToolUse阻塞、退出码语义、自定义dispatcher)集成,或者harness必须在没有外部依赖的情况下运行时,自托管审议仍然是正确的选择。当标准委派加上评分准则评估正是您实际需要的契约时,托管式多智能体则是正确答案。

最简可行审议

从2个智能体和1条规则开始:智能体必须在看到彼此的工作之前进行独立评估。7

Decision arrives
  |
  v
Confidence check: is this risky, ambiguous, or irreversible?
  |
  +-- NO  -> Single agent decides (normal flow)
  |
  +-- YES -> Spawn 2 agents with different system prompts
             Agent A: "Argue FOR this approach"
             Agent B: "Argue AGAINST this approach"
             |
             v
             Compare findings
             |
             +-- Agreement with different reasoning -> Proceed
             +-- Genuine disagreement -> Investigate the conflict
             +-- Agreement with same reasoning -> Suspect herding

这一模式涵盖了80%的价值。其余的一切只是渐进式改进。

信心触发器

并非每个任务都需要审议。信心评分模块从四个维度进行评估:17

  1. 歧义性 - 该查询是否存在多种有效的解读?
  2. 领域复杂度 - 是否需要专业知识?
  3. 风险高低 - 决策是否可逆?
  4. 上下文依赖性 - 是否需要理解更广泛的系统?

得分映射到三个级别:

级别 阈值 行动
HIGH 0.85+ 无需审议直接执行
MEDIUM 0.70-0.84 执行并记录信心备注
LOW 0.70以下 触发完整的多智能体审议

阈值会根据任务类型自适应调整。安全决策需要0.85的共识。文档变更只需0.50。这既能避免对简单任务过度工程化,又能确保高风险决策得到充分审视。7

状态机

七个阶段,每个阶段由前一个阶段把关:7

IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
                                                                    |
                                                              (or FAILED)

RESEARCH: 独立的智能体调查主题。每个智能体获得不同的角色(技术架构师、安全分析师、性能工程师等)。上下文隔离确保智能体在研究期间无法看到彼此的发现。

DELIBERATION: 智能体查看所有研究发现并生成替代方案。辩论智能体识别冲突。综合智能体合并不矛盾的发现。

RANKING: 每个智能体在5个加权维度上对每个提议方案进行评分:

维度 权重
影响 0.25
质量 0.25
可行性 0.20
可重用性 0.15
风险 0.15

双门验证架构

两个验证门在不同阶段捕获问题:7

Gate 1:共识验证(PostToolUse hook)。在每个审议智能体完成后立即运行: 1. 阶段必须至少达到RANKING 2. 至少有2个智能体完成(可配置) 3. 共识得分满足任务自适应阈值 4. 如果有任何智能体提出异议,必须记录其顾虑

Gate 2:Pride Check(Stop hook)。在会话关闭前运行: 1. 多样化方法:代表了多个独特的角色 2. 矛盾透明度:异议有记录在案的理由 3. 复杂度处理:至少生成了2个备选方案 4. 共识信心:被分类为强(高于0.85)或中等(0.70-0.84) 5. 改进证据:最终信心度超过初始信心度

两个钩子位于不同的生命周期节点,恰好契合故障的实际发生方式:有些是瞬时的(评分糟糕),有些则是渐进的(多样性不足、缺失异议记录)。7

为何意见一致是危险的

Charlan Nemeth从1986年起一直研究少数派异议,直至她2018年的著作In Defense of Troublemakers。有异见者参与的群体所做的决策,比迅速达成一致的群体更优。异见者并不一定要正确。异议这一行为本身就迫使多数派审视他们原本会跳过的假设。18

Wu等人测试了LLM智能体是否能够进行真正的辩论,发现如果没有结构性的不同意见激励机制,无论正确与否,智能体都会向最自信的初始回答收敛。19Liang等人将根本原因识别为”思想退化(Degeneration-of-Thought)”:一旦LLM对某个立场建立起信心,自我反思就无法生成新颖的反驳论点,这使得多智能体评估在结构上成为必需。20

独立性是关键的设计约束。两个智能体在能看到彼此发现的情况下评估同一部署策略,得分为0.45和0.48。同样的智能体在没有可视性的情况下:0.45和0.72。0.48和0.72之间的差距,正是从众的代价。7

检测虚假一致

从众检测模块跟踪那些表明智能体在没有真正评估的情况下达成一致的模式:7

评分聚集: 每个智能体在10分制下的评分都在0.3分以内,这意味着共享上下文污染,而非独立评估。当五个智能体评估一次身份验证重构,安全风险评分全部介于7.1和7.4之间时,使用全新的上下文隔离重新运行后,分数分散到了5.8-8.9。

模板化异议: 智能体复制彼此的顾虑语言,而非生成独立的反对意见。

缺失少数派视角: 来自具有冲突优先级的角色们(安全分析师和性能工程师很少在所有事情上达成一致)的一致赞同。

从众检测器能捕获明显的情况(约10-15%的审议中智能体过快收敛)。对于其余的85-90%,共识门和Pride Check门提供了充分的验证。

审议中行不通的做法

自由形式的辩论轮次。 关于数据库索引讨论的三轮往返文本辩论产生了7,500个token的辩论内容。第1轮:真正的分歧。第2轮:重述立场。第3轮:用不同的措辞表达相同的论点。结构化的维度评分取代了自由形式的辩论,在提升排名质量的同时将成本降低了60%。7

单一验证门。 最初的实现在会话结束时运行一个验证钩子。一个智能体以0.52的共识得分(低于阈值)完成了审议,然后继续处理无关任务长达20分钟,会话结束钩子才标记出该故障。拆分为两个门(一个在任务完成时,一个在会话结束时)后,能在不同的生命周期节点捕获相同的问题。7

审议的成本

每个研究智能体处理大约5,000个token的上下文,生成2,000-3,000个token的发现。3个智能体的话,每个决策需要额外消耗15,000-24,000个token。10个智能体的话,大约需要50,000-80,000个token。7

按当前的Opus定价计算,3智能体审议的成本约为$0.68-0.90。10智能体审议的成本为$2.25-3.00。该系统会在大约10%的决策上触发审议,因此摊销到所有决策上的成本为每会话$0.23-0.30。这是否值得,取决于一次糟糕决策的代价有多大。

何时审议

审议 跳过
安全架构 文档错别字
数据库schema设计 变量重命名
API契约变更 日志消息更新
部署策略 注释改写
依赖升级 测试fixture更新

CLAUDE.md 设计

CLAUDE.md 是面向 AI agent 的操作策略,而不是供人阅读的 README。21agent 无需理解您为何使用约定式提交,只需知道要运行的确切命令,以及怎样才算“完成”。

优先级层次

位置 作用域 共享方式 使用场景
企业托管设置 组织 所有用户 公司标准
./CLAUDE.md./.claude/CLAUDE.md 项目 通过 git 团队上下文
~/.claude/CLAUDE.md 用户 所有项目 个人偏好
./CLAUDE.local.md 项目本地 从不共享 个人项目笔记
.claude/rules/*.md 项目规则 通过 git 分类策略
~/.claude/rules/*.md 用户规则 所有项目 个人策略

规则文件会自动加载并提供结构化上下文,避免 CLAUDE.md 变得杂乱。6

哪些内容会被忽略

以下模式通常不会对 agent 的行为产生任何可观察的影响:21

没有命令的说明性段落。“我们重视整洁且经过充分测试的代码”只是文档,并非操作指令。agent 读过后仍会继续编写没有测试的代码,因为其中没有可执行的指示。

含糊不清的指令。“谨慎处理数据库迁移”并不构成约束。“应用迁移前运行 alembic check。如果缺少降级路径,则中止操作。”才是有效约束。

相互矛盾的优先事项。“快速推进并迅速发布”,同时又要求“确保全面的测试覆盖率”“将运行时间控制在5分钟以内”以及“每次提交前运行完整的集成测试”。agent 无法同时满足这4项要求,最终往往默认跳过验证。21

缺乏强制检查的风格指南。仅要求“遵循 Google Python Style Guide”,却不提供 ruff check --select D,agent 就没有验证合规性的机制。

哪些方式有效

命令优先的指令:

## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`

闭环定义:

## Definition of Done
A task is complete when ALL of the following pass:
1. `ruff check .` exits 0
2. `pytest -v` exits 0 with no failures
3. `mypy app/ --strict` exits 0
4. Changed files have been staged and committed
5. Commit message follows conventional format: `type(scope): description`

按任务组织的章节:

## When Writing Code
- Run `ruff check .` after every file change
- Add type hints to all new functions

## When Reviewing Code
- Check for security issues: `bandit -r app/`
- Verify test coverage: `pytest --cov=app --cov-fail-under=80`

## When Releasing
- Update version in `pyproject.toml`
- Run full suite: `pytest -v && ruff check . && mypy app/`

升级处理规则:

## When Blocked
- If tests fail after 3 attempts: stop and report the failing test with full output
- If a dependency is missing: check `requirements.txt` first, then ask
- Never: delete files to resolve errors, force push, or skip tests

编写顺序

如果从头开始,请按以下优先级添加章节:21

  1. 构建和测试命令(agent 必须先掌握这些命令,才能完成任何有用的工作)
  2. 完成标准(防止虚假完成)
  3. 升级处理规则(防止采用破坏性的变通方案)
  4. 按任务组织的章节(减少对无关指令的解析)
  5. 目录作用域(对于 monorepos:确保各服务的指令彼此隔离)

在前4项正常发挥作用之前,先跳过风格偏好。

平台现在可以为您审查 CLAUDE.md。从2026年7月初发布的版本(v2.1.203–v2.1.206)开始,/doctor 会分析 CLAUDE.md,并建议精简模型能够从代码库自行推断的内容,例如重复描述的目录布局、代码已经体现的框架惯例,以及与软件包脚本重复的命令列表。68这从第一方角度印证了本节的核心观点:只有记录 agent 无法推断的信息(策略、阈值、闭环定义),指令所占用的 token 才物有所值;能够直接从磁盘读取的信息则不必赘述。当 CLAUDE.md 大幅扩充后,请运行 /doctor,并将其精简建议作为起点。不过,如果它将某些操作规则标记为“可推断”,而这些规则实际上是不可或缺的约束,而非单纯描述,请予以保留。

文件导入

在 CLAUDE.md 中引用其他文件:

See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md

导入语法包括:相对路径(@docs/file.md)、绝对路径(@/absolute/path.md)或主目录路径(@~/.claude/file.md)。最大深度为5层导入。6

跨工具指令兼容性

AGENTS.md 是各大主流 AI 编码工具均可识别的开放标准。21如果团队使用多种工具,请将 AGENTS.md 作为规范来源,并把相关章节同步到各工具的专用文件中:

工具 原生文件 是否读取 AGENTS.md?
Codex CLI AGENTS.md 是(原生支持)
Cursor .cursor/rules 是(原生支持)
GitHub Copilot .github/copilot-instructions.md 是(原生支持)
Amp AGENTS.md 是(原生支持)
Windsurf .windsurfrules 是(原生支持)
Claude Code CLAUDE.md 否(格式独立)

无论使用哪种工具,AGENTS.md 中的模式(命令优先、定义闭环、按任务组织)都适用于任何指令文件。不要维护多套逐渐偏离的并行指令。应编写一份权威来源,再将其同步到其他文件。

Codex 对等功能说明

Codex 现在已为主要 harness 层提供一流的对等功能,但迁移需要转换模式,而不是简单复制文件。Codex 会在工作开始前读取 AGENTS.md,并将 ~/.codex 中的全局指导与项目级及嵌套仓库指令分层叠加。31Codex skills 采用相同的 SKILL.md 思维模型,并遵循渐进式披露原则:Codex 起初只获取 skill 名称、描述和文件路径,仅在决定使用该 skill 时才加载完整内容。32Codex 还提供原生 hooks、插件捆绑的 hooks、托管 hooks、MCP 支持和明确的 subagent 工作流。3334

Codex v0.138.0–v0.139.0 加强了复杂工作区中的 AGENTS.md 发现机制:现在通过环境的文件系统抽象层进行加载,并在发现遍历过程中保留逻辑路径。因此,即使工作区位于远程文件系统或采用符号链接目录树,也能选择正确的文件。61当规范 AGENTS.md 是权威来源,而 agent 又在挂载、容器实体化或通过符号链接检出的目录中运行时,这一点尤为重要。在这些场景中,简单的路径遍历可能悄无声息地选择错误的指令文件,甚至完全找不到文件。如果在多个服务间同步一份权威 AGENTS.md,应将此版本作为可信基线,以确保 agent 实际加载的文件正是您编写的那一份。

随后,Codex v0.141.0 又加强了远程执行路径:远程执行器现在通过经过身份验证、端到端加密的 Noise 中继通道连接(控制平面和执行器不再需要信任二者之间的中继);跨平台远程执行会保留执行器的原生工作目录和 shell;TLS 也开始接受企业代理使用的 P-521 证书签名。65如果编排系统需要跨越网络边界驱动 Codex 执行器,这意味着安全模型已从“信任中继”转变为“端到端加密”。任何远程执行器拓扑都应以此版本作为基线。

2026年7月的版本线表明,两种运行时正从不同方向趋近于相同的基础能力。72Codex v0.143.0 默认通过工具搜索加载 MCP 工具,即延迟加载工具架构,并按需获取,而不是预先全部载入上下文。这与 Claude Code 通过 ToolSearch 界面提供的延迟工具加载模式相同,也是两种运行时面对大量 MCP 工具导致上下文膨胀时的正确解决方案。Codex v0.144.0 新增 writes 应用审批模式:只读操作无需提示即可运行,写入操作则需要审批。这是一种介于只读与自动批准之间、真正全新的权限模式,而 Claude Code 的模式列表并无直接对应项(最接近的是 plan 模式,但它会完全阻止写入,而不是逐次提示审批)。同一版本还将 MCP 交互式身份验证正式推向 GA。v0.144.5 则扩展了危险命令检测,与 Claude Code 在 v2.1.183 和 v2.1.208 中推出的破坏性命令防护措施相呼应。对于跨运行时 harness 设计而言,趋同才是重点:延迟工具加载、分级写入审批和意图级危险命令阻止正在成为必备能力,而不再是供应商之间的差异化卖点。

Codex v0.145.0 从两个方面进一步推动了这种趋同。76选择启用的 multi-agent V2 界面已经趋于稳定:现在可以配置 sub-agent 模型、推理级别和并发量,之前移除的 agent 角色也已恢复。这是 Codex 对 .claude/agents/ frontmatter 中逐 subagent 配置模型和工作强度的回应。此外,/import 已扩展为完整的跨 harness 迁移工具:除了 v0.140.0 已推出的 Claude Code 设置导入功能外,现在还能迁移 Claude Code Cursor 的设置,包括 MCP 服务器、插件、会话、命令和项目作用域内的记忆。对于同时运行两种运行时的团队,二者之间单向迁移的成本正在持续下降。您在 Claude Code 上构建的 harness 层——服务器、作为命令的 skills、记忆——正日益成为可移植状态,而不是供应商锁定。

实际映射如下:

Claude Code harness 层 Codex 对等功能 迁移规则
CLAUDE.md / .claude/rules/ AGENTS.md / 嵌套的 AGENTS.override.md 保持命令和完成规则的规范统一;仅当目录作用域确有差异时才进行拆分
.claude/skills/<name>/SKILL.md .agents/skills/<name>/SKILL.md 或插件 skill 迁移可复用工作流,但需根据 Codex 的激活措辞和预算重写描述
.claude/settings.json hooks Codex config.toml、插件 hooks 或托管要求 hooks 优先迁移确定性门禁;广泛启用前,使用真实工具事件测试每个 hook
.claude/agents/*.md ~/.codex/agents/*.toml.codex/agents/*.toml 或内置 worker / explorer 仅迁移具有长期复用价值的 agents;由于 Codex subagents 需要显式调用,请优先采用明确委派
插件 Codex 插件 在本地 hooks 和 skills 得到验证后,再使用插件作为分发单元

重要区别在于:Claude subagents 可以根据描述自动选择,而 Codex 目前将 subagent 工作流定义为显式调用。因此,在 Codex 中,skills 和 hooks 才是始终启用的 harness 行为的合理默认选择;subagents 则适用于有意识安排的并行工作、审查和探索。

测试您的指令

验证 agent 是否确实读取并遵循您的指令:

# Check active instructions
claude --print "What instructions are you following for this project?"

# Verify specific rules are active
claude --print "What is your definition of done?"

试金石:让 agent 解释您的构建命令。如果它无法逐字复述,说明指令可能过于冗长(内容被挤出上下文)、过于含糊(agent 无法提取可执行指令),或者根本未被发现。GitHub 对2,500个仓库的分析发现,含糊不清是大多数失败的根源。21


生产环境模式

Opus 4.7 长时任务模式(2026年4月)

Claude Opus 4.7(2026年4月16日)发布了一系列特定功能,改变了 harness 需要防范的问题:29

  • 工具故障韧性: Opus 4.7 能够从导致 Opus 4.6 会话中止的工具故障中恢复并继续执行。您可以减少(但不能完全移除)subagents 代码中的防御性重试封装。保留 hook 层的防护措施;精简提示词中“如果工具失败,则重试3次”之类的脚手架。
  • xhigh 工作强度级别(仅限 Opus-4.7): 位于 highmax 之间。建议将其作为编码和智能体工作负载的默认选项。对于长时间运行的 subagents,xhigh 的表现明显优于 high,而 token 成本的增长低于性能增幅。max 仍适合需要一次性完成的高难度推理;xhigh 则更适合持续性任务。
  • Token 预算上限: 可通过 output_config.task_budget 为每次智能体运行配置(beta header task-budgets-2026-03-13)。模型能够看到持续更新的倒计时,并根据预算合理调整工作范围,避免预算意外耗尽。适用于智能体循环:既能让 token 开销可预测,也不会牺牲短提示词任务的质量。
  • 隐含需求感知: 首个通过“隐含需求”测试的 Claude 模型,能够识别用户的字面请求何时未能充分表达其实际需求。因此,CLAUDE.md 中“澄清规则”部分的重要性有所降低。如果您的 CLAUDE.md 用了200行“当用户询问Y时,还应考虑X”之类的防护规则,请删减模型现已原生覆盖的部分。

Worktree 基准、沙箱路径与管理员设置(2026年5月7日)

Claude Code v2.1.133 新增了4项管理员级设置,生产环境 harness 值得关注:39

设置 作用
worktree.baseRef fresh(默认)| head 新 worktree 再次从 origin/<default> 创建分支。此项为对 v2.1.128 默认行为的破坏性回退;该版本曾改用本地 HEAD。如果您的团队依赖新 worktree 访问尚未推送的提交,请设置 worktree.baseRef: "head"
sandbox.bwrapPath 绝对路径 在 Bubblewrap 不位于 $PATH 中,或使用随产品分发版本的 Linux/WSL 主机上,固定其二进制文件位置。
sandbox.socatPath 绝对路径 同理,用于指定沙箱网络所使用的 socat 二进制文件。
parentSettingsBehavior 'first-wins'(默认)| 'merge' 管理员级控制项,决定 SDK managedSettings 如何与上级企业或团队设置组合。'merge' 允许子会话继承并扩展设置;'first-wins' 则以上级设置为准。

最需要向用户特别说明的是 worktree.baseRef 的回退:依赖 v2.1.128-v2.1.132 行为(worktree 从本地 HEAD 创建分支)的智能体,将无法在新 worktree 中访问尚未推送的工作,除非主动恢复原有设置。

用于企业可观测性的 OTel 反馈调查(2026年5月8日)

Claude Code v2.1.136 新增了 CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL,让通过 OpenTelemetry 收集反馈的企业能够重新启用会话内质量调查。40 如果您的组织将 OTel 事件汇入集中式可观测性堆栈,此环境变量会将调查重新接入数据路径,使质量信号与延迟和错误指标通过同一管道传输。应将其视为选择启用的功能:默认情况下调查处于关闭状态,这对于未部署 OTel 的环境而言是正确选择。

企业启动器与 MCP 规模下的性能(2026年7月)

v2.1.207 中有两项变更对生产部署至关重要。68 CLAUDE_CODE_PROCESS_WRAPPER 允许托管环境通过企业封装二进制文件启动 Claude Code 进程。它为端点代理、启动时策略检查以及所有进程都必须在指定监督程序下运行的环境提供了集成点。如果您的企业过去通过 shell 别名或分叉的启动脚本来变通实现,现在已有正式支持的衔接机制。

同一版本还大幅削减了 harness 最容易感受到的运行时开销:在包含大量 MCP 工具的会话中,工具使用轮次最高可提速 7倍,会话转录内容则最多可缩小 79倍68 这在一定程度上缓和了(但并未推翻)将成本视为架构因素中的指导原则:对于无状态的一次性操作,CLI 优先仍然占优;但携带数十个 MCP 工具的 harness 不再需要承担春季版本中的逐轮性能损耗,转录内容存储也不再是长时间自主运行的隐性成本。

quality loop

所有非简单变更都必须经过以下审查流程:

  1. 实现 - 编写代码
  2. 审查 - 重新阅读每一行,发现拼写错误、逻辑错误和表述不清之处
  3. 评估 - 执行 evidence gate,检查模式、边缘情况和测试覆盖率
  4. 改进 - 修复所有问题,绝不推迟到“以后”
  5. 纵观全局 - 检查集成点、导入项和相邻代码是否出现回归
  6. 重复 - 如果任一 evidence gate 标准未通过,则返回第4步
  7. 报告 - 列出具体变更及验证方式,并引用明确证据

evidence gate

“我认为”和“应该可以”都不算证据。请引用文件路径、测试输出或具体代码。

标准 必需证据
遵循代码库模式 说明模式名称及其所在文件
最简单的可行方案 说明舍弃了哪些更简单的替代方案以及原因
已处理边缘情况 列出具体边缘情况及其处理方式
测试通过 粘贴显示0项失败的测试输出
无回归 列出已检查的文件或功能
解决实际问题 说明用户需求以及本方案如何满足该需求

如果无法为任意一行提供证据,请返回“改进”步骤。22

人工合并权限

2026年5月一项针对29,585个AI智能体拉取请求生命周期的 arXiv 研究,将操作执行权与合并治理权区分开来。47 其中的架构启示简单明了:智能体可以启动工作、推进分支、创建PR、审查工作并总结风险,而合并权限应继续作为独立的治理边界。

应在 harness 中明确划定这条边界。允许智能体准备PR并收集证据;除非组织另有经过审计的自动化策略,否则合并、发布及破坏性仓库操作必须获得人工批准。如果由自动化系统执行合并,应保留日志,明确区分实际执行者与授权合并的人员或策略。

错误处理模式

原子文件写入。 多个智能体同时写入同一个状态文件会破坏 JSON。先写入 .tmp 文件,再通过 mv 以原子方式移动。在同一文件系统中,操作系统保证 mv 具有原子性。17

# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"

状态损坏恢复。 如果状态损坏,恢复模式应从安全默认值重新创建状态,而不是直接崩溃:16

if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
    # Corrupted state file, recreate with safe defaults
    echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
    echo "- Recursion state recovered (was corrupted)"
fi

((VAR++)) bash 陷阱。 当 VAR 为0时,((VAR++)) 会返回退出码1,因为 0++ 的求值结果为0,而 bash 将其视为 false。启用 set -e 后,这会终止脚本。请改用 VAR=$((VAR + 1))16

影响范围分类

根据影响范围对每项智能体操作进行分类,并实施相应的管控:2

分类 示例 管控措施
本地 文件写入、测试运行、代码检查 自动批准
共享 Git 提交、创建分支 警告后继续
外部 Git 推送、API 调用、部署 需要人工批准

Remote Control(通过任意浏览器或移动应用连接到本地 Claude Code)将“外部”管控从阻塞式等待转变为异步通知。您通过手机审查上一项任务时,智能体可以继续处理下一项任务。2

自主运行的任务规范

有效的自主任务应包含3个要素:目标、完成标准和上下文指引:16

OBJECTIVE: Implement multi-agent deliberation with consensus validation.

COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)

CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth

标准必须可由机器验证,例如测试通过或失败、linter 输出、HTTP 状态码和文件存在性检查。早期有一项任务要求智能体“编写能够通过的测试”,结果它生成了 assert Trueassert 1 == 1。技术上无可挑剔,实际上毫无价值。16

标准质量 示例 结果
模糊 “测试通过” 智能体编写无实际意义的测试
可衡量但不完整 “测试通过且覆盖率>80%” 测试覆盖了代码行,却未验证任何有意义的行为
全面 “所有测试通过、覆盖率>80%、无类型错误、linter 检查无问题,且每个测试类分别测试不同的模块” 生产级输出

需要警惕的故障模式

故障模式 描述 预防措施
捷径螺旋 为更快完成而跳过 quality loop 步骤 evidence gate 要求为每项标准提供证据
信心幻象 未执行验证便声称“我有信心” 禁止在完成报告中使用含糊推测的措辞
虚假验证 未在本次会话中运行测试,却声称测试已通过 Stop hook 独立运行测试
债务递延 已提交代码中存在 TODO/FIXME/HACK git commit 的 PreToolUse hook 扫描差异
文件系统污染 放弃迭代后遗留无用产物 在完成标准中加入清理步骤

具体会话轨迹

以下是一次自主运行处理包含5个故事的 PRD 时的会话轨迹:2

  1. SessionStart 触发。 dispatcher 注入当前日期、项目检测结果、理念约束和成本跟踪初始化信息。共触发5个 hooks,总耗时180ms。

  2. 智能体读取 PRD,规划第1个故事。 UserPromptSubmit 触发。dispatcher 注入当前项目上下文和会话漂移基线。

  3. 智能体调用 Bash 运行测试。 PreToolUse:Bash 触发,执行凭据检查、沙箱验证和项目检测,耗时90ms。测试运行后,PostToolUse:Bash 触发:记录活动心跳并检查漂移。

  4. 智能体调用 Write 创建文件。 PreToolUse:Write 触发,检查文件范围。PostToolUse:Write 触发,执行 lint 检查并跟踪提交。

  5. 智能体完成该故事。 Stop 触发。质量关卡检查:智能体是否引用了证据?是否使用含糊推测的措辞?差异中是否存在 TODO 注释?如有任一检查失败,则以退出码2结束,智能体继续工作。

  6. 独立验证: 一个全新的智能体运行测试套件,不采信先前智能体的自述报告。

  7. 3个代码审查智能体并行启动。 每个智能体独立审查差异。如果任一审查者标记 CRITICAL,该故事将重新进入队列。

  8. 故事通过,加载下一个故事。 对全部5个故事重复此循环。

处理5个故事共触发约340次 hooks,hooks 总耗时约12秒。这些开销在一次通宵运行中防止了3次凭据泄露、1条破坏性命令和2次不完整实现。

案例研究:通宵处理 PRD

一个生产环境 harness 在8次通宵会话中处理了12个 PRD(共47个故事)。以下指标对比了前4个 PRD(最简 harness:仅有 CLAUDE.md)与后8个(完整 harness:hooks、skills、质量关卡和多智能体审查)。

指标 最简配置(4个 PRD) 完整 Harness(8个 PRD) 变化
凭据泄露 2项泄露至 git 提交前拦截7项 从事后响应转为事前预防
破坏性命令 1次强制推送至 main 拦截4次 通过退出码2强制执行
错误完成率 35%的任务测试失败 4% evidence gate + Stop hook
每个故事的修订轮次 2.1 0.8 Skills + quality loop
上下文退化 6起 1起 文件系统内存
Token 开销 0% 约3.2% 可忽略不计
每个故事的 Hook 耗时 0s 约2.4s 可忽略不计

两次凭据泄露导致必须轮换 API 密钥并审计下游服务,事件响应耗时约4小时。预防同类事件的 harness 开销仅为每个故事执行2.4秒的 bash。错误完成率从35%降至4%,原因在于 Stop hook 会先独立运行测试,再允许智能体报告任务完成。


安全注意事项

可信 Agent 的五项原则(Anthropic,2026年4月)

Anthropic 于2026年4月9日发布了正式的 Agent 可信度框架。27这五项原则与本指南中的 evidence gate 思想一脉相承,并进一步拓展了它:

原则 含义 此 harness 如何满足该原则
人类控制 在每个决策点提供有效的人工干预机制 hooks 对工具调用设卡;PreCompact 阻断;Auto Mode 分类器充当检查层
价值对齐 Agent 操作遵循用户意图,而非相邻目标 以 CLAUDE.md 明确定义意图;以 skills 限定能力范围
安全性 抵御对抗性输入和提示词注入 沙箱、拒绝规则以及 hook 层的输入验证
透明度 决策和操作记录可供审计 hook 日志;会话转录;skill 调用跟踪
隐私 适当的数据处理与治理 清理凭据环境变量;在 hook 层检测密钥

Anthropic 还将 MCP 捐赠给 Linux 基金会旗下的 Agentic AI Foundation,与 AGENTS.md(现由 OpenAI、Google、Cursor、Factory、Sourcegraph 共同维护)一道推进生态建设。Agent 互操作性标准如今已实现供应商中立。27

MCP 的无状态轮次与自报身份(2026年7月)。 MCP 规范正在向无状态核心(SEP-2575)过渡,不再使用过去承载服务器身份的有状态初始化握手。7月16日合并的一项规范草案变更(PR #3002)将身份恢复为一个可选接口:服务器可在响应的 _meta 中包含 io.modelcontextprotocol/serverInfo 对象,而请求中的 clientInfo 也变为可选项。71与安全最相关的是规范对信任的说明:此身份由服务器自行报告且未经验证——仅用于显示和记录——不应作为安全决策的依据。如果您的 harness 根据 MCP 服务器声明的名称设置允许列表、权限规则或基于日志的审计,请牢记:该名称只是一项声明,并非凭据。应将信任固定在传输方式和配置上(即在何端点配置了哪台服务器),绝不能依赖服务器的自我陈述。最终版无状态规范修订计划于2026年7月28日发布,本节的协议级细节预计将在下次更新中进一步明确。

Skill 沙箱工具:对于将 skills 视为攻击面的团队,Permiso 的 SandyClaw(发布于2026年4月2日)可在专用沙箱中运行 skills,并根据 Sigma/YARA/Nova/Snort 检测结果给出有证据支撑的判定。这是 skill 沙箱类别中的首款产品。28

沙箱

Claude Code 支持可选的沙箱模式(通过 settings.json/sandbox 命令启用),该模式利用操作系统级隔离机制(macOS 上的 seatbelt、Linux 上的 bubblewrap)限制网络访问和文件系统操作。启用后,沙箱会阻止模型任意发起网络请求,也不能访问项目目录之外的文件。未启用沙箱时,Claude Code 采用基于权限的模型,由您批准或拒绝各项工具调用。13

2026年5月的安全基线。 Claude Code v2.1.149 修复了 PowerShell 工作目录权限绕过问题、多处 PowerShell 允许规则和陈旧变量的权限分析缺陷,以及一项 git worktree 沙箱写入允许列表错误。后者错误地覆盖了整个主仓库根目录,而非仅覆盖共享的 git 内部数据。53如果您的 harness 允许使用 PowerShell 或采用 worktree 隔离的 Agent,请将 v2.1.149+ 视为最低版本,并严格限制 shell 规则。宽泛的 PowerShell(*) 和整个仓库的写入例外只是编排捷径,不能充当安全边界。

OpenAI Agents SDK 沙箱限制收紧(v0.17.0,2026年5月8日)。 在 OpenAI 方面,openai-agents-python v0.17.0 收紧了一个与之对应的边界:LocalFile.srcLocalDir.src 现在必须位于实体化操作的 base_dir 内(应用清单时 SDK 进程的当前工作目录),除非通过带有 SandboxPathGrantManifest.extra_path_grants 明确授权该来源。41相对本地来源从 base_dir 开始解析;绝对路径则必须已位于其中,或持有相应授权。此举修复了本地构件边界问题:旧版本允许清单将任意主机路径拉入沙箱工作区。迁移时,请在清单级别使用 SandboxPathGrant(path=..., read_only=True) 声明可信主机根目录,以只读方式挂载。应将 extra_path_grants 视为可信的应用程序配置;绝不能根据模型输出或不可信的清单输入填充授权。

OpenAI Agents SDK 后续基线(v0.17.3)。 0.17.1至0.17.3版本进一步强化了沙箱与会话:限制压缩包解压、验证 GitRepo 子路径、提供更清晰的沙箱提供商错误、避免在沙箱命令中暴露挂载点凭据、拒绝相对沙箱工作区根目录,并处理 Vercel 沙箱的终止状态。54如果使用 OpenAI 托管或由提供商支持的沙箱,而非仅使用 Claude Code hooks,请将 0.17.3 视为本节模式的当前最低版本。

跨产品的三种隔离模式(Anthropic,2026年5月)

Anthropic 的工程文章“How we contain Claude across products”(2026年5月25日)以供应商自身的视角,系统阐述了本节分散讲解的各项原则——包括上述设置级沙箱、worktree 隔离基线,以及将一切视为不可信的立场。81其核心做法是让隔离强度与产品使用场景相匹配,而这种对应关系本身就是要点:不存在唯一正确的隔离设计,只有与监督者身份和潜在风险相称的隔离方案。

  • 临时 gVisor 容器(claude.ai)。 服务器端执行发生在隔离基础设施上的 gVisor 容器中,每个会话配有临时文件系统。其威胁模型聚焦基础设施和租户隔离——用户的计算机根本无法被访问,因此无须防护本地内容。
  • 人工参与的操作系统沙箱(Claude Code)。 这是上述沙箱段落所述模式的策略化表达:macOS 使用 Seatbelt,Linux 使用 bubblewrap;允许读取,将写入限制在工作区内,并默认禁止网络访问——边界未涵盖的操作由人工审批。Anthropic 已将该运行时开源(sandbox-runtime),使边界可供审计。文章直言不讳地指出了薄弱环节:大约93%的权限提示会被批准。Auto Mode 分类器能在执行前拦截约83%的冒进行为,同时将审批提示减少84%,正是因为审批疲劳属于安全属性,而非单纯的用户体验问题。这正是本指南自 v2.1.193 起持续追踪的检查层立场。
  • 密封虚拟机(Claude Cowork)。 在平台虚拟机监控程序上运行完整虚拟机——macOS 使用 Apple Virtualization framework,Windows 使用 HCS——仅挂载选定工作区和 .claude 文件夹;主机上的其他内容完全不可见。凭据绝不进入虚拟机:它们留在主机钥匙串中,每个会话仅获得一个限定范围、可独立撤销的令牌。虚拟机内的防御性 MITM 代理负责强制执行此机制,只放行携带虚拟机自身预配置会话令牌的请求。攻击者嵌入的密钥会在边界处被拒绝,因为只有虚拟机知晓其来源。

这一分类体系背后的设计原则才是真正可迁移的部分。首先在环境层实施隔离,其次才在模型层进行引导:任何概率性防御都存在非零漏检率,因此必须由确定性边界兜住提示词级引导遗漏的风险——这正是本指南“hooks 保证执行”论点的供应商版本。让隔离强度与用户的监督能力相匹配:开发者可以在批准前评估 bash 命令,知识工作者却未必具备这种能力——因此 Code 提供权限对话框,而 Cowork 使用密封虚拟机。优先采用久经考验的基础组件,而非自行编写隔离代码:与 Anthropic 自有的定制允许列表代理和配置解析器相比,虚拟机监控程序、seccomp 和容器运行时经受住了更充分的对抗性检验。将项目本地配置和工具输出视为不可信:文章要求像对待任何来自互联网的入站请求一样,对待项目打开和配置加载;即使工具本身可信,也要将其输出视为攻击面——这与本指南对 Agent 间消息、subagent 读取的内容以及自报的 MCP 身份所采取的立场完全一致。将凭据留在沙箱之外:使用限定范围、可撤销、每个会话独立的令牌,而不是 Agent 可能泄露的环境常驻密钥。

设置接口正逐步落实第一项原则(v2.1.219)。 “首先在环境层实施隔离”容易获得认同,却一直难以真正配置,因为 Claude Code 的沙箱会通过询问来处理规则未覆盖的情况——正如上文93%的批准率所揭示的那样,权限提示不过是披着确定性外衣的概率性防御。sandbox.network.strictAllowlist 消除了出站访问中的询问环节:启用后,沙箱命令向不在允许列表中的主机发出的请求会被直接拒绝,而非弹出提示。84将它与 v2.1.216 的 sandbox.filesystem.disabled 配合使用,这两项设置便能组合成明确的安全态势,而非杂乱堆叠的开关——文件系统与网络隔离可以独立选择,网络隔离现在也能变为确定性边界。对于无人值守的 harness,网络隔离更为重要,因为出站通道会让注入指令演变成数据外泄,而审批疲劳的终极情形是键盘前根本无人可感到疲惫。代价则是确定性边界一贯的代价:允许列表必须准确无误,遗漏的主机会遭到不透明的拒绝,而不是触发询问。请列出 Agent 确实需要访问的主机,然后取消提示。

这些措施都无法取代 hook 层,而是位于其下方。隔离模式构成确定性基线,而本指南记录的 worktree 强制执行演进史也从小处印证了同一道理:边界只有在面对蓄意重定向时仍然有效,才称得上真正的边界;最有可能坚守边界的基础组件,往往并非为临时需求专门编写。

权限边界

权限系统在多个层级对操作进行管控:

层级 控制内容 示例
工具权限 可以使用哪些工具 将 subagent 限制为仅使用 Read、Grep、Glob
文件权限 可以修改哪些文件 禁止写入 .envcredentials.json
命令权限 可以运行哪些 bash 命令 阻止 rm -rfgit push --force
网络权限 可以访问哪些域名 为 MCP 服务器连接设置允许列表

参数级权限规则(2026年6月)

Claude Code v2.1.178 将权限规则从工具级扩展到参数级:Tool(param:value) 根据工具的输入参数进行匹配,并以 * 作为通配符。典型示例是 Agent(model:opus)——该规则禁止在特定模型层级上生成 subagents。63从架构角度看,这填补了上述四层表格无法表达的空白:过去只能整体允许或拒绝某个工具,无法约束其调用方式。如今,治理策略可以将“允许生成 subagents,但不得使用 Fable 5 层级”或“允许使用 Bash,但不得携带此标志”定义为确定性规则,而非提示词级请求。

与之配套的托管设置 enforceAvailableModels(v2.1.175)自上而下约束模型选择:它固定 Default 模型,并阻止用户或项目范围的设置扩大托管的 availableModels 允许列表。63二者可以协同使用——允许列表定义会话中存在哪些模型层级,参数级规则则限制 subagents 如何从中选择。截至 v2.1.196,管理员还可在组织控制台设置组织范围的默认模型,该模型在 /model 中显示为“Org default”。如此一来,整个 Agent 群体都能继承受治理的默认值,无须每位操作者逐一固定模型——形成与允许列表上限互为补充的基线。

路径范围的允许规则锚定至工作目录(2026年7月)

Claude Code v2.1.214 修复了路径范围权限规则中一个不易察觉的过度匹配问题:使用单层 dir/** 模式的允许规则——例如 Edit(src/**)——过去会自动批准对任意深度、任何名为 src 的目录进行编辑,包括 vendor/some-package/src/ 以及规则编写者从未打算授权的所有其他嵌套 src/。此类规则现在仅锚定至 <cwd>/dir;如果确实需要任意深度匹配,请明确使用 **/dir/**74拒绝和询问规则则有意保留旧有的任意深度匹配方式。这种不对称正是正确的故障安全设计:允许规则匹配范围过窄时会安全失败(弹出提示),而拒绝规则匹配范围过窄时会开放失败(应阻止的路径得以漏网)——因此允许规则变得更严格,拒绝规则则继续保持宽泛。如果您的设置依赖单层允许模式覆盖嵌套路径,那么从 v2.1.214 起,它们已悄然不再这样做。这正是修复按预期生效的表现,但仍值得检查一遍允许列表,重新明确声明真正需要的覆盖范围。

Auto Mode 破坏性命令防护机制(2026年6月)

Claude Code v2.1.183 缩小了 Auto Mode 对可能悄然丢失工作成果或摧毁环境的操作所造成的影响范围。除非您在会话中明确提出,否则 Auto Mode 现在会直接阻止以下操作:破坏性 git 操作(git reset --hardgit checkout -- .git clean -fdgit stash drop);当相应提交并非由 Agent 在本会话中创建时执行 git commit --amend;以及基础设施拆除操作(terraform destroypulumi destroycdk destroy),除非您明确指定了具体堆栈。65从架构角度看,这是对上述生成审查和参数级规则的补充:它并非限制使用哪个工具或工具如何生成,而是根据意图管控一小组明确且不可逆的命令——Agent 仍可运行这些命令,但只能遵照明确指令,不能擅自执行。对于自治 harness,应在自己的 PreToolUse hooks 中贯彻同一原则:会破坏状态的命令理应默认拒绝,只有操作者的明确信号才能解除限制。

2026年7月:Auto Mode 进入企业平台,同时一项提示变为不可豁免。 Auto Mode 在 v2.1.207 中于 Amazon Bedrock、Google Vertex AI 和 Microsoft Foundry 正式可用,并提供 disableAutoMode 托管设置作为企业退出选项——如今,每个第一方企业平台都能采用“分类器充当检查层”的安全态势,禁用它已成为明确的治理决策,而不再是平台能力缺口。68随后,v2.1.208 将灾难性删除防护设为绝对规则:灾难性删除的确认提示现在会穿透 --dangerously-skip-permissions Auto Mode。68这是一个值得注意的先例——Claude Code 首次出现任何权限态势都无法豁免的确认提示,包括明确的绕过标志。假定 --dangerously-skip-permissions 确实意味着零提示的自治 harness 设计应考虑这一例外;它恰好会在无人值守循环可能造成最严重且无法恢复的破坏时触发。

防伪造防护机制(2026年7月)

v2.1.203至v2.1.206版本封堵了 Agent 伪造自身审计记录的两条路径。68首先,一项 Auto Mode 规则现在会阻止篡改会话转录文件——会话自身的工具调用已无法重写会话记录。其次,后台任务通知现在会明确说明任务运行期间没有发生任何人工输入。第二项修复针对一种隐蔽的故障:过去,模型在总结后台任务时可能声称(或编造)转录中出现了从未发生的“批准”,而通知中没有任何内容能够反驳这种说法。如今,通知本身便构成了反证。

这一架构经验同样适用于 Evidence Gate:转录、通知和日志都是审计接口,而审计接口绝不能由其审计对象写入。平台如今会为自己的转录强制执行此规则;您的 harness 也应如此——证据报告、测试输出和 deliberation 记录都应置于模型可写路径之外。

提示词注入防御

Skills 和 hooks 可构成针对提示词注入的纵深防御:

带有工具限制的 Skills可防止遭到入侵的提示词获取写入权限:

allowed-tools: Read, Grep, Glob

PreToolUse hooks会验证每一次工具调用,无论模型受到何种提示:

# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
    echo "BLOCKED: Sensitive file access" >&2
    exit 2
fi

Subagent 隔离可限制影响范围。即使提示词遭到入侵,设置了 permissionMode: plan 的 subagent 也无法进行更改。

平台基线于2026年7月得到提升。 Claude Code v2.1.210 强化了 Agent tool,使其能够更好地抵御由 subagent 所读取内容携带的间接提示词注入——无论是受污染的文件、网页,还是 subagent 获取的工具结果,都更难操纵委派接口本身。69v2.1.211 则强化了链条中的人工环节:权限预览现在会消除双向文本覆盖、零宽字符和形似 Unicode 字符的干扰,因此命令已无法被特意构造成在审批对话框中显示得人畜无害,实际却执行其他操作。69对于需要人工在时间压力下批准渲染后预览的 harness,第二项修复尤为重要——显示界面本身也曾是注入攻击面。这两项变更都无法取代上述 hook 级防御,而是提升了其下方的平台基线。

Agent 日志和防护规则也是安全接口

2026年5月的两份安全公告进一步印证了一种规律:Agent 基础设施会产生新的敏感内容与可执行策略泄露或逃逸路径。GitHub 公告 GHSA-f3jg-756w-gm35 涉及 Gryph Agents 的有效载荷过滤问题:在默认日志记录行为下,敏感的工具有效载荷内容可能残留在本地 SQLite 日志中。45OSV GHSA-wxxx-gvqv-xp7p 则涉及由管理员保护的代理端点中,LiteLLM 自定义代码防护规则发生沙箱逃逸的问题。46

生产环境中的准则是:将 Agent 转录、工具有效载荷、SQLite 日志和防护规则执行视为敏感基础设施。持久化前进行脱敏,设置保留期限,并确保自定义防护代码在沙箱中运行且可供审查。提示词级的“不要记录密钥”规则远远不够;日志记录和防护规则路径需要确定性测试。

Hook 安全

将环境变量插入请求头的 HTTP hooks 必须显式提供 allowedEnvVars 列表,以防任意环境变量外泄:13

{
  "type": "http",
  "url": "https://api.example.com/notify",
  "headers": {
    "Authorization": "Bearer $MY_TOKEN"
  },
  "allowedEnvVars": ["MY_TOKEN"]
}

人类与 Agent 的职责划分

Agent 架构的安全性要求明确划分人类和 Agent 的职责:17

人类职责 Agent 职责
定义问题 执行流水线
设置信心阈值 在阈值内执行
确定共识要求 计算共识
制定质量门槛标准 强制执行质量门槛
分析错误 检测错误
作出架构决策 提供架构选项
注入领域背景 生成文档

其模式是:需要组织背景、伦理判断或战略方向的决策由人类负责;需要在巨大可能性空间中进行计算搜索的决策由 Agent 负责。Hooks 负责强制执行这条边界。

递归执行 Hooks

Hooks 同样会在 subagent 操作时触发。13如果 Claude 通过 Agent tool 生成 subagent,您的 PreToolUse 和 PostToolUse hooks 会针对该 subagent 使用的每个工具执行。如果不递归执行 hooks,subagent 就可能绕过安全门槛。SubagentStop 事件允许您在 subagent 完成时运行清理或验证操作。

这并非可选配置。如果 Agent 生成的 subagent 不受您的安全 hooks 约束,那么它便可强制推送到 main、读取凭据文件或运行破坏性命令,而您的安全门槛只能眼睁睁看着主对话无动于衷。

将成本视为架构

成本是一项架构决策,而非事后考虑的运维问题。2它分为3个层级:

Token 层级。 压缩系统提示词。删除教程式代码示例(模型了解这些 APIs),合并各文件中的重复规则,并以约束取代解释。“拒绝匹配敏感路径的工具调用”与用15行文字解释为何不应读取凭据具有同样效果。

Agent 层级。 优先全新生成,而非延续冗长对话。自治运行中的每个 story 都交给一个上下文干净的新 Agent。由于每个 Agent 都从头开始,上下文不会无限膨胀。使用任务简报而非 memory:与在积累了30个步骤的上下文中摸索相比,模型更擅长执行清晰的任务简报。

架构层级。 对于无状态操作,优先采用 CLI,而非 MCP。使用一次 claude --print 调用完成单次评估,成本更低,也不会产生连接开销。只有当工具需要持久状态或流式传输时,MCP 才更为合适。


决策框架

何时使用各类机制:

问题 使用 原因
每次编辑后格式化代码 PostToolUse hook 必须每次都确定性执行
阻止危险的 bash 命令 PreToolUse hook 必须在执行前阻止,退出码为 2
应用安全审查模式 Skill 可根据上下文自动激活的领域专业知识
探索代码库且不污染上下文 Explore subagent 上下文隔离,仅返回摘要
安全运行实验性重构 Worktree-isolated subagent 如果失败,可以丢弃变更
从多个视角审查代码 Parallel subagentsAgent Team 独立评估可避免盲点
决定不可逆的架构 Multi-agent deliberation 置信度触发 + 共识验证
跨会话持久化决策 MEMORY.md 文件系统可跨越上下文边界
共享团队标准 Project CLAUDE.md + .claude/rules/ 通过 Git 分发,并自动加载
定义项目构建/测试命令 CLAUDE.md 以命令为先、agent 可验证的指令
运行长期自主开发 Ralph loop(fresh-context iteration) 每次迭代拥有完整上下文预算和文件系统状态
会话结束时通知 Slack Async Stop hook 非阻塞,不会拖慢会话
提交前验证质量 PreToolUse hook on git commit 如果 lint/测试失败,则阻止提交
强制执行完成标准 Stop hook 防止 agent 在任务完成前停止

Skills vs Hooks vs Subagents

维度 Skills Hooks Subagents
调用方式 自动(LLM 推理) 确定性(事件驱动) 显式或自动委派
保证 概率性(由模型决定) 确定性(始终触发) 确定性(隔离上下文)
上下文成本 注入主上下文 零(在 LLM 外部运行) 独立上下文窗口
Token 成本 描述预算(窗口的 1%,回退为 8,000 个字符) 每个 subagent 使用完整上下文
最适合 领域专业知识 策略执行 聚焦工作、探索

常见问题

多少 hooks 才算太多?

约束来自性能,而不是数量。每个 hook 都会同步运行,因此总 hook 执行时间会叠加到每个匹配的工具调用上。只要每个 hook 在 200ms 内完成,用户级和项目级设置中合计 95 个 hooks 也能运行且没有明显延迟。需要关注的阈值是:如果某个 PostToolUse hook 给每次文件编辑增加超过 500ms,会话就会显得迟缓。部署前请用 time 分析 hooks 的性能。14

hooks 能阻止 Claude Code 运行命令吗?

可以。PreToolUse hooks 通过以代码 2 退出,阻止任何工具操作。Claude Code 会取消待执行的操作,并将 hook 的 stderr 输出显示给模型。Claude 会看到拒绝原因,并建议更安全的替代方案。退出码 1 是非阻塞警告,操作仍会继续执行。3

hook 配置文件应该放在哪里?

hook 配置放在 .claude/settings.json 中用于项目级 hooks(提交到仓库,与团队共享),或放在 ~/.claude/settings.json 中用于用户级 hooks(个人配置,应用于每个项目)。两者同时存在时,项目级 hooks 优先。脚本文件建议使用绝对路径,以避免工作目录问题。14

每个决策都需要 deliberation 吗?

不需要。置信度模块会从 4 个维度为决策评分(歧义性、复杂度、风险、上下文依赖)。只有总体置信度低于 0.70 的决策才会触发 deliberation,约占全部决策的 10%。文档修复、变量重命名和常规编辑会完全跳过 deliberation。安全架构、数据库 schema 变更和不可逆部署则会稳定触发。7

如何测试一个为产生分歧而设计的系统?

同时测试成功路径和失败路径。成功:agents 能进行有成效的分歧讨论并达成共识。失败:agents 过快趋同、始终无法达成共识,或超出 spawn 预算。端到端测试使用确定性的 agent 响应模拟每种场景,验证两个 validation gates 都能捕获所有已记录的失败模式。一个生产级 deliberation 系统在 3 层中运行 141 个测试:48 个 bash 集成测试、81 个 Python 单元测试,以及 12 个端到端流水线模拟。7

deliberation 对延迟有什么影响?

3-agent deliberation 会增加 30-60 秒的挂钟时间(agents 通过 Agent tool 顺序运行)。10-agent deliberation 会增加 2-4 分钟。consensus 和 pride check hooks 均可在 200ms 内运行。主要瓶颈是每个 agent 的 LLM 推理时间,而不是编排开销。7

CLAUDE.md 文件应该多长?

每个小节控制在 50 行以内,整个文件控制在 150 行以内。长文件会被上下文窗口截断,因此应将最关键的指令前置:先写命令和闭环定义,再写风格偏好。21

这套方法能用于 Claude Code 之外的工具吗?

这些架构原则(hooks 作为确定性关卡、skills 作为领域专业知识、subagents 作为隔离上下文、文件系统作为 memory)在概念上适用于任何 agentic system。具体实现使用的是 Claude Code 的生命周期事件、matcher patterns 和 Agent tool。AGENTS.md 将同样的模式带到 Codex、Cursor、Copilot、Amp 和 Windsurf。21 即使实现细节依赖具体工具,harness 模式本身并不绑定工具。


快速参考卡片

Hook 配置

{
  "hooks": {
    "PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
    "PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
    "Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
    "SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
  }
}

Skill Frontmatter

---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---

Subagent 定义

---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---

Instructions for the subagent.

退出码

代码 含义 用途
0 成功 允许操作
2 阻止 安全关卡、质量关卡
1 非阻塞警告 日志记录、建议性消息

关键命令

命令 目的
/compact 压缩上下文,保留决策
/context 查看上下文分配和已激活的 skills
edit .claude/agents/ 管理 subagents — /agents 向导已在 v2.1.198 中移除;请直接创建或编辑定义,或让 Claude 执行
/goal <condition> 让 Claude 持续朝完成条件推进
claude agents 打开 Agent View,查看正在运行、被阻塞和已完成的会话
CLAUDE_CODE_WORKFLOWS=1 启用 Workflow tool,用于确定性的 multi-agent orchestration
claude -c 继续最近的会话
claude --print 一次性 CLI 调用(无对话)
# <note> 向 memory 文件添加备注
/memory 查看和管理 auto-memory

文件位置

路径 目的
~/.claude/CLAUDE.md 个人全局指令
.claude/CLAUDE.md 项目指令(通过 Git 共享)
.claude/settings.json 项目 hooks 和权限
~/.claude/settings.json 用户 hooks 和权限
~/.claude/skills/<name>/SKILL.md 个人 skills
.claude/skills/<name>/SKILL.md 项目 skills(通过 Git 共享)
~/.claude/agents/<name>.md 个人 subagent 定义
.claude/agents/<name>.md 项目 subagent 定义
.claude/rules/*.md 项目规则文件
~/.claude/rules/*.md 用户规则文件
~/.claude/projects/{path}/memory/MEMORY.md Auto-memory

更新日志

日期 变更 来源
2026-08-01 时效性修正:一处“截至2026年7月”的版本声明已经落后于指南其余内容。 Python SDK 段落声称该软件包“已在PyPI上更新至v0.2.111(捆绑Claude CLI v2.1.202),而TypeScript SDK 已更新至v0.3.203”——两条版本线均落后17个版本,而本指南其他章节已正确记录0.2.128和0.3.220。现已改为v0.2.128(捆绑CLI v2.1.220,mcp最低版本要求提高至>=1.23.0)和v0.3.220,并标注经核实的检查日期,而非宽泛的月份。新增86引用PyPI、npm和Python SDK 更新日志。此期间无上游新版本:Claude Code v2.1.220、Codex v0.146.0稳定版(仅有v0.147.0 alpha版)、FastAPI 0.141.1、XcodeBuildMCP 2.7.0、MCPVault 0.12.4、hermes-agent 0.19.0、Midjourney Version 8.2、Suno V5.5、Apple 26.6稳定版均未变化。 86
2026-07-29 完整性修正:补充7月21日条目遗漏的3个TS SDK v0.3.216字段。 对照本指南重新检查claude-agent-sdk-typescript更新日志后发现,v0.3.216字段列表少了3项:rewindFiles响应包含可选的skippedLinks计数,用于记录倒回安全防护机制拒绝恢复或删除的路径;成功结果消息还包含可选的user_message_uuidrequest_sent_wall_ms,用于关联跨主机请求延迟。已同时添加到正文列表和75;未新增脚注。v0.3.215至v0.3.220范围内的其余内容均已涵盖,包括subagents嵌套深度的变更历史(发布时为5,在v2.1.217中降至1,最终在v2.1.219中定为3)和20的并发上限——SDK 更新日志中“深度上限从5降至1”这一行只是过时快照,本指南追踪的进度早已超过该状态。已确认Agent SDK npm最新版本为0.3.220(7月24日),PyPI最新版本为0.2.128;此期间没有更新版本。 75
2026-07-27 渲染修正,内容未变。此更新日志的表头声明了两列,但各行实际提供三列,导致python-markdown将每行截断为DateChange,并且悄无声息地丢弃Source单元格——连带丢失9处脚注引用([^83][^84][^85][^103][^105][^107][^108][^110][^111])。由于这9处脚注未在其他位置引用,它们都被渲染为参考文献列表条目,但其返回箭头指向页面中并不存在的锚点。表头现已改为Date \| Change \| Source,恢复了全部9处引用。通过网站自身的Markdown配置渲染本指南,并比较id="fn:N"id="fnref:N"进行验证:修正前有77处有效引用,修正后有86处,孤立引用为零。本轮检查还在FastAPI + HTMX指南和Obsidian指南中发现并修复了同一缺陷;ios-agent-development存在另一处尚未修复的引用缺口,已在其自身报告中注明。
2026-07-25 指南v1.27:嵌套深度默认值修正(3,而非1)、Claude Opus 5,以及第4个护栏维度。 修正——subagents生成深度已恢复为3(v2.1.219):“subagents现在默认可以生成嵌套subagents,最深为3层(原为1层);设置CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1可禁用嵌套。”默认值发布时为5(v2.1.172),随后降至1(v2.1.217),最终定为3(v2.1.219)——后两次调整发生在短短3天内。“递归防护”小节不再将任何默认值描述为既定不变;现明确指出,深度是一项不稳定的平台参数,应通过CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH显式固定,而不应直接继承。配套修正:--forward-subagent-text现在也会转发第2层及更深层级subagents的文本,并按生成它们的Agent tool_use id标识——应依据该id对转发文本分组,不要假定每一行都来自直接子级。DirectoryAdded hook(CC v2.1.219 + TS SDK v0.3.219):这是自MessageDisplay(v2.1.152)以来首个新增的生命周期事件,在/add-dir或SDK register_repo_root控制请求于会话中途注册工作目录后触发——启动时执行的工作区断言(信任检查、机密扫描、路径作用域规则、各代码仓库策略)必须在该事件触发后重新运行;事件表现有30项。sandbox.network.strictAllowlist(v2.1.219):对沙盒命令访问未列入允许列表的主机实施拒绝,且不发出提示——实现确定性的出站流量拦截,并可与v2.1.216的sandbox.filesystem.disabled组合使用;已加入“遏制模式”小节,体现settings接口终于跟上“首先在环境层实施遏制”的原则。编排宽度是第4个护栏维度(v2.1.219):动态工作流默认采用中等规模指导值(“目标为少于15个agents”),可通过任意settings文件中的新workflowSizeGuideline键设置(TS SDK settings类型也包含此键),并显示在运行中工作流的状态行里——原有的3维框架(生成数量、深度、并发数)现已扩展为4维,而15终于与本指南12-agent审议预算处于同一数量级,不再像失控的保险丝。Claude Opus 5(claude-opus-5,7月24日):新一代默认Opus——上下文为1M,每MTok价格为$5/$25(与Opus 4.8相同),fast mode价格为$10/$50,速度约为2.5倍;其Frontier-Bench v0.1成绩是Opus 4.8的两倍以上,并以一半成本将CursorBench 3.2得分缩小到与Fable 5相差0.5%以内。本指南推荐的agentic默认模型从Opus 4.8改为Opus 5;Opus 4.7已退出fast mode(/fast现适用于Opus 5和Opus 4.8),auto-mode分类器针对Fable-5的回退模型改为Opus 5。仅记录于更新日志:Py SDK v0.2.127——后台任务会悄然绕过PreToolUse hooks:当后台subagents仍在运行时,query()会在收到第一个result帧后关闭stdin,致使其SDK-MCP工具调用因"Stream closed"而失败,同时跳过hook(#1103)。这是继TS v0.3.208的abort→hook-success之后,一个月内第2次hook执行绕过问题;现已在SDK hook流式处理注意事项中明确指出这一模式——SDK端的强制执行会在生命周期边界处失效放行,而且悄无声息,因为被绕过的hook看起来与批准请求的hook并无二致。TS SDK v0.3.219:中断控制请求新增可选启用的cancel_queued(能力interrupt_cancel_queued_v1);结果和初始化中新增fast_mode_disabled_reason;切换模型后,初始化响应不再报告生成时模型的fast_mode_stateCC v2.1.219 MCP诊断功能:无头stream-json初始化事件中新增mcp_server_errorsclaude mcp list/mcp会在连接失败时显示HTTP状态和错误文本;针对MCP配置值新增隐藏空白字符警告。托管settings作用域:托管MCP允许列表/拒绝列表中的${VAR}条目现在从启动环境和托管settings环境解析,不再从settings文件环境解析——这是一项与治理密切相关的解析顺序变更。其他:当轮次在流式传输中途终止时,claude -p不再丢弃已经生成的文本;当CLAUDE_CODE_GIT_BASH_PATH指向的不是bash/sh二进制文件时,该设置会被忽略并显示警告;捆绑的claude-api skill默认使用Opus 5。CC v2.1.220 / TS v0.3.220 / Py v0.2.128(7月25日):仅包含错误修复和一致性版本升级。MCP:没有规范性合并;无状态规范仍计划于2026-07-28落地。 84 85 87
2026-07-24 指南v1.26:吸收了Anthropic的遏制模式文章,并更新至Claude Code v2.1.218。在“安全注意事项”中新增了“跨产品的三种遏制模式”小节,内容源自Anthropic的工程文章《我们如何跨产品遏制Claude》(2026年5月25日):服务器端的临时gVisor容器(claude.ai)、有人参与监督的操作系统沙箱(Claude Code:Seatbelt/bubblewrap,以及已开源的sandbox-runtime),以及平台虚拟机监控程序上的密封虚拟机(Claude Cowork:Apple Virtualization framework / Windows HCS;凭据存储在主机钥匙串中,并由虚拟机内的防御性MITM代理强制执行有作用域且可撤销的会话令牌)——此外还纳入了文章阐述的harness设计原则:优先在环境层实施遏制;根据用户的监督能力选择相匹配的隔离方式;优先采用久经考验的基础组件,而非自行编写隔离代码;将项目本地配置和工具输出视为不可信输入;凭据置于沙箱之外。仅更新日志:CC v2.1.218(7月22日)——自动模式分类器会裁定危险rm、后台&和可疑Windows路径检查,而非弹出权限对话框;在自动模式下,计划模式会将静态分析器无法确认只读的Bash操作交由分类器处理;agent frontmatter hooks要求agent文件所在文件夹本身已获得工作区信任;context: fork skills默认在后台运行(可通过background: false选择退出);/code-review作为后台subagent运行;/deep-research不再自行调用;无头/SDK会话压缩后仍会保留分叉会话的谱系;使用Ctrl+B转入后台时会遵守后台shell上限。TS SDK v0.3.218(7月22日):新增SkillToolOutput.background标志;api_error_status可报告流式传输中途出现的429/529错误;modelUsage新增canonicalModelprovider。Py SDK v0.2.126(7月22日):新增ResultMessage.terminal_reason;带有canonicalModel/provider的强类型model_usage;捆绑CLI v2.1.218。MCP:无规范性合并;无状态规范仍定于2026年7月28日发布。 81 82 83
2026-07-22 指南v1.25:Claude Code v2.1.217——回退递归subagent机制并增加并发上限。默认禁用嵌套生成:subagents不再生成自己的subagents——v2.1.172引入的默认5层递归一直延续至v2.1.216;现在,如需更深层嵌套,必须通过CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH主动启用(已重写“递归防护”小节)。并发上限:默认最多同时运行20个subagents(CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS),避免一条消息无限扩散为大量后台agents。至此,第一方防护机制已覆盖用户层生成预算防护所跟踪的全部3个维度:每个会话的生成总数(v2.1.212,上限200)、嵌套深度(v2.1.217,默认1层)和并发宽度(v2.1.217,默认20)。仅更新日志:CC v2.1.217中的--max-budget-usd现在会真正停止后台subagents(达到上限后,系统会拒绝新的生成请求,并停止正在运行的后台agents);后台会话隔离会将通过符号链接引用的工作目录规范化。Py SDK v0.2.125捆绑CLI v2.1.217,SDK接口层没有变化;TS SDK v0.3.217同期发布。MCP PR #3092(7月21日合并):规范性修正,使SEP-2575错误代码与重新编号的规范草案及一致性测试套件保持一致——7月28日的发布准备工作仍在继续。 78 79 80
2026-07-21 指南v1.24:Claude Code v2.1.214–v2.1.216强化路径作用域和worktree执行保障,Codex v0.145.0带来多agent V2和跨harness导入。路径作用域规则锚定cwd(v2.1.214):单路径段的dir/**允许规则(例如Edit(src/**))过去会自动批准对目录树中任意深度同名dir/目录的写入——现在仅锚定至<cwd>/dir;使用单路径段dir/**的hook if:条件同样仅限cwd(如需匹配任意深度,请写成**/dir/**);拒绝/询问规则则有意保留任意深度匹配(采用非对称的失效安全设计:允许规则失效时应退回提示,拒绝规则绝不能失效放行)。Worktree隔离达到强制执行级别(v2.1.216):worktree subagents过去可以通过git -C--git-dirGIT_DIR/GIT_WORK_TREE将git重定向至共享检出目录——该漏洞现已封堵;worktree会话不再落入其他项目遗留的worktree;工作流/计划任务写入不再跟随植入.claude的符号链接;/rewind会拒绝符号链接和硬链接。Skills自动激活机制回退(v2.1.215):Claude不再自行调用捆绑的/verify/code-review skills——只能显式调用。Codex v0.145.0:选择启用的多agent V2已趋于稳定(支持配置sub-agent模型、推理级别和并发数,并恢复角色);/import现在可迁移Claude Code以及Cursor的设置、MCP服务器、plugins、会话、命令和项目级memories——在v0.140.0基础上实现完整的跨harness迁移。仅更新日志:CC v2.1.214新增EndConversation工具;一批失效关闭的Bash/PowerShell强化措施(fd重定向失效时关闭;超过10,000个字符的命令始终询问;zsh下标操作会触发询问;关闭help/man自动允许;docker/Podman守护进程重定向标志会触发询问;file -m/-f需要权限;修复PowerShell 5.1绕过问题);即使stdout JSON未通过架构验证,hook以退出码2退出时仍会阻止操作;memory frontmatter新增ISO格式的modified时间戳,且不会在内联#处静默截断;新增OTel message.uuid/client_request_id/tool_sourceCLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH。CC v2.1.216新增sandbox.filesystem.disabled(无需文件系统隔离即可控制网络出站流量);恢复的后台agent会话会还原该agent的提示词/工具限制;会话期间对skill/命令的更改无需重启即可显示在斜杠菜单中。TS SDK v0.3.214/v0.3.216:set_permission_mode会拒绝未知模式;因中断而截断的消息带有aborted: truetool_progress新增subagent_type/subagent_retry;任务通知新增子类型scheduled-triggerSessionStart来源新增"fork";新增tool_result_meta伴随数据(non_execution_kinduser_feedback);rewindFiles通过skippedLinks报告回退安全防护拒绝恢复或删除的路径;成功结果携带user_message_uuidrequest_sent_wall_ms,用于关联跨主机请求延迟。Py SDK v0.2.124:修复Windows上的BatBadBut类问题(拒绝生成.bat/.cmdresume/session_id中的cmd.exe元字符会引发ValueError;以短横线开头的extra_args绑定为--flag=value)。Codex v0.145.0强化:MCP启动超时、串行化OAuth刷新、非阻塞式OAuth发现、更强的强制rm检测、保留拒绝原因,以及实验性的分页线程历史记录。MCP 2026年7月28日发布准备(文档PR #3064/#3066/#3098,7月21日合并):最终确定规范,将Tasks作为可选的io.modelcontextprotocol/tasks扩展呈现;HTTP+SSE已弃用,建议改用Streamable HTTP。 74 75 76 77
2026-07-17 指南v1.23:Claude Code v2.1.203–v2.1.212失控循环防护措施与注入加固、TS SDK协议接口、MCP无状态身份草案、Codex/OpenAI功能对齐。第一方失控循环防护措施(v2.1.212):每个会话的subagents生成数量上限(默认为200,CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION,执行/clear后重置)以及WebSearch上限(200,CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION)——用户空间的生成预算模式现已获得原生兜底机制;Task工具的mode参数已弃用(subagents继承父会话的权限模式);/fork现在会创建新的后台会话(会话内变体已更名为/subtask);MCP调用超过2分钟后自动转入后台(CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS)。Hook与自动模式的优先级(v2.1.211):PreToolUseask会将决策下限设为必须提示用户(对于未在沙箱中运行的Bash,自动模式无法覆盖);stream-json支持--forward-subagent-text/CLAUDE_CODE_FORWARD_SUBAGENT_TEXT;“始终允许”规则会跨worktree持久保存在仓库根目录;权限预览会消除双向文本、零宽字符和形似字符欺骗。v2.1.210:修复了使用worktree隔离的subagents意外修改主检出目录的问题;Agent tool已加固,可抵御来自subagent所读内容的间接注入;自动模式分类器默认为Sonnet 5,并在每个会话中固定;写入超出限制的MEMORY.md时会报错,不再静默截断。v2.1.207/v2.1.208:自动模式在Bedrock/Vertex/Foundry上正式发布(可通过disableAutoMode选择退出);灾难性删除操作的提示会穿透--dangerously-skip-permissions和自动模式;新增企业启动器CLAUDE_CODE_PROCESS_WRAPPER;当MCP工具数量较多时,工具轮次最高提速7倍,转录内容缩小79倍。v2.1.203–v2.1.206:防止伪造(禁止篡改转录文件;后台任务通知明确说明并未发生人工输入);MCP的roots/list通过roots/list_changed纳入额外工作目录;/doctor会建议精简可从代码库推导出的CLAUDE.md内容。TS SDK v0.3.205–v0.3.208:类型化中断回执(still_queuedinterrupt_receipt_v1)、command_lifecycle帧、AgentToolCompletedOutput、无需updatedInputcanUseTool {behavior:'allow'};v0.3.208安全修复——此前,调用方在hook等待期间中止操作会被转换为hook成功,导致受PreToolUse管控的工具在中止后仍可执行。MCP规范草案(PR #3002,7月16日合并):可选的自报告io.modelcontextprotocol/serverInfo响应_meta以及可选的clientInfo——仅用于显示和日志记录,不应(SHOULD NOT)作为安全决策依据;最终无状态规范将于2026年7月28日发布。Codex:v0.143.0默认通过工具搜索提供MCP工具(延迟加载工具);v0.144.0新增writes应用审批模式,且MCP交互式身份验证正式发布;v0.144.5扩展了危险命令检测。OpenAI托管式多智能体测试版:openai-agents-python v0.18.2(7月11日)和openai-agents-js v0.13.2(7月10日)。仅列于变更日志:SDK argv标志注入修复(TS 0.3.212/Py 0.2.121——以连字符开头的resume/session_id值现在采用等号形式传递);BashToolOutput.timedOutAfterMsSDKAssistantMessage.timestamp;CC v2.1.204无头模式下的SessionStart流式传输修复;openai-agents的GPT-5.6默认设置;MCP的Mcp-Param-*拒绝后重试指南。 68 69 70 71 72 73
2026-07-07 指南v1.22:Claude Code v2.1.196–v2.1.202。Sonnet 5现为随产品发布的默认模型(v2.1.197)——重新阐述了模型层级说明(本指南仍建议将Opus 4.8作为自主harness的默认agentic模型)。subagents现在默认在后台运行(v2.1.198):background字段现在用于固定行为,而非选择启用;Explore agent继承会话模型(最高限制为Opus);subagents和压缩过程继承扩展思考配置;后台claude agents会话会自动提交、推送并创建PR草稿,同时触发带有agent_needs_input/agent_completedNotification hook;/agents向导已移除(请直接编辑.claude/agents/)。v2.1.199:SessionStart/Setup/SubagentStart hooks会在退出代码为2时显示stderr;关于跨会话权限的说明中新增了对SendMessage复用名称导致错误路由的检测;最多可加载5个堆叠的斜杠skills。v2.1.200:subagent的permissionMode列表将default权限模式标记为“手动”(manual别名)。v2.1.196:治理章节中加入了组织级默认模型说明;已堵住MCP自我审批漏洞。SDK版本现状:claude-agent-sdk v0.2.111(Python,捆绑CLI v2.1.202)/@anthropic-ai/claude-agent-sdk v0.3.203(TS),在已记录的0.1.x接口基础上进行了增量更新。 67
2026-07-02 指南v1.21:hook匹配器与分类器治理更新。Claude Code v2.1.195:包含连字符的标识符匹配器改为精确匹配,不再进行子字符串匹配(请参阅Hook架构——匹配器语义)。Claude Code v2.1.193:autoMode.classifyAllShell会将所有shell命令交由自动模式分类器处理,并在转录记录、浮层通知和/permissions中显示拒绝原因(请参阅安全注意事项)。Codex v0.142.2:包含无法检查的AST区域的PowerShell现在需要获得批准。本轮更新期间,所有项目均已根据权威变更日志完成验证。 66
2026-06-20 指南v1.20:Claude Code v2.1.183与Codex v0.141.0——治理和远程执行安全。在安全注意事项中新增了自动模式破坏性命令防护措施(CC v2.1.183会强制阻止git reset --hard/checkout -- ./clean -fd/stash drop、对非agent提交执行git commit --amend,以及未指定命名栈的terraform/pulumi/cdk destroy,除非这是您明确要求的操作),并将其定位为参数级规则和生成前审查在意图层面的补充;在Codex功能对齐说明中加入了加密Noise中继远程执行器(Codex v0.141.0:端到端加密的执行器通道、跨平台保留当前工作目录和shell,以及P-521 TLS)。 65
2026-06-16 指南v1.19:Claude Code v2.1.173–v2.1.179治理与作用域原语,以及Codex v0.140.0跨工具导入。将v2.1.178版本的内容融入正文:安全→权限边界中新增了参数级权限规则Tool(param:value)*通配符(例如使用Agent(model:opus)阻止某个模型层级),以及enforceAvailableModels托管设置(v2.1.175);自动模式现在会在启动前审查subagent生成操作,堵住了借助生成操作绕过限制的漏洞(Subagent模式);Skills系统新增了嵌套.claude/skills加载与就近优先解析,适用于嵌套.claude/目录树中的skills/agents/workflows/output-styles;并修复了disallowedToolsMCP服务器规范匹配问题(Subagent配置字段)。在Codex功能对齐说明中新增了Codex /import跨工具可移植功能和永久删除会话功能(v0.140.0)。 63 64
2026-06-10 指南v1.18:递归sub-agents(Claude Code v2.1.172)。在递归防护小节中新增说明:Claude Code sub-agents现在可以生成自己的sub-agents,最多嵌套5层——此前委派实际上仅限1层(v2.1.172,6月10日)。重新阐述了用户空间生成预算/深度上限模式,将其作为防止5层树状结构无限扩散的控制措施;5层应视为平台上限,而非默认值。 62
2026-06-09 指南v1.17:Claude Code v2.1.169–v2.1.170与Codex v0.138.0–v0.139.0治理及multi-agent-v2加固。将5项经过验证的harness架构变更融入正文。Skills系统新增了“将捆绑接口隐藏为治理措施”小节:disableBundledSkills设置(以及CLAUDE_CODE_DISABLE_BUNDLED_SKILLS环境变量)会向模型隐藏捆绑的skills、workflows和内置斜杠命令,以此有意识地缩小攻击面(v2.1.169)。6月的Hook架构小节新增了--safe-mode标志(以及CLAUDE_CODE_SAFE_MODE),它会在禁用所有自定义项——CLAUDE.md、plugins、skills、hooks、MCP——的情况下启动会话,便于在纯净环境中排查问题并实施治理(v2.1.169);另新增一则模型层级说明:Anthropic的Claude Fable 5claude-fable-5)于6月9日发布,定位为高于Opus的Mythos级别,可在v2.1.170中通过/model claude-fable-5选择;Opus 4.8仍是Claude Code的默认agentic模型。内存与上下文部分新增了/cd命令(v2.1.169),可将会话切换至新的工作目录,同时不会破坏会话进行期间的提示词缓存。多智能体编排/Codex功能对齐部分针对生产环境完成加固:close_agent已更名为interrupt_agent(v0.139.0);新增加密的agent间消息载荷、v2 agent配置目录、agent驻留LRU机制,以及按活跃执行数统计并发量(v0.138.0);AGENTS.md发现过程改为通过环境文件系统进行,并保留逻辑路径,从而在远程或使用符号链接的工作区中正确选择文件(v0.138.0/v0.139.0);subagent的MCP启动警告仅限所属线程,不再重复发送至父线程(v0.139.0)。 60 61
2026-06-08 指南v1.16:来自Claude Code v2.1.162–v2.1.166和Codex v0.137.0的6月agent架构模式。新增“Stop-hook引导、跨会话权限与multi-agent v2”小节,涵盖4项与harness相关的变更:(1) Stop/SubagentStop hooks可返回hookSpecificOutput.additionalContext,注入“尚未完成,原因如下”的反馈,并在不产生hook错误块的情况下继续当前轮次(v2.1.163);(2) 跨会话消息传递得到强化,经由SendMessage从其他会话转发的消息不再携带原始用户的权限——应将传入的agent间消息视为不可信数据(v2.1.166);(3) fallbackModel设置最多可串联3个备用模型,当遇到不可重试的API错误时执行一次回退重试;claude agents --json还新增waitingFor字段,以增强agent集群的可观测性(v2.1.162/166);(4) Codex multi-agent v2(v0.137.0)让runtime与各thread保持关联,默认将hide_spawn_agent_metadata设为true,将父级事件传播至子级监听器,并新增v1 skills扩展,支持按轮次解析目录,以及thread启动/轮次错误生命周期贡献者事件。AGENTS.md规范未发生变化(仍由Agentic-AI-Foundation维护,且没有版本化changelog)。 59
2026-05-31 指南v1.15:Claude Code v2.1.157与Hermes v0.15.1/v0.15.2补丁。新增.claude/skills/中的Plugin与Skill融合”小节:Claude Code v2.1.157会将项目.claude/skills/目录中的任何文件夹自动加载为plugin,无需在marketplace注册;claude plugin init <name>则会在该目录中搭建包含manifest和SKILL.md的新plugin。其harness影响切实可见——范围较小的项目工具无需再承担manifest负担即可纳入版本控制;plugins仍采用可捆绑安装的ZIP形式。同一版本还支持通过EnterWorktree在会话期间切换Claude管理的worktrees,并在agent完成后保持后台worktrees未锁定状态,确保git worktree remove/prune能够顺利执行。Hermes Agent v0.15.1(5月29日)是与Velocity同日发布的hotfix:修复loopback模式下dashboard的401重新加载循环;Docker现在要求显式设置HERMES_DASHBOARD_INSECURE=1;MCP裸命令(npxnpmnode)可在Docker中解析;恢复Skills页面;Kanban workers可正确响应SIGTERM;Skills.sh目录通过sitemap从858项扩展至19,932项。Hermes v0.15.2(5月29日)是仅涉及打包的hotfix,在wheel和sdist发行包中加入了plugin.yaml manifests。 58
2026-05-28 指南v1.14:Claude Code v2.1.152-v2.1.154、Codex v0.134.0-v0.135.0与Hermes v0.15.0架构模式梳理。Claude Code调整了默认设置并新增编排原语:Opus 4.8现已成为默认模型,默认使用high effort,并新增/effort xhighdynamic workflows通过/workflows在后台编排数十至数百个agents;lean system prompt现已成为除Haiku/Sonnet/Opus 4.7及更早版本外所有模型的默认选项;新的MessageDisplay hook事件允许hooks在assistant文本显示时对其进行转换或隐藏;skill/command frontmatter中的disallowed-tools会在skill处于活动状态时移除相应工具;/reload-skills无需重启即可重新扫描skill目录;SessionStart hooks可返回reloadSkills: true并设置hookSpecificOutput.sessionTitle;主模型不可用时,--fallback-model可在会话期间切换模型;auto mode不再要求用户主动同意pluginSuggestionMarketplaces托管设置可将组织marketplaces加入允许列表,用于提供上下文感知建议;claude agents支持! <command>后台shell会话;plugins可声明defaultEnabled: false;stdio MCP子进程环境现在包含CLAUDE_CODE_SESSION_IDCLAUDECODE=1。Codex v0.134.0将--profile设为CLI、TUI权限和sandbox流程中的主要profile选择器(旧版配置会被拒绝,并提供迁移指引),新增本地会话历史搜索,改进MCP设置以支持按服务器指定环境,并为streamable HTTP服务器提供OAuth,还允许声明readOnlyHint的只读MCP工具并发运行;v0.135.0新增更丰富的codex doctor诊断信息、/status远程详情、vim文本对象编辑、/permissions中的命名权限profiles,以及Python SDK中的Sandbox预设。Hermes Agent v0.15.0(5月28日)发布Velocity版本run_agent.py跨14个模块重构了76%,推出支持自动分解与swarm拓扑的multi-agent Kanban v2,以单个bootstrap token取代各provider密钥的Bitwarden Secrets Manager,在3个安全关口部署抵御Brainworm类prompt injection的Promptware防御,并加入skill bundles、可在单个终端中管理多个会话的TUI session orchestrator,以及速度提升4,500倍且移除LLM依赖项的session_search。对harness架构的启示如下:命名profile模式(Codex --profile、Claude Code pluginSuggestionMarketplaces)正在成为multi-tenant agent runtimes的标准配置原语;并发只读MCP工具(Codex readOnlyHint)是并行获取非变更性上下文的正确模式;MessageDisplay hook为operators提供了一级转换界面,这是PostToolUseStop过去无法触及的;lean system prompt成为默认选项后,operator定义的上下文与provider scaffolding之间长期存在的取舍也不复存在。 55 56 57
2026-05-24 指南v1.13:Claude Code v2.1.150与OpenAI Agents SDK v0.17.3安全性及时效性审查。本地claude --version返回2.1.144 (Claude Code),npm上的@anthropic-ai/claude-code最新版本返回2.1.150,GitHub最新release返回v2.1.150。新增v2.1.149 harness指引,涵盖PowerShell权限绕过修复、PowerShell允许规则/过期变量权限分析修复,以及git-worktree sandbox写入允许列表修复;同时注明v2.1.150仅涉及内部基础设施,没有公布面向用户的变更。PyPI上的openai-agents最新版本为0.17.3,因此OpenAI sandbox小节现已注明0.17.1-0.17.3针对压缩包解压、GitRepo子路径、sandbox凭据、相对workspace根目录和provider终止状态处理的后续强化措施。5354
2026-05-21 指南v1.12:Claude Code v2.1.147 Workflow梳理。本地claude --version返回2.1.144 (Claude Code),npm上的@anthropic-ai/claude-code最新版本返回2.1.147。新增默认关闭的Workflow工具,将其作为第一方确定性multi-agent编排原语,并明确hooks、测试、审查关卡、spawn预算和证据报告仍是正确性边界。52
2026-05-15 指南v1.11:Claude Code v2.1.142后台会话与plugin可靠性梳理。本地claude --version返回2.1.141 (Claude Code),npm上的@anthropic-ai/claude-code最新版本返回2.1.142。新增operator指引,涵盖新的claude agents调度flags、Opus 4.7 Fast-mode默认设置、根级plugin SKILL.md发现、plugin LSP可见性、MCP_TOOL_TIMEOUT远程HTTP/SSE行为,以及后台会话、daemon和plugin缓存的可靠性修复。51
2026-05-14 指南v1.10:Claude Code v2.1.141 operator信号与作用域梳理。本地claude --version返回2.1.141 (Claude Code),npm上的@anthropic-ai/claude-code最新版本返回2.1.141。新增hook指引,明确terminalSequence用于向operator发出信号,而非强制执行;注明可通过claude agents --cwd <path>使用限定目录范围的Agent View;并记录CLAUDE_CODE_PLUGIN_PREFER_HTTPSANTHROPIC_WORKSPACE_ID对plugin安装和workload-identity federation作用域的架构影响。50
2026-05-13 指南v1.9:Claude Code v2.1.140可靠性梳理。本地claude --version返回2.1.140 (Claude Code)。在agent-hook指引中新增subagent_type,并根据v2.1.140对ConfigChangedisableAllHooksallowManagedHooksOnly、权限对话框环境变量显示、设置同步后的自定义样式重置、Windows Git Bash原生包回退机制及/scroll-speed行为的修复,更新hook治理小节。49
2026-05-11 指南v1.8:Claude Code v2.1.139时效性审查与针对agent安全性/内存的专项扫描。已验证本地claude --version为2.1.139,并新增v2.1.139运维变更:通过claude agents使用Agent View、/goal完成循环、command-hook argsPostToolUse continueOnBlock、MCP CLAUDE_PROJECT_DIR,以及OpenTelemetry活动时长修复。424344新增来自“The Memory Curse”arXiv预印本的内存整理警告、来自PR生命周期arXiv预印本的人工合并权限指引,以及来自Gryph Agents和LiteLLM安全公告的agent日志/guardrail安全指引。45464748修正Skills、Hooks与Subagents对比中已过时的token预算行,将2%更新为当前的1% / 8,000字符skill描述预算。
2026-05-09 指南v1.7:Claude Code v2.1.136 + openai-agents-python v0.17.0发布后第3天跟进。 在Hook架构中新增autoMode.hard_deny及v2.1.136 hook/plugin修复小节,涵盖新的无条件阻止层级、VS Code/JetBrains/Agent SDK中MCP在/clear后消失的问题修复、并发刷新时MCP OAuth刷新令牌丢失、匹配Edit(...)允许规则时计划模式写入阻止失效的问题修复、plugin Stop/UserPromptSubmit缓存清理竞态、skills条目隐藏默认skills/目录,以及CLAUDE_ENV_FILE SessionStart-hook环境变量在/resume//clear后失效的问题。40 在生产模式中新增OTel反馈调查小节,介绍CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL40 扩展沙箱小节,加入openai-agents-python v0.17.0的限制强化:除非通过带有SandboxPathGrantManifest.extra_path_grants授予权限,否则LocalFile.src / LocalDir.src必须位于base_dir之内。41 在托管式与自托管式Harnesses中新增RealtimeAgent默认模型说明(gpt-realtime-2)。41 仅更新日志:Claude Code v2.1.137(Win VSCode激活修复)、v2.1.138(内部修复);claude-agent-sdk-python v0.1.78(CLI v2.1.136捆绑版本)、v0.1.79(CLI v2.1.137捆绑版本)、v0.1.80(CLI v2.1.138捆绑版本)。
2026-05-08 指南v1.6:Claude Code v2.1.132/v2.1.133 + SDK v0.1.77发布后第2天跟进。 在Skills系统中新增SDK Skill接口小节,介绍ClaudeAgentOptionsskills选项,以及allowed_tools"Skill"的弃用。37 在Hook架构中新增工作强度与会话来源小节,介绍新的effort.level JSON字段、hook输入中的$CLAUDE_EFFORT环境变量,以及Bash子进程中的CLAUDE_CODE_SESSION_ID环境变量。3839 在Subagent配置字段表中新增Subagent skill发现机制修复(subagents现在可通过Skill工具发现项目、用户和plugin skills;在v2.1.133之前,这些skills会被静默丢弃)。39 在生产模式中新增Worktree基准、沙箱路径与管理员设置小节,介绍worktree.baseRef(将破坏性默认值从本地HEAD恢复为origin/<default>)、sandbox.bwrapPathsandbox.socatPathparentSettingsBehavior39
2026-05-07 指南v1.5:Claude托管式Agents,5月6日旧金山发布扩展。 在内存与上下文中新增策略5(托管式内存整理:Dreaming,研究预览),并通过表格对比以文件系统作为内存与Dreaming。35 在多Agent编排开头新增托管式多Agent编排(公开测试版)和Outcomes(公开测试版),收录Anthropic关于共享文件系统专家和Claude Console追踪的原文引述,并增加与自托管式deliberation的对比表。新增SDK端hook事件流小节,介绍claude-agent-sdk-python v0.1.74的include_hook_eventsHookEventMessage36 仅更新日志:Claude Code v2.1.124-v2.1.131(claude project purge、项目目录的--dangerously-skip-permissionsskill_activated invocation_trigger、PostToolUse保存时格式化修复、PreToolUse JSON+退出码2阻止机制修复、skillOverrides设置);claude-agent-sdk-python v0.1.72(CLI 2.1.126)、v0.1.73(session_store_flush)、v0.1.75(CLI 2.1.131)、v0.1.76(api_error_status);openai-agents-python v0.15.0-v0.16.1,其中v0.16.0(5月7日)将gpt-5.4-mini设为默认模型,移除隐式max_turns上限,并增加SDK端工具执行并发。
2026-05-07 指南v1.4:依据当前官方文档和本地运行时证据(claude --version 2.1.132,codex --version返回codex-cli 0.128.0)更新Claude Code hook和skill机制。将hook接口从22/26+个更新为29个已记录事件;将skill描述预算从2%/16,000修正为1%/8,000;加入mcp_tool,把hook类型数量从4种改为5种;删除未经支持的固定“10个并行subagents”说法;并新增面向公开发布且不泄露敏感信息的Codex对等功能小节,涵盖AGENTS.md、skills、hooks、plugins和显式subagent工作流。
2026-04-29 指南v1.3:扩展托管式与自托管式Harnesses章节中的OpenAI Agents SDK内容,加入openai-agents Python v0.14.0(4月15日)中命名的SDK接口——SandboxAgentManifestSandboxRunConfig、采用渐进式披露的沙箱内存、工作区挂载(S3/R2/GCS/Azure)、可移植快照,以及本地/Docker/托管式客户端后端(Blaxel、Cloudflare、Daytona、E2B、Modal、Runloop、Vercel)。将Help Net Security二手引文替换为v0.14.0发行说明的一手引文。新增关于claude-agent-sdk-python v0.1.69-v0.1.71(4月28日至29日)的简短说明,将其列为第3种自托管选项(把Claude Code运行时作为Python库嵌入):捆绑的Claude CLI升级至v2.1.123;将mcp最低依赖版本提高至>=1.19.0(旧版本会静默丢弃进程内MCP工具的CallToolResult);修复Trio nursery取消问题;并使SandboxNetworkConfig允许列表字段与TS SDK保持一致。v0.14.7-v0.14.8的SDK改进记录于[^58]
2026-04-25 指南v1.2:Google Cloud Next 2026(4月22日至24日)——Vertex AI更名为Gemini Enterprise Agent Platform;Agentspace并入统一的Gemini Enterprise;推出Workspace Studio(无代码Agent构建器);Model Garden提供200多个模型,包括Anthropic Claude;引入来自Box、Workday、Salesforce、ServiceNow的合作伙伴Agents;ADK v1.0稳定版覆盖4种语言;推出Project Mariner(网页浏览Agent);提供托管式MCP服务器,并以Apigee作为API到Agent的桥梁;A2A protocol v1.0已在150家组织的生产环境中运行。Microsoft Agent Framework 1.0(2026年4月):稳定的APIs、LTS承诺、完整支持MCP,并支持.NET + Python。可实时呈现Agent执行过程与工具调用的浏览器版DevUI,与1.0稳定接口一同以预览版发布。Salesforce Headless 360(4月15日,TDX):将Salesforce的所有能力(CRM、服务、营销、电子商务)公开为API/MCP工具/CLI命令,使Claude Code、Cursor和Codex等Agents无需浏览器即可在该平台上构建应用。(TDX 2026于4月15日至16日举行;Headless 360公告发布日期为4月15日。)MetaComp StableX KYA(4月21日):面向受监管金融服务领域(支付、合规、财富管理)的Know Your Agent治理框架——由持牌金融机构首创;可用于Claude、Claude Code、OpenClaw及其他兼容AI平台。Claude托管式Agents定价:会话运行期间,每会话小时0.08美元;空闲期间不收取运行时费用——常规Claude模型token费用另计。(依据Anthropic的Claude定价页面;公开测试版于2026年4月8日发布。)托管式Agents内存于2026年4月23日在managed-agents-2026-04-01测试版标头下进入公开测试阶段。目前,所有托管式Agents端点均须使用此测试版标头。
2026-04-16 指南v1.1:新增托管式与自托管式Harnesses章节,涵盖Claude托管式Agents(4月8日测试版)和OpenAI Agents SDK的harness/计算分离(4月16日)。新增Scion跨工具多Agent虚拟机监控程序(4月7日,Google)。记录M3MAD-Bench中辩论收益趋于停滞的发现。新增可信Agents五项原则(Anthropic,4月9日)及MCP/AGENTS.md的Linux Foundation治理。增加Permiso SandyClaw skill沙箱参考。新增Opus 4.7长周期模式:工具故障韧性、xhigh工作强度层级、token预算上限(task_budget测试版),以及隐式需求感知能力,从而减少CLAUDE.md脚手架。
2026-03-24 首次发布

参考资料


  1. Andrej Karpathy 将“claws”描述为构建在 LLM agents 之上的新层。HN 讨论(406 点赞,917 条评论)。 

  2. 作者的实现。包含 84 个 hooks、48 个 skills、19 个 agents,以及约 15,000 行编排代码。详见作为基础设施的 Claude Code。 

  3. Anthropic,《Claude Code Hooks:退出代码》。code.claude.com/docs/en/hooks。对于大多数事件,退出码 0 表示允许,退出码 2 表示阻止,退出码 1 表示警告;WorktreeCreate 的规则更为严格。 

  4. Anthropic,《使用 Skills 扩展 Claude》。code.claude.com/docs/en/skills。介绍 Skill 结构、frontmatter 字段、基于 LLM 的匹配机制,以及 1%/8,000 字符的描述预算。 

  5. Anthropic,《Claude Code Sub-agents》。code.claude.com/docs/en/sub-agents。介绍隔离上下文、worktree 支持和 agent 团队。 

  6. Anthropic,《Claude Code 文档》。docs.anthropic.com/en/docs/claude-code。介绍内存文件、CLAUDE.md 和自动内存。 

  7. 作者的多 agent 审议系统。包含 10 个研究角色、7 阶段状态机和 141 项测试。详见多 Agent 审议。 

  8. Simon Willison,《如今编写代码已经很廉价》。Agentic Engineering Patterns。 

  9. Laban、Philippe 等,《LLMs Get Lost In Multi-Turn Conversation》,arXiv:2505.06120,2025年5月。Microsoft Research 与 Salesforce。涉及 15 个 LLMs、超过 200,000 次对话,平均性能下降 39%。 

  10. Mikhail Shilkov,《深入解析 Claude Code Skills:结构、提示词与调用》。mikhail.io。对 skill 发现、上下文注入和 available_skills 提示词部分的独立分析。 

  11. Claude Code 源代码,SLASH_COMMAND_TOOL_CHAR_BUDGETgithub.com/anthropics/claude-code。 

  12. Anthropic,《Skill 编写最佳实践》。platform.claude.com。介绍 500 行限制、支持文件和命名约定。 

  13. Anthropic,《Claude Code Hooks:生命周期事件》。code.claude.com/docs/en/hooks。介绍 30 个有文档记录的生命周期事件、hook 类型、匹配器行为、异步 hooks、HTTP hooks、提示词 hooks、agent hooks 和 MCP 工具 hooks。 

  14. 作者的 Claude Code hooks 教程。从零构建 5 个生产级 hooks。详见Claude Code Hooks 教程。 

  15. 作者在 50 个会话中的上下文窗口管理实践。详见上下文窗口管理。 

  16. 作者的 Ralph Loop 实现。通过文件系统状态和生成预算实现全新上下文迭代。详见Ralph Loop。 

  17. 作者的审议系统架构。包含 3,500 行 Python、12 个模块、置信度触发器和共识验证。详见构建 AI 系统:从 RAG 到 Agents。 

  18. Nemeth、Charlan,为麻烦制造者辩护:异议在生活与商业中的力量,Basic Books,2018年。 

  19. Wu, H.、Li, Z. 和 Li, L.,《LLM Agents 真的能够辩论吗?》arXiv:2511.07784,2025年。 

  20. Liang, T. 等,《通过多 Agent 辩论鼓励大型语言模型进行发散思考》,EMNLP 2024。 

  21. 作者对真实代码仓库中 AGENTS.md 的分析。详见AGENTS.md 模式。另请参阅:GitHub Blog,《如何编写出色的 agents.md:来自 2,500 多个代码仓库的经验》。 

  22. 作者的 quality loop 和 evidence gate 方法论。Jiro 工匠精神体系的一部分。 

  23. Anthropic,《Claude Managed Agents 概览》。公测于 2026年4月8日启动。提供 harness 即服务,支持会话检查点、捆绑式沙箱和 REST API。定价:标准 token 费用另加每会话小时 0.08 美元。Beta 请求头为 managed-agents-2026-04-01。 

  24. OpenAI,《openai-agents Python v0.14.0 发行说明》。发布于 2026年4月15日,公告于 4月16日发布。在现有 AgentRunner 流程之上引入测试版 Sandbox Agents SDK 接口:包括 SandboxAgentManifest(工作区契约)、SandboxRunConfig;支持 shell、文件系统编辑、图像检查、skills、沙箱内存和压缩等能力;支持本地、Git 及远程工作区挂载(S3、R2、GCS、Azure Blob、S3 Files);支持带路径规范化和符号链接保留功能的可移植快照;还可序列化运行状态以便恢复。后端包括 UnixLocalSandboxClientDockerSandboxClient,以及通过可选扩展提供的 Blaxel、Cloudflare、Daytona、E2B、Modal、Runloop 和 Vercel 托管客户端。4月16日的公告由 Help Net Security 汇总报道。 

  25. Google Cloud,《Scion:多 Agent 虚拟机监控程序》。于 2026年4月7日开源。将 Claude Code、Gemini CLI 和其他深度 agents 作为隔离进程进行编排,每个 agent 均配备独立容器、git worktree 和凭据。支持本地、中心节点和 Kubernetes 部署模式。InfoQ 报道。 

  26. 多 agent 辩论研究集群,2026年第 1 至第 2 季度。Wu 等,《LLM Agents 真的能够辩论吗?》(arXiv 2511.07784);M3MAD-Bench——多模型多 agent 辩论基准,揭示了性能平台期以及模型容易受到误导性共识影响的问题;Tool-MAD——为每个 agent 分配异构工具,并采用忠实度/相关性裁判评分。 

  27. Anthropic,《我们用于开发安全可信 agents 的框架》。2026年4月9日。包含 5 项原则:人类控制、价值观一致、安全、透明和隐私。向 Linux Foundation 的 Agentic AI Foundation 捐赠 MCP。 

  28. Permiso Security,《SandyClaw:首个面向 AI Agent Skills 的动态沙箱》。2026年4月2日。Skill 执行沙箱,集成 Sigma/YARA/Nova/Snort 检测,并提供有证据支撑的判定结果。 

  29. Anthropic,《隆重推出 Claude Opus 4.7》。2026年4月16日。长周期 agent 能力改进:SWE-Bench 生产任务解决率达到 Opus 4.6 的 3 倍、增强工具故障恢复能力、加入 xhigh 工作量级别、任务预算(测试版)和隐性需求感知能力。有关 Messages API 的破坏性变更,另请参阅 Opus 4.7 的新增功能。 

  30. 综合参考资料——OpenAI openai-agents-python v0.14.7(2026年4月28日)和 v0.14.8(2026年4月29日);Anthropic claude-agent-sdk-python v0.1.69(4月28日)、v0.1.70(4月28日)和 v0.1.71(4月29日)。v0.14.7 主要更新:为工具项新增 tool_name/call_id 便捷属性,提高第2阶段内存整合的轮次上限,为沙箱压缩添加 GPT-5.5 别名,收紧 tar/zip 成员验证,拒绝 LocalFile 源中的符号链接,并从 Responses API 调用中移除未设置的字段。v0.14.8 主要更新:保留 MCP 重新导出时的导入错误,并为沙箱提示词的指令部分添加分隔。claude-agent-sdk-python v0.1.69 为 ClaudeAgentOptions 字段添加了文档字符串,并将捆绑的 CLI 升级至 v2.1.121;v0.1.70 将 mcp 的最低依赖版本提高至 >=1.19.0(旧版本会静默丢弃进程内 MCP 工具处理程序返回的 CallToolResult),修复了在设置 options.stderr 的情况下迭代 query() 时,提前取消会破坏 Trio nursery 的问题(现在使用 spawn_detached() 读取 stderr),并将捆绑的 CLI 升级至 v2.1.122;v0.1.71 为 SandboxNetworkConfig 添加了域名允许列表字段(allowedDomainsdeniedDomainsallowManagedDomainsOnlyallowMachLookup),以与 TypeScript 架构保持一致,并将捆绑的 CLI 升级至 v2.1.123。 

  31. OpenAI,“使用 AGENTS.md 自定义指令”。Codex 会在工作前读取全局和项目级 AGENTS.md / AGENTS.override.md 文件,合并从根目录到当前目录的指导,并通过 project_doc_max_bytes 限制项目文档大小。 

  32. OpenAI,“Agent Skills”。Codex skills 使用 SKILL.md、渐进式披露、显式 $skill 调用,以及根据描述进行隐式激活。 

  33. OpenAI,“Codex Hooks”。Codex hooks 支持配置中的命令 hooks、插件 hooks、托管 hooks、适用于受支持事件的匹配器、stdin JSON 输入,以及 JSON 输出字段。 

  34. OpenAI,“Codex Subagents”“Codex CLI 0.128.0 更新日志”。Codex 支持显式并行 subagent 工作流、内置的 defaultworkerexplorer agents、自定义 TOML agents、继承的沙箱策略、插件捆绑的 hooks、hook 启用状态,以及 0.128.0 中持久化的 /goal 工作流。 

  35. Anthropic,“Claude Managed Agents 新功能”。2026年5月6日。Dreaming(研究预览版):定期运行的后台进程,用于审查 agent 会话和内存存储、提取模式并整理记忆。Outcomes(公开测试版):基于评分标准的评估机制,由独立评分器在其自身的上下文窗口中依据评分标准评定输出,避免受到 agent 推理过程的影响。Multiagent Orchestration(公开测试版):主 agent 将任务的各个部分委派给专家;每位专家都有自己的模型、提示词和工具。专家在共享文件系统上并行工作,并将成果汇入主 agent 的整体上下文,同时可在 Claude Console 中对每个步骤进行完整追踪。 

  36. Anthropic,claude-agent-sdk-python v0.1.74。2026年5月6日。为 ClaudeAgentOptions 添加 include_hook_events;设置后,hook 事件(PreToolUse、PostToolUse、Stop 等)将由 CLI 发出,并以 HookEventMessage 的形式从消息流中产生,与 TypeScript SDK 的 includeHookEvents 行为一致。捆绑的 Claude CLI 已升级至 v2.1.129。 

  37. Anthropic,claude-agent-sdk-python v0.1.77。2026年5月8日。弃用 allowed_tools 中的 "Skill" 值,改为在 ClaudeAgentOptions 上使用专用的 skills 选项;为 Claude Code 提供有关可用 skills 的更多结构化信号;改进 Command failed 异常的错误消息;并捆绑 Claude CLI v2.1.133。 

  38. Anthropic,Claude Code v2.1.132。2026年5月6日。为 Bash 工具子进程添加 CLAUDE_CODE_SESSION_ID 环境变量(与 hooks 已能获取的 session_id 一致);添加 CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN,让对话保留在终端原生回滚缓冲区中;更新 /tui fullscreen 启动横幅(降低内存占用、支持鼠标、选中时自动复制);并修复约20个问题,涵盖 SIGINT 优雅关闭、代理对表情符号导致的 --resume 数据损坏、计划模式下的 --permission-mode 标志、印度文字和 ZWJ 的光标处理、NFD vim 操作、以 / 开头的粘贴内容被吞掉、MCP 内存无限增长、MCP tools/list 重试、Bedrock + Vertex ENABLE_PROMPT_CACHING_1H 400 错误,以及状态栏 context_window 显示累计 token 等。 

  39. Anthropic,Claude Code v2.1.133。2026年5月7日。Hooks 现在会收到 effort.level JSON 输入和 $CLAUDE_EFFORT 环境变量(Bash 命令也可读取)。Subagents 可通过 Skill 工具发现项目、用户和插件 skills(回归问题修复)。新增管理员设置:worktree.baseReffresh | head)可在 v2.1.128 改用本地 HEAD 后,将工作树基准恢复为 origin/<default>sandbox.bwrapPathsandbox.socatPath 可在 Linux/WSL 上固定沙箱二进制文件;parentSettingsBehavior'first-wins' | 'merge')控制 SDK managedSettings 与父级设置的组合方式。其他修复包括:并行会话在刷新 token 竞态后出现 401 错误、驱动器根目录允许规则的作用域问题、MCP OAuth 代理/mTLS 支持、Remote Control 停止/中断后完成取消、/effort 跨会话泄漏,以及在 --help 中列出 --remote-control。 

  40. Anthropic,Claude Code v2.1.136。2026年5月8日。新增 settings.autoMode.hard_deny,用于配置自动模式分类器规则,无论用户意图或允许例外如何,均可无条件阻止;新增 CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL,让通过 OpenTelemetry 收集反馈的企业能够重新启用会话内质量调查。影响运维的修复包括:来自 .mcp.json、插件和 claude.ai 连接器的 MCP 服务器在 VS Code、JetBrains 和 Agent SDK 中执行 /clear 后静默消失;并发刷新时丢失 MCP OAuth 刷新 token;存在匹配的 Edit(...) 允许规则时,计划模式未能阻止文件写入;缓存清理删除仍在运行的版本后,插件 Stop/UserPromptSubmit hooks 失效;plugin.json 中的 skills 条目隐藏插件默认的 skills/ 目录;通过 CLAUDE_ENV_FILE 设置的 SessionStart-hook 环境变量在 /resume/clear 后失效。此外还包含约30项涉及 TUI、自动补全和终端渲染的细节优化与可靠性修复。配套版本:v2.1.137(5月9日,修复 VSCode 扩展在 Windows 上的激活问题)、v2.1.138(5月9日,内部修复);claude-agent-sdk-python v0.1.78v0.1.79v0.1.80分别将捆绑的 Claude CLI 升级至 v2.1.136、v2.1.137 和 v2.1.138。 

  41. OpenAI,openai-agents-python v0.17.0。2026年5月8日。RealtimeAgent 默认使用 gpt-realtime-2。沙箱本地源具体化现在会将 LocalFile.srcLocalDir.src 限制在清单的 base_dir 内(应用清单时 SDK 进程的当前工作目录),除非通过 Manifest.extra_path_grantsSandboxPathGrant 显式授权该源。相对本地源以 base_dir 为基准解析;绝对路径源必须已位于其中或处于显式授权范围内。迁移建议:在清单级别声明可信主机根目录,最好设为只读。应将 extra_path_grants 视为可信的应用程序配置;请勿使用模型输出或不可信的清单输入填充该字段。此外还修复了 Responses 上下文管理中的 extra_args 冲突问题。 

  42. Anthropic,Claude Code v2.1.139。2026年5月。2026年5月11日当前会话的本地证据:claude --version 返回 2.1.139 (Claude Code)。发布说明新增 Agent View(claude agents)、/goal、hook 的 args: string[]、用于 PostToolUsecontinueOnBlock、供 MCP stdio 服务器使用的 CLAUDE_PROJECT_DIR,以及插件命令中对 ${CLAUDE_PROJECT_DIR} 的插值支持;同时修复了多项问题,包括在 --print 模式下发送 claude_code.active_time.total OpenTelemetry 数据。 

  43. Anthropic,“使用 Agent View 管理多个 agents”。Agent View 文档介绍了如何在同一屏幕中调度和管理多个 Claude Code 会话、查看各会话正在执行的任务,以及识别需要操作员输入的会话。该页面将 Agent View 标记为 Research Preview,并说明了本地会话的限制。 

  44. Anthropic,“Claude Code Hooks”。Hook 文档涵盖命令 hook 字段、PreToolUsePostToolUse、退出代码行为、hook 输入与输出,以及直接斜杠命令的展开路径。 

  45. GitHub Advisory Database,GHSA-f3jg-756w-gm35 / CVE-2026-45046。“Gryph Agents Payload Filter 未能从工具载荷中移除敏感内容。”发布于2026年5月;文中说明,在默认日志记录行为下,敏感的 file-write 载荷内容会保留在本地 SQLite 日志中,此问题已在 Gryph v0.7.0 中修复。 

  46. OSV,GHSA-wxxx-gvqv-xp7p / CVE-2026-40217。“LiteLLM 的自定义代码 guardrail 存在沙箱逃逸漏洞。”发布于2026年5月11日;文中说明,受管理员权限保护的 POST /guardrails/test_custom_code 端点会在自行实现的沙箱中运行用户提供的 Python,并建议升级;如无法升级,则应阻止访问该端点。 

  47. Young Jo (seph) Chung 和 Safwat Hassan,“协作者还是助手?AI 编码 agents 如何在拉取请求生命周期中划分工作”,arXiv:2605.08017v1,2026年5月。摘要报告了对 OpenAI、Copilot、Devin、Cursor 和 Claude Code 共29,585个 PR 生命周期的分析,并区分了操作自主权与合并治理权。 

  48. Jiayuan Liu 等,“记忆诅咒:扩展回忆如何削弱 LLM Agents 的合作意图”,arXiv:2605.08060v1,2026年5月。摘要报告了针对7个 LLMs 和4种游戏开展的500轮实验;在28种模型与游戏组合中,有18种因可访问历史记录扩展而出现合作水平下降。 

  49. Anthropic,Claude Code v2.1.140。2026年5月12日。为 agent hook 输入新增 subagent_type,并修复 ConfigChange hooks、disableAllHooksallowManagedHooksOnly、权限对话框中 hook 结果的环境变量显示、设置更新后自定义样式重置、Windows Git Bash 上的原生软件包解析回退,以及 /scroll-speed。 

  50. Anthropic,Claude Code v2.1.141。2026年5月13日。新增:hook JSON 输出中的 terminalSequence,用于桌面通知、窗口标题和提示音;用于克隆 HTTPS 插件源的 CLAUDE_CODE_PLUGIN_PREFER_HTTPS;用于限定工作负载身份联合工作区范围的 ANTHROPIC_WORKSPACE_ID;通过 claude agents --cwd <path> 按目录筛选 Agent View;以及 /feedback 中附加过去24小时或7天会话的选项。同时修复了与 agent、后台作业、hook、MCP、Remote Control、权限对话框和终端渲染相关的问题。2026年5月14日当前会话的验证结果:claude --version 返回 2.1.141 (Claude Code)npm view @anthropic-ai/claude-code version dist-tags.latest time.modified --json 返回的最新版本为 2.1.141。 

  51. Anthropic,Claude Code v2.1.142。2026年5月14日。为 claude agents 新增用于后台会话的调度标志(--add-dir--settings--mcp-config--plugin-dir--permission-mode--model--effort--dangerously-skip-permissions);将 Fast 模式的默认模型改为 Opus 4.7,并以 CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1 作为固定版本的覆盖设置;当不存在 skills/ 目录时,将插件根目录的 SKILL.md 文件显示为 skills;在插件详情中显示插件提供的 LSP 服务器;替换现有 GitHub App 连接前发出警告;并修复 MCP_TOOL_TIMEOUT、后台会话 worktree、守护进程休眠与唤醒、升级后守护进程清理、插件缓存和 Agent View 可靠性问题。2026年5月15日当前会话的验证结果:claude --version 返回 2.1.141 (Claude Code),npm 的最新版本为 2.1.142。 

  52. Anthropic,Claude Code v2.1.147。2026年5月21日。新增默认关闭的 Workflow 工具,用于确定性的多 agent 编排(CLAUDE_CODE_WORKFLOWS=1);新增固定后台会话;以 /code-review [effort] --comment 取代 /simplify;强化 REPL 和 Workflow 沙箱;改进自动更新程序诊断、大型差异渲染和提示历史去重;并修复企业登录限制、PowerShell 行为、MCP 分页、Agent View、插件、hook 条件、粘贴文本和图像移除后循环等问题。2026年5月21日当前会话的验证结果:claude --version 返回 2.1.144 (Claude Code)npm view @anthropic-ai/claude-code version dist-tags.latest time.modified --json 返回的最新版本为 2.1.147time.modified2026-05-21T20:38:35.053Z。 

  53. Anthropic,Claude Code v2.1.148v2.1.149v2.1.150Claude Code CHANGELOG。v2.1.148 修复了 v2.1.147 引入的 Bash 退出代码回归问题。v2.1.149 新增 /usage 的分类限制用量、/diff 键盘滚动、GFM 任务列表渲染,以及企业版 allowAllClaudeAiMcps;与 harness 相关的修复包括 PowerShell cd 权限绕过、PowerShell 前缀/通配符和陈旧变量的权限分析、git-worktree 沙箱写入允许列表的作用域、macOS 上 Bash find 耗尽 vnode、托管设置审批冻结、otelHeadersHelper 路径空格诊断,以及 Remote Control 会话重命名同步。v2.1.150 仅包含内部基础设施变更。2026年5月24日当前会话的验证结果:本地 claude --version 返回 2.1.144 (Claude Code),而 npm 的最新版本为 2.1.150time.modified2026-05-23T04:03:10.243Z;GitHub 最新版本为 v2.1.150,发布于 2026-05-23T04:03:51Z。 

  54. OpenAI,openai-agents-python v0.17.1v0.17.2v0.17.3。v0.17.1 新增沙箱提供方错误详情、归档文件解压限制、GitRepo 子路径验证,以及跟踪、会话和实时功能修复。v0.17.2 修复 Conversations 推理持久化、本地审批拒绝原因、AsyncSQLiteSession 设置,以及实时模式下的未知工具行为。v0.17.3 防止挂载点凭据进入沙箱命令,拒绝相对沙箱工作区根路径,处理 Vercel 沙箱终止状态,并修复输出 schema、guardrail、运行时和内存导入的边缘情况。2026年5月24日当前会话的验证结果:python3 -m pip index versions openai-agents 返回的最新版本为 0.17.3;GitHub 最新版本为 v0.17.3,发布于 2026-05-19T01:27:36Z。 

  55. Claude Code 更新日志(权威版本)v2.1.152 发行说明v2.1.153 发行说明v2.1.154 发行说明。v2.1.152(5月27日)新增 MessageDisplay hook 事件、skill/命令前置元数据中的 disallowed-tools/reload-skillsSessionStart hook 的 reloadSkillssessionTitle 输出、将 /code-review --fix 的修改应用到工作树、pluginSuggestionMarketplaces 托管设置、移除自动模式的选择加入机制,以及通过 --fallback-model 在会话中途切换模型。v2.1.153(5月28日)使 /model 将所选模型保存为新会话的默认值,并可通过 s 仅用于当前会话;为插件市场新增 skipLfs;在状态栏环境中公开 COLUMNS/LINES;并持久保留 macOS 后台代理的“隐私与安全性”授权。v2.1.154(5月28日)将 Opus 4.8 设为默认模型,默认使用高 effort,并新增 /effort xhigh;通过 /workflows 引入动态工作流;为 Opus 4.8 提供 Fast 模式,以 2 倍费率换取 2.5 倍速度;除 Haiku/Sonnet/Opus 4.7 及更早版本外,所有模型默认使用精简系统提示词;允许 claude agents 接受 ! <command> 以启动后台 shell 会话;允许插件声明 defaultEnabled: false;将 CLAUDE_CODE_SESSION_IDCLAUDECODE=1 传入 stdio MCP 子进程环境;并弃用 CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE(于6月1日移除)。 

  56. Codex 更新日志(OpenAI Developers)openai/codex 发行版本。Codex CLI 0.134.0(2026年5月26日)新增本地对话历史搜索;将 --profile 设为 CLI/TUI/沙箱流程的主要配置文件选择器,并支持旧版配置迁移;改进 MCP 设置,支持按服务器指定环境,并为可流式传输的 HTTP 服务器提供 OAuth;通过保留本地 $ref/$defs,并在公开前压缩过大的 schema,提高连接器工具 schema 的可靠性;同时允许并发执行声明了 readOnlyHint 的只读 MCP 工具。Codex CLI 0.135.0(2026年5月28日)为 codex doctor 新增更丰富的诊断信息;在 /status 中显示远程连接详情和服务器版本;新增 vim 文本对象编辑,改进单词与行尾操作,并支持配置中断当前轮次;使 /permissions 能够识别具名权限配置文件;在受支持的 macOS 和 Linux 平台中打包经过修补的 zsh 辅助程序;并在 Python SDK 中为线程和轮次 APIs 新增易于使用的 Sandbox 预设。 

  57. Hermes Agent v0.15.0 发行说明。“Velocity 版本。”包含 1,302 次提交、747 个已合并 PR,汇聚 321 位社区贡献者。run_agent.py 重构幅度达 76%(从 16,083 行缩减至 14 个模块、共 3,821 行)。多智能体看板平台支持自动分解、群体拓扑、按任务覆盖模型、计划任务和工作树管理。session_search 经过重新设计,速度提升 4,500 倍,并移除 LLM 依赖。在 3 个安全关口抵御 Brainworm 类提示词注入的 Promptware 防御机制。集成 Bitwarden Secrets Manager,以单一引导令牌取代各提供商密钥。skill 包支持通过一条斜杠命令加载多个 skills。TUI 会话编排器可在一个终端中管理多个会话。新增 Krea 2 和 FAL 图像生成提供商;完成 xAI 集成迭代(网络搜索插件、上游 OAuth、退役模型检测、自然的 TTS 停顿)。 

  58. Claude Code v2.1.157 发行说明Claude Code 更新日志(权威版本)。2026年5月29日。放置在项目 .claude/skills/ 目录中的插件现在无需市场即可自动加载;claude plugin init <name> 可在该目录中搭建新插件;/plugin 新增参数自动补全。此外,EnterWorktree 现在可在会话中途切换 Claude 管理的工作树;代理完成任务后,后台工作树将保持解锁状态,使 git worktree remove/prune 能够顺利运行;当 OTEL_LOG_TOOL_DETAILS=1 时,tool_decision 遥测事件会包含 tool_parameters。此版本还修复了无法处理的图像(现在会降级为文本占位符)、自动/绕过模式下的沙箱网络权限提示、后台会话停放后的退出机制,以及 tmux / VS Code / Cursor / Windsurf 中的终端渲染问题。 

  59. Claude Code 更新日志(权威版本)Codex CLI v0.137.0 发行说明,2026年6月。Claude Code v2.1.162(6月3日)为 claude agents --json 新增 waitingFor;v2.1.163(6月4日)为 Stop/SubagentStop 的非错误反馈新增 hookSpecificOutput.additionalContext;v2.1.166(6月6日)强化了跨会话 SendMessage 权限控制(中继消息不再携带用户权限),并新增 fallbackModel 设置(最多 3 个后备模型;遇到不可重试错误时进行一次性重试)。Codex CLI v0.137.0(6月4日)发布多智能体 v2(带线程的运行时、hide_spawn_agent_metadata 默认为 true、父级到子级的事件传播)、支持按轮次解析目录的 v1 skills 扩展,以及线程启动/轮次错误生命周期贡献者事件;Codex subagents 文档确认了 default/worker/explorer 代理类型,以及 agents.max_threads/max_depth 并发控制。AGENTS.md(agents.md)未发布任何带版本号的规范变更。当前会话验证日期为2026年6月8日。 

  60. Anthropic,Claude Code v2.1.169 发行说明v2.1.170 发行说明,2026年6月8日至9日。v2.1.169 新增 disableBundledSkills 设置及 CLAUDE_CODE_DISABLE_BUNDLED_SKILLS(向模型隐藏内置 skills、工作流和内置斜杠命令);新增 --safe-mode 标志及 CLAUDE_CODE_SAFE_MODE(在禁用所有自定义内容的情况下启动会话,包括 CLAUDE.md、插件、skills、hooks 和 MCP 服务器);并新增 /cd 命令(将会话移至新的工作目录,同时不破坏提示词缓存)。v2.1.170 允许通过 /model claude-fable-5 选择 Claude Fable 5(claude-fable-5),Opus 4.8 仍是 Claude Code 的智能体默认模型。模型层级发布:Anthropic,“Claude Fable 5”,2026年6月9日——这是高于 Opus 的“Mythos 级”层级,被称为 Anthropic 最强大且可安全用于通用场景的模型。 

  61. OpenAI,Codex CLI rust-v0.138.0 发行说明(2026年6月8日)和 rust-v0.139.0 发行说明(2026年6月9日)。v0.138.0 通过加密智能体间消息载荷、v2 代理配置目录、代理驻留 LRU,以及按活动执行数而非已生成线程数计算并发量,强化了多智能体 v2。v0.139.0 将 close_agent 生命周期 API 重命名为 interrupt_agent,并将 subagent MCP 启动警告限定在所属线程内,使其不再重复出现在父线程中。两个版本均强化了 AGENTS.md 发现机制:通过环境文件系统加载,并在发现过程中保留逻辑路径,确保为远程和符号链接工作区选择正确的文件。 

  62. Anthropic,Claude Code v2.1.172 发行说明(2026年6月10日)。subagents 现在可以生成自己的 subagents,支持最深 5 层的递归委派;此前委派实际上仅限 1 层。 

  63. Anthropic,Claude Code v2.1.175 发行说明v2.1.178 发行说明,2026年6月12日至15日。v2.1.175 新增 enforceAvailableModels 托管设置(固定 Default 模型,并防止用户/项目设置扩大托管的 availableModels 允许列表)。v2.1.178 新增 Tool(param:value) 权限规则语法,可使用 * 通配符匹配工具的输入参数(例如 Agent(model:opus));从嵌套的 .claude/skills 目录加载 skills,并在名称冲突时使用 <dir>:<name> 消除歧义;发生冲突时,解析最靠近当前工作目录的嵌套 .claude/ agents、工作流和输出样式(项目范围的工作流保存至最近的现有 .claude/workflows/);启动前使用自动模式分类器评估 subagent 生成操作;并修复 subagent disallowedTools 中的 MCP 服务器级规范(mcp__servermcp__server__*mcp__*)被静默忽略的问题。 

  64. OpenAI,Codex CLI rust-v0.140.0 发布说明,2026年6月15日(从 v0.140.0-alpha 系列提升为稳定版)。新增 /import,可从 Claude Code 中选择性导入设置、项目配置和近期聊天记录;通过 codex delete/delete 和应用服务器的 thread/delete 永久删除会话,并提供确认保护措施;为文件、插件和 skills 提供统一的 @ 提及菜单;以及通过 /usage 查看令牌活动。 

  65. Anthropic,Claude Code v2.1.183 发布说明,2026年6月19日——在您未要求丢弃工作时,auto mode 会阻止破坏性 git 命令(git reset --hardgit checkout -- .git clean -fdgit stash drop);还会阻止对并非由代理在本次会话中创建的提交执行 git commit --amend,以及在您未明确要求处理特定堆栈时执行 terraform destroy/pulumi destroy/cdk destroy。OpenAI,Codex CLI rust-v0.141.0 发布说明,2026年6月18日(从 v0.141.0-alpha 系列提升为稳定版)——远程执行器采用经过身份验证、端到端加密的 Noise 中继通道;跨平台远程执行会保留执行器原生的工作目录和 shell;TLS 支持用于企业代理的 P-521 证书签名。 

  66. Claude Code Changelog(规范来源)——v2.1.193(2026年6月25日):新增 autoMode.classifyAllShell 设置;在会话记录、提示消息和 /permissions 中显示 auto mode 拒绝原因。v2.1.195(2026年6月26日):带连字符标识符的 hook 匹配器(例如 code-reviewermcp__brave-search)改为精确匹配,不再采用子字符串匹配;若要匹配来自带连字符的 MCP 服务器的所有工具,请使用 mcp__brave-search__.*Codex CLI v0.142.2 发布说明(2026年6月25日):如果 PowerShell 命令包含安全分类器无法检查的可执行 AST 区域,现在必须获得批准。已于2026年7月1日至2日(PST)对照两项规范来源完成验证。 

  67. Claude Code Changelog(规范来源)和 GitHub 发布版本。v2.1.196(2026年6月29日):支持组织范围的默认模型(由管理员设置,在 /model 中显示为“Org default”);在不受信任的工作区中,claude mcp list/get 不再启动经仓库自行批准的 .mcp.json 服务器。v2.1.197(6月30日):Claude Sonnet 5 成为随附的默认模型(原生支持 1M 上下文,至8月31日采用 $2/$10 的促销定价)。v2.1.198(7月1日):subagents 默认在后台运行;内置 Explore 代理继承会话模型(最高为 Opus);subagents 和压缩过程继承会话的扩展思考配置;后台 claude agents 会话在 worktree 中完成代码工作后会提交、推送并创建草稿 PR,同时触发带有 agent_needs_input/agent_completedNotification hook;/agents 向导已移除(请直接编辑 .claude/agents/ 或询问 Claude)。v2.1.199(7月2日):连续调用斜杠 skill 时最多加载开头的 5 个 skills;可检测 SendMessage 因重复使用代理名称而发生的错误路由;SessionStart/Setup/SubagentStart hooks 会在退出代码为 2 时显示 stderr。v2.1.200(7月3日):default 权限模式在 CLI、--help、VS Code 和 JetBrains 中统一标记为“Manual”;在保持配置值不变的同时,也接受 manualAskUserQuestion 对话框默认不再自动继续。v2.1.202(7月6日):新增“Dynamic workflow size”/config 控件;/review <pr> 恢复为单轮审查,而 /code-review <level> <pr#> 执行多代理审查。Anthropic claude-agent-sdk 已更新至 v0.2.111(2026年7月6日;捆绑 Claude CLI v2.1.202),TypeScript @anthropic-ai/claude-agent-sdk 已更新至 v0.3.203;0.2.x/0.3.x 系列是在已记录的 0.1.x 接口基础上的增量更新(近期工作集中于子进程清理和 NDJSON 流的可靠性)。已于2026年7月7日(PST)在当前会话中完成验证。 

  68. Claude Code Changelog(规范来源)、GitHub 发布版本 v2.1.207v2.1.208,以及 Claude Code 新功能。2026年7月。v2.1.203–v2.1.206(7月上旬):auto mode 规则会阻止篡改会话记录文件;后台任务通知会明确说明任务运行期间没有人工输入;MCP roots/list 包含会话的其他工作目录,并发送 roots/list_changed 通知;/doctor 会建议精简可从代码库推导出的 CLAUDE.md 内容;v2.1.204 还修复了无头模式下的 SessionStart 流式传输。v2.1.207:auto mode 在 Amazon Bedrock、Google Vertex AI 和 Microsoft Foundry 上正式发布,并可通过 disableAutoMode 托管设置选择退出;新增用于企业进程启动器的 CLAUDE_CODE_PROCESS_WRAPPER;当 MCP 工具数量较多时,工具使用轮次速度最高提升 7 倍,会话记录体积最多缩小 79 倍。v2.1.208:即使使用 --dangerously-skip-permissions 或 auto mode,灾难性删除操作也会强制显示确认提示。 

  69. Claude Code Changelog(规范来源)和 GitHub 发布版本 v2.1.210v2.1.211v2.1.212。2026年7月。v2.1.210:采用 worktree 隔离的 subagents 无法再修改主检出目录;Agent tool 加强了对间接提示词注入的防护,避免受 subagent 所读取内容中的恶意指令影响;auto mode 分类器默认使用 Sonnet 5,并在每个会话中固定;写入 MEMORY.md 的内容超过大小限制时会报错,不再静默截断。v2.1.211PreToolUse hook 的 ask 决策会将权限结果的最低级别设为提示确认——对于未使用沙箱的 Bash,auto mode 无法覆盖为允许;--forward-subagent-text/CLAUDE_CODE_FORWARD_SUBAGENT_TEXT 会将 subagent 文本转发到 stream-json 输出;“always allow”规则会跨 worktree 持久保存在仓库根目录;权限预览会消除双向文本覆盖字符、零宽字符和形似字符的影响。v2.1.212:新增每个会话的 subagent 生成数量上限(默认为 200,通过 CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION 配置,使用 /clear 重置);每个会话的 WebSearch 上限为 200(CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION);Task tool 的 mode 参数已弃用,改为继承父会话的权限模式;/fork 会创建新的后台会话,会话内变体则更名为 /subtask;超过两分钟的 MCP 调用会自动转入后台(CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS)。 

  70. Anthropic,@anthropic-ai/claude-agent-sdk TypeScript v0.3.205–v0.3.208 发布版本。2026年7月。新增类型化中断回执(still_queued UUID;在 system/init 中声明 interrupt_receipt_v1 能力);新增 command_lifecycle 帧,按消息报告 queued/started/completed/cancelled/discarded 状态;新增 AgentToolCompletedOutput 类型;canUseTool 可以返回不含 updatedInput{behavior: 'allow'}。v0.3.208 中的安全修复:调用方在 hook 等待期间发出的中止请求会被转换为 hook 成功,导致受 PreToolUse hook 控制的工具可能在调用方中止后仍然执行。 

  71. Model Context Protocol,PR #3002。已于2026年7月16日合并至规范草案。在响应 _meta 中新增可选的 io.modelcontextprotocol/serverInfo 对象,并使请求中的 clientInfo 成为可选项;此前 SEP-2575 的无状态核心移除了有状态初始化握手,此次变更恢复了服务器身份信息。该身份由服务器自行报告且未经验证:仅用于显示和日志记录,不应作为安全决策依据。最终确定的无状态规范修订版计划于2026年7月28日发布。 

  72. OpenAI,Codex CLI 发布版本 rust-v0.143.0rust-v0.144.0rust-v0.144.5。2026年7月。v0.143.0:默认通过工具搜索加载 MCP 工具(延迟加载工具,而非预先加载 schema)。v0.144.0:新增 writes 应用批准模式——只读操作无需提示即可运行,写入操作需要批准——同时 MCP 交互式身份验证正式发布。v0.144.5:扩展了危险命令检测。 

  73. OpenAI,openai-agents-python v0.18.2(2026年7月11日)和openai-agents-js v0.13.2(2026年7月10日)。这两个版本均新增了测试版托管多智能体支持,即由OpenAI以托管服务的形式编排多个智能体,对应于Anthropic的Managed Multiagent Orchestration公开测试版。 

  74. Claude Code更新日志(规范来源),v2.1.214–v2.1.216,2026年7月。v2.1.214:使用单段dir/**路径模式的权限规则和hook if:条件现在会锚定到<cwd>/dir(如需匹配任意深度,请写成**/dir/**);此前的行为会让Edit(src/**)等允许规则自动批准针对目录树中任意嵌套dir/的操作;拒绝和询问规则仍保持任意深度匹配。此外还包括:EndConversation工具;一批采用故障关闭机制的Bash/PowerShell权限强化措施;即使stdout JSON未通过模式验证,hook退出代码2仍会阻止操作;memory frontmatter中的ISO modified时间戳不再被静默截断;新增OTel message.uuidclient_request_idtool_sourceCLAUDE_CODE_OTEL_CONTENT_MAX_LENGTHv2.1.215:内置的/verify/code-review skills不再自行调用,只能显式调用。v2.1.216:采用worktree隔离的subagents无法再通过git -C--git-dirGIT_DIR/GIT_WORK_TREE将git重定向至共享检出目录;worktree会话不再解析到其他项目遗留的worktree;当符号链接.claude指向项目外部时,工作流和计划任务将拒绝写入;/rewind不再遍历符号链接或硬链接;sandbox.filesystem.disabled支持仅限制网络出口的沙盒机制;恢复后台智能体会话时,会还原该智能体的提示词和工具限制;会话期间发生的skill/命令变更无需重启即可显示在斜杠菜单中。已于2026年7月21日(PST)依据规范更新日志完成验证。 

  75. Anthropic,@anthropic-ai/claude-agent-sdk TypeScript v0.3.214–v0.3.216版本claude-agent-sdk Python v0.2.124。2026年7月。TypeScript:set_permission_mode会拒绝未知模式;被中断操作截断的消息包含aborted: truetool_progress携带subagent_typesubagent_retry;任务通知子类型新增scheduled-triggerSessionStart来源新增"fork";新增包含non_execution_kinduser_feedbacktool_result_meta伴随数据;rewindFiles响应可包含可选的skippedLinks计数;成功结果消息可包含可选的user_message_uuidrequest_sent_wall_ms。Python v0.2.124(Windows,BatBadBut类漏洞):拒绝启动.bat/.cmd文件;若resume/session_id值中包含cmd.exe元字符,则抛出ValueError;以连字符开头的extra_args值会绑定为--flag=value。 

  76. OpenAI,Codex CLI rust-v0.145.0版本说明,2026年7月。此版本稳定了可选择启用的多智能体V2界面(可配置子智能体模型、推理级别和并发数;恢复智能体角色),并扩展/import,可从Claude Code和Cursor迁移设置、MCP服务器、插件、会话、命令及项目范围的memory。强化措施包括:MCP启动超时、序列化OAuth刷新、非阻塞式OAuth发现、更可靠的强制rm检测、保留拒绝原因,以及实验性分页线程历史记录。 

  77. Model Context Protocol,规范版本文档PR #3064#3066#3098,均于2026年7月21日合并,为7月28日发布规范做准备。最终修订版会将Tasks作为可选的io.modelcontextprotocol/tasks扩展提供,而非核心功能,并弃用HTTP+SSE传输方式,改用Streamable HTTP。 

  78. Claude Code更新日志(规范来源),v2.1.217,2026年7月21日。subagents默认不再生成嵌套subagents;如需允许更深层级的嵌套,请设置CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH。新增同时运行的subagents数量上限(默认20,可通过CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS配置),避免一条消息无限扩散出后台智能体。--max-budget-usd现在会切实停止后台subagents:达到上限后,将拒绝新建subagents,并停止正在运行的后台智能体。后台会话隔离现在会规范化经由符号链接指向的工作目录,从而堵住工作区文件夹逃逸漏洞。已于2026年7月22日(PST)依据规范更新日志完成验证。 

  79. Anthropic,claude-agent-sdk Python v0.2.125@anthropic-ai/claude-agent-sdk TypeScript v0.3.217,2026年7月21日。Python v0.2.125捆绑CLI v2.1.217,未对SDK界面进行任何变更;TS v0.3.217同步发布。两者均沿用CLI新增的subagent嵌套和并发默认设置。 

  80. Model Context Protocol,PR #3092,于2026年7月21日合并。这是一项规范性修正,使SEP-2575错误代码与重新编号的规范草案模式及一致性测试套件保持一致,也是为2026年7月28日规范发布所做准备的一部分。 

  81. Anthropic Engineering,《我们如何在不同产品中隔离Claude》,2026年5月25日。针对不同产品界面采用3种隔离模式:服务器端使用带有单会话文件系统的临时gVisor容器(claude.ai);采用有人监督的操作系统沙盒(Claude Code:macOS上的Seatbelt、Linux上的bubblewrap,以及开源的sandbox-runtime);在平台虚拟机监控程序上运行密封虚拟机(Claude Cowork:macOS使用Apple Virtualization framework,Windows使用HCS,仅挂载工作区和.claude,不挂载其他内容)。设计原则:首先在环境层实施隔离,其次在模型层进行引导;根据用户的监督能力选择适当的隔离强度;优先采用久经考验的基础机制(虚拟机监控程序、seccomp、容器运行时),而非自行开发隔离代码;将项目本地配置和工具输出视为不可信内容;通过作用域受限、每会话独立且可撤销的令牌,将凭据保留在沙盒外。Cowork通过虚拟机内部的防御性MITM代理强制执行此机制,拒绝任何未携带该虚拟机自身预配令牌的请求。 

  82. Claude Code更新日志(规范来源),v2.1.218,2026年7月22日。dangerous-rm、后台&和可疑Windows路径检查不再打开权限对话框,改由自动模式分类器裁决;在启用自动模式的计划模式下,如果静态分析器无法证明Bash命令为只读,也不再弹出询问,而是交由分类器判断;智能体frontmatter中的hooks要求智能体文件自身所在文件夹已接受工作区信任;带有context: fork的skills默认在后台运行(可为单个skill设置background: false以停用);/code-review作为后台subagent运行;/deep-research仅在手动调用时启动;无头会话和SDK会话压缩后仍会保留分叉会话的继承关系;通过Ctrl+B转入后台的进程与其他路径遵循相同的后台shell上限。已于2026年7月24日(PST)依据规范更新日志完成验证。 

  83. Anthropic,@anthropic-ai/claude-agent-sdk TypeScript v0.3.218claude-agent-sdk Python v0.2.126,2026年7月22日。TypeScript:新增SkillToolOutput.background标志;api_error_status会报告数据流传输期间的429/529错误;modelUsage新增canonicalModelprovider。Python:新增ResultMessage.terminal_reason;带有canonicalModel/provider的类型化model_usage条目;捆绑CLI v2.1.218。 

  84. Claude Code 更新日志(规范来源)v2.1.219(2026年7月24日)和v2.1.220(2026年7月25日)。v2.1.219:“subagents现在默认最多可生成深度为3的嵌套subagents(此前为1);设置CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1可禁用嵌套”;新增Claude Opus 5(claude-opus-5)并将其设为默认Opus模型——拥有1M上下文,快速模式价格为每MTok 10/50美元;sandbox.network.strictAllowlist会拒绝沙箱命令访问未列入允许列表的主机,且不会提示;新增DirectoryAdded hook,在/add-dir或SDK register_repo_root控制请求于会话期间注册工作目录后触发;动态工作流默认采用中等规模指导原则(“力求少于15个agents”),可通过任意设置文件中的workflowSizeGuideline配置(配置后/config中的对应行会隐藏),并显示在运行中工作流的状态行中;stream-json中的嵌套subagent转发——使用--forward-subagent-text时会显示深度为2及以上的subagents,并以生成它们的Agent tool_use ID为键;无头模式stream-json初始化事件中的mcp_server_errors会列出因配置验证而跳过的--mcp-config条目,终端运行时还会显示启动警告;claude mcp list/mcp在连接失败时会显示HTTP状态和错误文本,并针对含有隐藏首尾空白字符的MCP配置值发出警告;托管MCP允许列表/拒绝列表中的${VAR}条目会从启动环境和托管设置环境中解析,而非设置文件环境;当某个轮次因流式传输途中的API错误而终止时,claude -p不再丢弃已生成的文本;当路径并非bash/sh二进制文件时,CLAUDE_CODE_GIT_BASH_PATH会被忽略并发出警告;快速模式不再支持Opus 4.7(/fast现适用于Opus 5和Opus 4.8);内置claude-api skill默认使用Opus 5,并提供从Opus 4.8迁移的路径。v2.1.220:仅包含错误修复和可靠性改进。自动模式下Fable-5回退至“最佳可用Opus模型”的机制始于v2.1.176,如今会解析为Opus 5。已于2026年7月25日对照规范更新日志完成验证。 

  85. Anthropic、@anthropic-ai/claude-agent-sdk TypeScript v0.3.219v0.3.220claude-agent-sdk Python v0.2.127v0.2.128。2026年7月24日至25日。TypeScript v0.3.219:控制协议中新增DirectoryAdded生命周期hook事件;中断控制请求新增选择性启用的cancel_queued(能力标识为interrupt_cancel_queued_v1),可在中止操作的同时取消已排队和等待分发的消息;结果和初始化消息中新增fast_mode_disabled_reason;切换模型后,初始化响应不再报告生成时模型的fast_mode_state;SDK设置类型中新增sandbox.network.strictAllowlistworkflowSizeGuidelinePython v0.2.127:修复后台任务仍在运行时过早关闭stdin的问题——此前,query()会在收到第一个result帧时关闭stdin,即使后台subagents仍在运行,导致其SDK-MCP工具调用以"Stream closed"失败,并悄然绕过PreToolUse hooks;现在,stdin会保持打开,直至所有运行中的任务完成且最终结果帧到达(#1103)。v0.3.220 / v0.2.128:同步更新至CLI v2.1.220。 

  86. PyPI上的claude-agent-sdk及其更新日志npm上的@anthropic-ai/claude-agent-sdk。已于2026年8月1日验证:Python 0.2.128(更新日志:“将内置Claude CLI更新至版本2.1.220”;要求mcp<2.0.0,>=1.23.0),TypeScript 0.3.220(发布于2026年7月24日,“与Claude Code v2.1.220保持一致”)。本段此前的数据(Python v0.2.111内置CLI v2.1.202、TypeScript v0.3.203)各自落后了17个版本,而本指南其余部分已追踪至0.2.128和0.3.220。 

  87. Anthropic、“Claude Opus 5发布”。2026年7月24日。claude-opus-5;“每百万输入token 5美元,每百万输出token 25美元”;快速模式的运行速度“约为默认速度的2.5倍”,价格则“是Opus 5基础价格的两倍”(根据Claude Code v2.1.219更新日志,为每MTok 10/50美元;该日志还说明其上下文窗口为1M)。基准测试:“在Frontier-Bench v0.1上,Opus 5超越所有其他模型,性能达到Opus 4.8的两倍以上”;在CursorBench 3.2上,“与Fable 5的最高得分相差不到0.5%,成本却仅为其一半”;“在ARC-AGI 3上……Opus 5的得分是次优模型的3倍”;在OSWorld 2.0上,其表现超越“Fable 5的最佳成绩,成本却仅略高于三分之一”。该模型被描述为“深思熟虑且积极主动”,并且“更善于验证自身工作并审慎迭代”。 

NORMAL agent-architecture.md EOF