Skip to content

第 24 章 Agent 产品可复用骨架

第 23 章拆解了 Claude Code / Codex / Cursor 三家架构哲学——编排派、推理派、集成派。本章是那套哲学的工程化产物:把三家共性的、可落地的部分提炼成一份可直接套用的骨架,让你做 Agent 产品时不用从零设计。

24.1 结论:做 Agent 产品不需要从零设计

一句话结论:做 Agent 产品,核心不是发明新架构,而是把三件已经验证过的模块拼起来——工具系统、安全红线、规划循环。这三个模块,每家厂商都各自做了一遍,做法不同但解决的问题相同。把它们抽象成决策树 + 可 copy-paste 的 schema/prompt 片段,就是一份 MVP 加速器。

┌──────────────────────────────────────────────────────┐
│            Agent 产品骨架(三模块)                    │
├──────────────────────────────────────────────────────┤
│  A. Tool System    工具系统  (分层装载 + schema 设计) │
│  B. Safety Redline 安全红线  (双层防御 + 权限档位)    │
│  C. Planning Loop  规划循环  (Goal → Plan → Step)     │
└──────────────────────────────────────────────────────┘

每个模块 = 选型决策树 + 可 copy-paste 骨架 + 提炼来源

为什么是一人公司的加速器:应用层赛道(见第 30 章)的窗口期短,弱代码起点不允许你花三个月设计工具协议、再花三个月写安全沙箱。骨架的价值是把这三件事的"第一版正确答案"直接给你,你只需要按决策树选档位、按 schema 实现、按 prompt 段粘安全规则。MVP 最小闭环四步就能跑起来(见 24.6)。

24.2 为什么需要这份骨架

从零设计一个 Agent 产品,你会遇到三个绕不开的问题:

  1. 工具怎么装载——一次全塞进 system prompt,还是按需加载?schema 怎么写才让模型调用不出错?
  2. 安全怎么做——光靠 prompt 说"别删文件"够吗?沙箱、权限、确认机制各自管什么?
  3. 规划多深——简单任务也要走 Goal→Plan→Step 吗?什么时候该进 Plan Mode,什么时候直接干?

这三个问题,三家厂商各自交了一份答卷。Claude Code 强在 prompt 层安全与编排,Codex 强在执行层沙箱与目标预算,Cursor 强在工具可扩展与跨模型救场。没有一家三件都做到最好,但每家至少有一件值得抄。

骨架的提炼原则:只抄共性、只抄验证过的、只抄能落地的。不抄各家特色(如 Codex 的 reasoning_effort 7 档旋钮、Cursor 的跨模型 spawn),那些是差异化竞争点,不是 MVP 必需品。MVP 阶段你只需要让 Agent 能读、能写、能执行、能委派、能规划、能停住——这些是六件事的最低门槛。

与第 23 章的衔接:第 23 章讲"为什么三家这么设计",本章讲"你该怎么抄"。先读第 23 章建立架构认知,再用本章落地。两章合起来,是 Agent 产品选型决策的完整底层框架。

24.3 模块 A:Tool System(工具系统)

A.1 第一个决策:工具装载策略

这是架构地基,决定了你后续 token 成本与扩展方式。

你的 agent 工具总数 + 增长性?
├─ ≤ 15 且基本固定
│     → 全量装载(Codex 式):所有 schema 直接进 system prompt
│       优点:无"忘记加载"失败模式   缺点:吃 token
├─ 15 ~ 60,会增长 / 接 MCP
│     → 分页加载(Claude ToolSearch 式):常驻核心 + 按需加载
│       优点:context 可控           缺点:多一步 load
└─ 需要用户/第三方自由扩展
      → 文件系统自读(Cursor 式):schema 落盘,agent 自己读
        优点:开放生态              缺点:agent 要会"找工具"

决策本质:这是你押注「context 会不够」还是「工具会爆炸」。一人公司早期产品工具少,先用全量装载(第一档),省事;用户量起来、接 MCP 后再上分页。别一上来就过度工程化——分页加载的"多一步 load"是真实的失败源,模型会忘记调用 ToolSearch,导致明明有工具却不用。

A.2 最小可用工具集(任何 agent 都该有的 5 类)

类别工具名为什么必须有提炼自
read_file决策必须基于真实内容,不靠记忆三家
edit_file(精确替换)精确、可审计、失败即报错(非整文件覆盖)Claude Edit / Codex apply_patch / Cursor StrReplace
执行run_command(超时+沙箱+后台)唯一的副作用出口,安全设计全在这三家
搜索search(text + semantic)大库导航必备三家(Cursor 多了 SemanticSearch)
委派delegate_task(spawn subagent)隔离 context + 并行三家

