Claude Certified Architect — Foundations 认证五大知识域的概念复习。这门考试考的是架构判断力,不是背代码,所以每节都先讲为什么,并标出场景题爱设的陷阱。
一句话贯穿全篇: 模型是"瞎子"——它只看得到你喂进上下文的东西,而且没有"手"(不能上网、读文件、调 API,只能输出文字)。 绝大多数"为什么"都从这句话推出来。
权重最大。核心是 agent 的循环和多智能体的编排。
Agentic loop 与 stop_reason。 每次 API 响应都带一个 stop_reason。循环终止靠判断 stop_reason == "end_turn",绝不靠解析文本里有没有"完成"这类词——文本是概率生成的(模型可能在思考里提到"完成",但 stop_reason 还是 tool_use),stop_reason 才是确定信号。最大轮数只是安全兜底,不是主要终止条件。
end_turn=说完了→停;tool_use=要调工具→执行、把结果写回、再循环;max_tokens=你上限设低了(输出被截断);refusal=安全拒绝(别用同样 prompt 重试)。
API 无状态。 Messages API 两次调用之间什么都不记,你要每轮重发整段历史。回传工具结果时:要保留助手那轮的 tool_use 块(tool_result 靠 tool_use_id 跟它配对,丢了就 400),并把 tool_result 放进 user 角色的消息里。多个并行工具结果放在同一条 user 消息中。
模型决策、程序执行。 模型只是请求调用工具;真正执行的是你的程序,再把结果回传。推论:工具失败时,模型毫不知情,除非程序回传。失败要如实(结构化)回传——不是让整个流程崩溃,更不是假装成功。
Coordinator–subagent。 把大任务拆成 coordinator 分派给多个专职 subagent。
- 上下文不自动继承。 每个 subagent 是独立的新调用,只看得到 coordinator 写进它 prompt 的内容。subagent"凭空引用"别人的结果→修法是让 coordinator 显式转发事实,不是开点对点通道。
- 唯一枢纽。 所有通信过 coordinator(星型)。subagent 之间直连是反模式。
- 并行 vs 串行: 互不依赖→同一轮并行 spawn;有依赖→串行。
- 分解粒度: 分解太窄会漏掉整片子领域——subagent 只能覆盖分给它的那块。
fork_session vs 提炼注入。 面对聚焦型侧路子任务,只把需要的少量"case facts"提炼进一个干净的新上下文——别复制整段历史。上下文不是越多越好,而是越聚焦越好(全复制会淹没关键事实、浪费 token)。只有确实要在完整上下文里接着跑,才用 fork_session。
陷阱: 用文本而非 stop_reason 判终止;开 subagent 直连;以为 subagent 会继承上下文;"复制全部历史最保险"。
工具三件套: name、description、input_schema。description 是命门——模型是瞎子,它对工具的全部认知只来自描述。要写清什么时候用,不只是"做什么"。
边界重叠(头号陷阱)。 两个描述几乎一样的工具(analyze_content vs analyze_document;send_message vs send_email 都写"发送消息")会让模型选错。修法是在描述里把边界写清——不是加严厉的系统提示、不是删工具、不是合并。
内置工具。 服务端(Anthropic 执行:web_search、代码执行)vs 客户端(你的程序执行:bash、文本编辑)。代码工作选型:Grep=按内容搜;Glob=按文件名模式搜;Read/Write/Edit=文件操作;Bash=命令。Edit 可能失败(需先读、目标唯一)→退回 Read + Write。别给一个 agent 塞 18 个工具,按角色克制分配。
tool_choice: auto(模型决定)、any(必须用某个)、{type:"tool",name}(强制某个)、none。
MCP(模型上下文协议)——"AI 工具界的 USB-C"。标准化集成,把 M×N 个定制连接器变成 M+N:一个 MCP server 把能力按标准暴露一次;任何 MCP client(Claude Code、Claude Desktop)都能用。
- 配置层级:
.mcp.json(项目级,提交进仓库→全团队共享)vs~/.claude.json(用户级,个人→不共享)。队友没拿到你的 server?你放到了用户级。.mcp.json里密钥用${环境变量}占位,绝不写死。
结构化错误响应。 回 errorCategory + isRetryable + 人能看懂的 message,而不是笼统的"operation failed"。
- 四类:transient(可重试)、validation(输入错——不可重试,先改输入)、business(规则,如超过退款期——不可重试,需说明)、permission(不可重试)。只有 transient 值得重试。
- 合法的空结果不是错误(搜到 0 条=有效答案,不是失败)。
CLAUDE.md 层级。 指令按范围加载:用户级(~/.claude/CLAUDE.md,个人,跟着你走,不随版本控制共享)、项目级(仓库根目录,团队共享)、目录级(子文件夹,只在那里工作时加载)。队友没收到某条指令→多半放到了用户级而非项目级。@import 把另一个文件引入 CLAUDE.md。
路径级规则(.claude/rules/)。 规则文件用 YAML frontmatter 的 paths: glob,只在编辑匹配文件时加载——把无关上下文挡在外面。(本仓库 .claude/rules/hands-on.md 限定 hands-on/**。)
Skill vs slash command。
- Skill(
.claude/skills/<名>/SKILL.md):任务匹配其description时,Claude 可主动调用。支持context: fork(隔离运行——像 subagent 的独立小黑屋,不污染主对话)、allowed-tools(最小权限限制)、argument-hint。用渐进式披露——平时只有描述常驻,完整 SKILL.md 按需加载(省上下文、避免干扰)。 - Slash command(
.claude/commands/):通常你手动/名字触发。
Plan mode vs 直接执行。 复杂、多文件、不易撤回、想先审方案→用 plan mode;小的、单文件、低风险改动→直接执行。
CI/CD 集成。 用 -p 非交互运行(不会卡着等输入),用 --output-format json / --json-schema 输出机器可解析结果,把评审标准写进 CLAUDE.md(别自由发挥)。独立评审实例(与写代码的分开)比自我评审查得更全。第二轮只报告新增/仍未解决的问题。
明确标准胜过模糊指令。 "仅当注释与代码实际行为矛盾时才标记" >> "检查注释是否准确"。给分类式、可判断的规则,而不是"要谨慎"。
few-shot 示例消解歧义——给几个针对棘手/边界情况的带标签示例,比堆更多说明更有效。
用 tool_use + JSON schema 保证结构化输出。 靠工具/schema 强制输出能保证结构——但不保证值的语义正确。可能缺失的字段设为 nullable/optional,让模型如实报"缺失",而不是瞎编一个值。
校验-重试循环。 格式/schema 失败时,把具体错误附到重试请求里(不是笼统的"格式不对")。关键:重试对格式错误有效,对真正缺失的信息无效——文档里根本没有这个字段,再重试也变不出来(经典考点)。
Batch API(Message Batches)。 用于非延迟敏感、可容忍延迟(约 24 小时)的大批量任务,约 5 折成本。非阻塞;结果乱序返回(按 custom_id 匹配)。
独立复核 > 自我复核。 模型在同一会话里审自己的输出,容易漏掉自己的错;独立复核实例更可靠。
长对话保留关键事实。 提炼"case facts"(订单号、已确认的细节)并持久化,因为渐进式摘要可能悄悄丢掉关键数字。警惕**"lost in the middle"**(中间迷失)——模型对长上下文的中段注意力弱,关键信息要聚焦、别埋在中间。用 scratchpad 文件和 /compact 对抗长会话的上下文退化。
升级给人工——用具体、可判断的触发条件: 客户明确要求人工;政策没覆盖这个情况;反复尝试仍无进展。不要只凭情绪化语气、或模型自报的置信度分数就升级——那是不可靠信号。
多智能体错误传播。 区分"访问失败→需重试"(transient)和"合法的空结果"(不是错误)。传播格式要带上失败类型、已尝试的操作、部分结果——不是笼统的"失败"。两个极端都是反模式:"任何异常都终止整个工作流"和"任何异常都静默吞掉"。
人工复核与置信度校准。 聚合准确率(如"整体 97%")会掩盖某个文档类型/字段上的系统性错误——按类型/字段拆分统计。用带标签的验证集校准置信度阈值,而不是拍脑袋定数字。用分层抽样——连高置信度输出也抽查,以发现新错误模式。多来源冲突时,保留claim→来源映射、把两个值都往下游传,而不是静默合并或挑"看起来更顺眼"的数字。
- 全是判断题。两个选项都"能用"时,选治根因的那个(如工具选错→改描述,而非打补丁)。
- 无倒扣分——每题都答。
- 警惕"用对术语套错场景"的干扰项(如在不适用处搬出
fork_session、stop_reason、"subagent 直连")。 - 知识域 1 + 3 + 4 约占三分之二——复习时间往这三块倾斜。
模型微调;API 鉴权/计费;MCP server 部署托管;Claude 内部架构 / RLHF;embedding 与向量数据库;computer use 与视觉;streaming 实现细节;限流/配额/计价算法;OAuth 与云厂商配置;token 计数算法;prompt caching 实现细节(知道存在即可)。