MVP 阶段只做这 5 个就能跑起来。其余(如 web_fetchmcp_callcreate_artifact)按需加。这 5 个的覆盖逻辑:能读、能改、能跑命令验证、能在陌生代码库里找路、能把复杂任务拆给子 agent——刚好构成第 06 章可执行闭环的工具底座。

A.3 可直接用的工具 schema 模板

协议选型见 A.4,这里用 function-calling(JSON Schema)写。三个最关键的 schema 给全,read_filesearch 较简单,按同样结构补即可。

run_command —— 最关键,安全设计全在这

json
{
  "name": "run_command",
  "description": "Execute a shell command. The description is shown to the user for approval — use active voice, describe what it does, never use words like 'complex' or 'risk'.",
  "parameters": {
    "type": "object",
    "properties": {
      "command": {"type": "string", "description": "The command to execute"},
      "timeout_ms": {"type": "integer", "default": 120000, "maximum": 600000},
      "sandbox": {
        "type": "string",
        "enum": ["default", "dangerously_disabled"],
        "default": "default",
        "description": "default = run sandboxed; dangerously_disabled = bypass sandbox (requires explicit user confirmation)"
      },
      "run_in_background": {"type": "boolean", "default": false}
    },
    "required": ["command"]
  }
}

注意 sandbox 字段用 dangerously_disabled 这种命名——这是 A.5 第 2 原则"危险命名"的体现:模型在调用前就被参数名提醒"这个动作很危险",比叫 bypass: true 有效得多。

edit_file —— 精确替换,强制先读后改

json
{
  "name": "edit_file",
  "description": "Exact string replacement. You MUST read_file before editing. old_string must be unique in the file or the call fails — never rely on fuzzy matching.",
  "parameters": {
    "type": "object",
    "properties": {
      "file_path": {"type": "string"},
      "old_string": {"type": "string", "description": "Text to replace (must include exact indentation, must be unique)"},
      "new_string": {"type": "string", "description": "Replacement text (must differ from old_string)"},
      "replace_all": {"type": "boolean", "default": false}
    },
    "required": ["file_path", "old_string", "new_string"]
  }
}

为什么是精确替换而不是整文件覆盖:整文件覆盖(write_file)在 Agent 场景下极危险——模型会重写整个文件,任何遗漏都是数据丢失。精确替换强制模型只改它真正要改的部分,且 old_string 不唯一就失败,这等于让模型在改之前必须先 read_file 看清上下文。这是三家不约而同的选择(Claude Edit / Codex apply_patch / Cursor StrReplace),不是巧合。

delegate_task —— 子 agent 委派(含权限下放)

json
{
  "name": "delegate_task",
  "description": "Spawn a sub-agent for a complex, multi-step, or parallelizable task. The sub-agent's final message is returned to you, not shown to the user — relay what matters.",
  "parameters": {
    "type": "object",
    "properties": {
      "description": {"type": "string", "description": "3-5 word task summary"},
      "prompt": {"type": "string", "description": "Full task for the sub-agent"},
      "subagent_type": {"type": "string", "description": "e.g. explore (read-only) / worker (can write) / general"},
      "permission_mode": {"type": "string", "enum": ["plan", "default", "auto", "bypass"], "default": "default"},
      "run_in_background": {"type": "boolean", "default": false}
    },
    "required": ["description", "prompt"]
  }
}

permission_mode 字段是 B.2 权限档位在工具层的落点——主 agent 可以按子 agent 的任务风险级别,给探索型子 agent 配 plan(只读),给执行型子 agent 配 default。这是双层防御在委派场景下的关键延伸。

A.4 工具调用协议选型

协议谁用建议
function-calling(JSON Schema)OpenAI / Cursor / Codex默认选这个,生态最广
XML tool_useClaude深度绑定 Anthropic 才用

默认选 function-calling 的理由:OpenAI、Google、各家开源模型都支持,换模型不用改 schema。XML tool_use 是 Anthropic 历史格式,虽然 Claude 支持得好,但锁死在一家,不利于后续多模型策略(第 32 章)。

A.5 工具设计三原则(零成本,直接抄)

  1. 专用工具优先于 shell:prompt 里写明「Avoid cat/head/sed/awk — use dedicated tools」。专用工具 UI 好 + 权限可控 + 审计日志清晰。让模型用 cat 读文件,你就失去了对读操作的权限控制(见第 05 章 5.1.2 第 4 点)。
  2. 危险命名 = 命名即约束:参数名带 dangerously_* 前缀,模型调用前就被名字提醒(提炼自 Claude dangerouslyDisableSandbox)。这比 bypass: trueskip_safety: true 有效——模型在生成 tool call 时会"看到"这个参数名。
  3. 失败即报错,不猜:edit_fileold_string 不唯一就失败,不靠模糊匹配。根因导向(呼应 CLAUDE.md 工程纪律),禁止为了消除报错而加 fuzzy_match: true 这种绕过标记。

24.4 模块 B:Safety Redline(安全红线)

B.1 双层安全模型(必须两层都有,缺一不可)

┌─ Prompt 层(写进 system prompt)─────────────┐
│  诚实报告 / 不可逆确认 / 防注入 / 自我核对      │  ← Claude 强在这层
├─ 执行层(harness 代码实现)──────────────────┤
│  沙箱容器 / 网络隔离 / 写路径白名单             │  ← Codex 强在这层
└────────────────────────────────────────────┘
  Prompt 层防"模型主动乱来";执行层防"prompt 被绕过/幻觉绕过"。
  两者独立 —— 用户 CLAUDE.md 的红线边界属 prompt 层。

为什么必须两层:prompt 层防的是"模型主动乱来"——比如为了讨好用户而跳过测试、为了完成任务而删文件。执行层防的是"prompt 被绕过"——比如用户输入里藏了 prompt injection,让模型"忘记"了 prompt 里的安全规则。只做 prompt 层,一次 injection 就穿;只做执行层,模型会在合法范围内做蠢事(比如诚实地把测试日志里的 secret push 上去)。两层独立,才构成完整防线。

这与第 05 章的权限模型是同一思路的两种形态:第 05 章讲的是 Claude Code 这款产品的现成权限系统,本章讲的是你自己做产品时要复刻的权限系统。settings.jsondeny 是执行层,CLAUDE.md 的红线边界是 prompt 层——第 05 章已经验证了"两层叠加"的有效性,你做产品时照搬这个结构。

B.2 权限档位(直接抄 Claude 的 5 档,最成熟)

plan        只读规划,不改任何东西,产出方案待批
default     每个有副作用的工具调用都问用户
acceptEdits 文件编辑自动批,命令仍问
auto        大部分自动,危险操作仍问
bypass      全自动(仅限可信环境 / CI)

关键:可按子 agent 粒度配置(在 delegate_task 时指定 permission_mode,见 A.3)。交付给非技术用户的产品,默认走 default,绝不上 bypass。这与第 05 章 5.6 节的红线一致:bypassPermissions 取消的是人类控制面,不是模型犯错的可能性,唯一可接受场景是一次性沙箱实验。

5 档对应第 05 章的 6 种模式(第 05 章多了 dontAsk,用于 CI/headless)。做产品时,dontAsk 也值得抄——headless 场景下未显式允许的工具直接拒绝,比弹窗卡死强。所以完整产品应该是 6 档,这里列 5 档是因为 MVP 阶段一般不做 headless,等接 CI 时再加 dontAsk

B.3 可直接 copy 的 system prompt 安全段(融合三家 + 红线边界)

这段用英文写,直接粘进 system prompt。用英文不是因为崇洋,是因为模型对英文安全指令的遵循率更高(训练数据分布决定的),且与三家原文一致便于模型识别。

# Safety Redlines — confirm with the user even in auto mode
1. Destructive ops: deleting files/dirs, rewriting git history. Before acting,
   LOOK AT THE TARGET — if what you find contradicts how it was described, or
   you didn't create it, STOP and report instead of proceeding.
2. Credentials: never put keys/tokens into code, commits, logs, or send them
   to external services.
3. Data: DB schema changes, data migrations — require explicit confirmation.
4. Risky commands: push / rebase / reset --hard / force-push — require explicit authorization.
5. Outbound content: sending to an external service = public publishing, may be
   cached/indexed — confirm first.

# Honest Reporting (hard rule, counteracts sycophancy)
- If tests fail, paste the actual output. Never say "should be fine".
- If a step was skipped, say it was skipped. Don't pretend it ran.
- State "done" only when verified; say "not verified" when it isn't.

这五条红线对应第 05 章 5.6 节的六类——只是把"环境污染"与"公开发布"合并成第 5 条(对外发送)。如果你的产品涉及数据库,建议把第 3 条拆出来单独强化。Honest Reporting 段是反 sycophancy 的关键:Claude 默认有讨好用户的倾向,明确写"测试失败就贴实际输出,别说 should be fine"能显著降低幻觉式报告。

B.4 自我核对规则(防 prompt injection 破坏)

# Self-check before irreversible actions
Before delete/overwrite: read the target first.
If actual content ≠ how the instruction described it → halt and report.
Approval in one context does NOT extend to the next.

这是防「恶意指令让你删 X,但 X 其实是别的东西」的关键——动作前核对目标真实性。提炼自 Claude Harness 段,三家都不同程度实现了这个模式。"Approval in one context does NOT extend to the next" 这句尤其重要:防止"用户上次同意了删文件,模型就默认这次也同意"的泛化,每次不可逆动作都要独立确认。

B.5 执行层最小实现清单(harness 代码要做的事)

prompt 层是软约束,执行层是硬约束。以下是 MVP 阶段必须实现的最小清单:

  • [ ] run_command 默认在沙箱/容器里跑(网络默认禁,按工具白名单放行)
  • [ ] 写操作限制在工作目录白名单内(禁止写 ~/.ssh/etc.env)
  • [ ] 危险命令关键词拦截(rm -rf /git push --force> 覆盖关键文件)
  • [ ] 所有工具调用记审计日志(who / when / what / 审批结果)

这四条对应第 05 章 deny 列表与 sandbox 的工程实现。第 1 条"网络默认禁"是 Codex 的核心做法——容器化沙箱 + 网络隔离,比 Claude 的 prompt 层防御更硬。MVP 阶段至少做到第 2 条(写路径白名单),否则一次幻觉就能覆盖用户的 .env

24.5 模块 C:Planning Loop(规划循环)

C.1 三层规划(抄 Codex,最完整)

Goal   = 用户最终要什么 + token/时间预算    (create_goal)
Plan   = 拆成 N 个有序步骤                  (update_plan)
Step   = 单个原子动作,状态机驱动            (update_step)

「Goal 带预算」是 Codex 独有且值得抄的——防止 agent 无限烧 token。Claude 和 Cursor 都没有显式的预算管理,这是 Codex 推理派路线的产物(它假设任务可能很深,需要预算控制深度)。一人公司做产品,token 就是钱,这一条必须有。

预算管理的语义:create_goal 时设定 token_budget,agent 在执行过程中检查已消耗 token,接近预算时主动升级(问用户是否追加预算,或切换到更便宜的模型)。这比"无脑烧到 context 满为止"省一个数量级的成本。

C.2 Task 状态机(抄 Claude/Cursor)

        ┌─────────── blocks ───────────┐
        ▼                              │
pending ──► in_progress ──► completed

                └──► blocked (等依赖) ──► in_progress

规则(提炼自三家):

  • 简单任务(1-2 步)不用 todo,别制造噪音。模型会为了"用工具而用工具",在简单任务上也 update_plan,这是 token 浪费。
  • 复杂任务必须用,且 turn 结束前不能留未完成 todo——要么完成,要么标记 blocked 并说明阻塞原因。
  • 支持 blocks/blockedBy 依赖(Claude 式),让 agent 知道先后顺序。这是并行委派的前提:主 agent 拆出有依赖的任务,子 agent 按依赖顺序执行。

C.3 何时进 Plan Mode,何时直接干(决策规则)

直接执行 IF:
  ✓ 单文件小改 / 明确 bug 修复 / 用户给了具体指令

进 Plan Mode IF:
  ✗ 多文件或架构变更
  ✗ 需求模糊
  ✗ 有明显 trade-off(性能 vs 可读性、自建 vs 依赖…)

Plan Mode 规则:
  - 只读,不动代码,产出方案
  - 用 AskUserQuestion 澄清模糊点
  - 不要问"方案行不行"——用户看不到方案前无法回答
  - 方案确认后才退出 Plan Mode 开始执行

这与第 07 章 Plan Mode 的设计完全一致——本章是把 Claude Code 内置的 Plan Mode 机制,抽象成你自己产品里可实现的决策规则。第 07 章讲"用户怎么用 Plan Mode",本章讲"你的产品怎么实现一个等价机制"。

关键细节:"不要问方案行不行"——这是三家共同的教训。模型倾向于在方案还没产出时就问"这个方向可以吗",用户无法回答(没看到方案),于是要么瞎同意要么卡住。正确做法是先产出方案,再问"这个方案要不要执行"。

C.4 可直接用的 planning 工具 schema

create_goal(带预算,Codex 式)

json
{
  "name": "create_goal",
  "description": "Record the user's objective and a token/time budget. Acts as the north star for the session — check it when deciding scope.",
  "parameters": {
    "type": "object",
    "properties": {
      "objective": {"type": "string"},
      "token_budget": {"type": "integer", "description": "Max output tokens willing to spend; agent escalates if nearing limit"}
    },
    "required": ["objective"]
  }
}

update_plan(步骤跟踪)

json
{
  "name": "update_plan",
  "description": "Track ordered steps for a complex task. Skip for 1-2 step tasks. Don't end your turn with incomplete steps.",
  "parameters": {
    "type": "object",
    "properties": {
      "steps": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "subject": {"type": "string"},
            "status": {"type": "string", "enum": ["pending", "in_progress", "completed", "blocked"]},
            "blocked_by": {"type": "array", "items": {"type": "string"}, "description": "Step IDs that must complete first"}
          },
          "required": ["subject", "status"]
        }
      }
    },
    "required": ["steps"]
  }
}

description 里那句"Skip for 1-2 step tasks"是 C.2 第一条规则的体现——把规则写进 schema 的 description,让模型在调用前就看到,比写在外部文档里有效。

24.6 MVP 最小闭环:步骤 1-4 详解

按顺序,每步可独立落地:

步骤动作用哪个骨架工作量
1定工具装载策略(MVP 选全量装载)A.1决策,0 代码
2实现 5 个最小工具集A.2 + A.3 schema核心
3system prompt 粘 B.3 安全段 + B.4 自我核对B.3 / B.4复制粘贴
4实现执行层沙箱(至少写路径白名单)B.5核心
5加 plan mode + task 状态机C.2 / C.3 / C.4
6按子 agent 配置权限档(B.2)B.2 + A.3 delegate_task

MVP 最小闭环 = 步骤 1-4。能跑、安全、不烧钱。Planning(步骤 5)等任务复杂度上来再加,权限档下放(步骤 6)等开始用子 agent 并行时再加。

各步骤详解:

步骤 1(定装载策略):MVP 阶段工具少(就 5 个),选 A.1 第一档全量装载。这个决策是 0 代码的,但影响后续所有设计——选错了(比如一上来就分页),后续要补"模型忘记加载工具"的失败模式,得不偿失。

步骤 2(实现 5 工具):按 A.3 的 schema 实现。run_command 是最复杂的,要处理超时、后台执行、沙箱;其余 4 个相对简单。注意 edit_file 必须强制"先读后改"——在 harness 里检查,没读过就拒绝编辑。这是 A.5 第 3 原则的工程实现。

步骤 3(粘安全段):B.3 + B.4 直接复制粘贴进 system prompt。零成本,但效果显著——这是 prompt 层防御的全部。注意用英文(原因见 B.3)。

步骤 4(实现沙箱):B.5 清单的四条,至少做到第 2 条(写路径白名单)。MVP 阶段如果做容器化沙箱成本太高,至少用操作系统级权限限制写路径——禁止写 ~/.ssh/etc.env.git/。第 1 条(网络隔离)可以等接外部 API 时再加,但 run_command 里涉及 curlwget 的要提前拦截。

步骤 5(Planning)什么时候加:当你的产品开始处理"多步骤、有依赖、可能失败"的任务时加。判断信号:用户反馈"agent 做到一半忘了目标"、"agent 步骤顺序乱了"、"agent 烧了太多 token 但没完成"。出现这三个信号之一,就该上 Planning 了。

24.7 三家可抄点速查表

想抄什么抄哪家具体做法
工具分页(context 不够)ClaudeToolSearch select:name 按需加载 schema
工具全量装载(context 够)Codex所有 schema 进 prompt
工具可扩展Cursorschema 落盘,agent 自读
推理深度可控Codexreasoning_effort 做成 7 档旋钮
跨模型救场Cursor主引擎卡住 spawn 另一家模型
确定性大批量编排ClaudeWorkflow JS 脚本 pipeline/parallel(第 20 章)
探索+写分工Codexexplorer(只读)/worker(写) 角色硬编码 + 写集切分
目标+预算管理Codexcreate_goal(objective, token_budget)
强 prompt 安全Claude诚实报告 + 不可逆确认 + 防注入段
强执行安全Codex容器化沙箱 + 网络隔离

这张表的用法:左列是你遇到的问题,中列是该问题哪家解决得最好,右列是具体做法。MVP 阶段只需要前三行(工具装载)+ 后两行(安全),其余等复杂度上来再按表抄。

24.8 与本书其他章的关系

本章是第四部分 Agent 工程篇的落地章,与全书其他章的关联:

  • 工具系统(模块 A)← 第 15 章 MCP 服务器 / 第 16 章 Skills 与自定义命令:第 15 章讲 Claude Code 现成的工具扩展机制(MCP),第 16 章讲 Skills 自定义命令,本章讲你自己做产品时怎么设计工具系统。三者是同一问题在三个层面的解:Claude Code 用 MCP/Skills 扩展,你的产品用 A.1-A.5 自建。
  • 安全红线(模块 B)← 第 05 章权限模型入门:第 05 章讲 Claude Code 现成的权限系统(allow/deny/ask + 6 档模式),本章讲你做产品时要复刻的等价系统。B.2 的 5 档直接对应第 05 章 5.3 的 6 档,B.5 的执行层清单对应第 05 章 deny 列表的工程实现。
  • 规划循环(模块 C)← 第 07 章 Plan Mode:第 07 章讲 Claude Code 内置的 Plan Mode 机制,本章 C.3 把它抽象成可实现的决策规则。第 06 章可执行闭环是模块 C 的哲学基础——Goal/Plan/Step 是把"限定范围→修改→验证"显式化的工具。
  • 骨架的工程化产物属性 ← 第 23 章三家架构哲学对比:第 23 章讲"为什么三家这么设计",本章讲"你该怎么抄"。先读第 23 章建立架构认知,再用本章落地。
  • MVP 最小闭环 ← 第 30 章一人公司系统性框架:本章的 4 步 MVP 是第 30 章应用层赛道的具体落地之一。第 30 章讲"为什么选应用层",本章讲"应用层第一版怎么搭"。

24.9 合规声明与失败边界

合规声明

本章的 prompt 片段(尤其是 B.3 安全段、B.4 自我核对规则)提炼自 system_prompts_leaks 仓库公开泄露的厂商系统提示词。这些 prompt 片段在法律意义上是各厂商的机密信息衍生物——即便仓库以 CC 协议公开,原始版权与商业秘密主张并未因此消灭。

本书引用这些片段,定位是研究参考为主,商用需评估合规。具体建议:

  • 个人学习、内部研究:直接用,标注来源即可。
  • 开源项目:可用,但建议在 README 里说明 prompt 片段的来源与衍生关系,避免后续合规争议。
  • 商业产品:建议改写。保留结构(五条红线 + 诚实报告 + 自我核对),用你自己的措辞重写,既降低合规风险,也便于针对你的产品场景定制(比如涉及支付的产品强化第 2 条凭据、涉及数据库的产品强化第 3 条数据)。
  • 绝不:把任何一家的 prompt 原文整段复制进商业产品的 system prompt,然后声称是原创。

失败边界

骨架能加速 MVP,但不能解决所有问题。以下场景骨架不够用,需要额外设计:

  1. 长周期任务(跨天/跨会话):骨架的 Planning 是单会话内的,跨会话需要持久化存储 + 恢复机制。这是 Codex 的 update_plan 也没解决的问题,需要你自己加状态持久化层。
  2. 多 agent 协作:骨架的 delegate_task 是主从委派,不是对等协作。真正的多 agent 系统(如 Claude Agent Teams)需要消息总线、共享状态、冲突解决——这些超出 MVP 骨架范围,见第 19 章 Subagents 与第 20 章 Workflows。
  3. 强对抗环境:骨架的安全设计假设用户不是攻击者。如果产品面向公开互联网,会面临 prompt injection、tool poisoning、数据外泄等主动攻击——B.3/B.4 的 prompt 层防御不够,需要执行层强化(完整沙箱 + 网络隔离 + 输出过滤)。参考第 26 章红队对抗式审查。
  4. 合规敏感行业:金融、医疗、法律等行业的 Agent 产品,有额外的审计、数据驻留、可解释性要求。骨架的审计日志(B.5 第 4 条)是起点,但不够——需要满足 SOC 2 / HIPAA / GDPR 等具体合规框架。

最后一条提醒:骨架是 v1,会迭代。三家的做法也在演进(2026 年 Claude Code 已发布 176 次更新)。用骨架时,把它当起点而非终点——MVP 跑起来后,根据真实失败模式迭代你的版本,而不是永远抄 v1。


上一章:第 23 章 三家架构哲学对比
下一章:第 25 章 代码安全审查实战