22 道Claude Code 配置与工作流练习题及答案
Claude 认证架构师(基础级)考试练习的全部Claude Code 配置与工作流练习题,附正确答案和简短解析。
开始练习测验 →1. 某团队的共享编码约定写在技术负责人机器上的 ~/.claude/CLAUDE.md 里。新同事克隆仓库后发现 Claude Code 完全没有遵守这些约定。正确的修复方式是什么?
- A.把这些约定移到仓库根目录的 ./CLAUDE.md 并提交版本库,任何人克隆后都会加载同一份文件。✓ 答案
- B.文件仍留在 ~/.claude/CLAUDE.md,让每位新同事克隆后把负责人的版本复制到自己的主目录。
- C.把这些约定粘贴进一个项目级斜杠命令,评审者在批准每个拉取请求之前都手动运行一次该命令。
- D.把这些约定写进负责人的提示词模板,并要求同事在每次新会话的第一条消息前先粘贴这段文本。
记忆文件是分作用域的:~/.claude/ 下的用户级文件属于个人,只对该用户自己的所有项目生效;而项目级的 ./CLAUDE.md(或 ./.claude/CLAUDE.md)会随版本库一起分发给每个人。放在用户级的团队约定永远传不到同事手里,因此正确做法是把它迁到项目作用域并提交。
编号 QB-C69FGJ依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: Claude Code Configuration; Claude Code memory docs (user vs project memory scope)报告此题的问题
2. 某团队正在决定哪些内容写进项目级 CLAUDE.md、哪些内容留在单次提示词里。哪一种划分符合该文件的用途?
- A.当前工单的正文和要改动的文件清单写进该文件;团队的长期约定放在每次提示词里。
- B.构建与测试命令、架构说明和禁止事项写进该文件;当前任务的细节放在提示词里。✓ 答案
- C.只把项目的一句话简介写进该文件;命令、约定和禁止事项放在团队置顶的维基页面上。
- D.模型犯错两次以上的内容写进该文件;命令、约定和禁止事项每次都放在新的提示词里。
项目指令文件在每次会话开始时都会加载,因此应当承载跨所有任务都成立的内容:如何构建与测试、代码结构、命名约定,以及绝对不能做的事。只与某一次工作相关的内容放在提示词里更省也更清晰,不会作为常驻指令影响其他无关任务。
编号 QB-UN3AWH依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: project memory content vs per-task prompt content报告此题的问题
3. 某条约定只适用于名为 *.test.tsx 的测试文件,而这些文件分散在许多目录中,与被测组件放在一起。团队应如何配置,才能让智能体只在做这类工作时加载它?
- A.放进 .claude/rules/ 规则文件,用 paths 前置字段写上该 glob 模式,只在匹配的文件上加载。✓ 答案
- B.在每一个存放测试文件的目录里都放一份 CLAUDE.md,这样 Claude 读取该目录下的文件时就会按需加载这条约定。
- C.写进仓库根目录的 CLAUDE.md,并在开头加一句话,要求 Claude 只有在编辑测试文件时才应用这条约定。
- D.写成一个技能文件,并要求团队成员在每次提出与测试文件相关的修改请求时,都按名字显式地调用这个技能。
路径作用域规则文件在 frontmatter 中用 paths 列出 glob 模式,只有当 Claude 处理匹配的文件时才加载,这正好适用于相关文件散布在整棵目录树、而非集中在某个文件夹的情形。目录级 CLAUDE.md 只有在约定确实局限于某个子树时才管用,而在根文件里加一句限定说明仍会在每次会话中占用上下文。
编号 QB-B6W4BH依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: .claude/rules/ path-scoped rules with paths frontmatter报告此题的问题
4. 某项目的 CLAUDE.md 越来越长,于是有开发者提议把各章节拆成独立文件,再用 @import 引入。这样做的实际效果是什么?
- A.把每个被导入的文件推迟到 Claude 接触到匹配路径时才加载,会话里只保留相关的标准。
- B.让标准文件保持模块化、便于维护,但被导入的文件仍在启动时加载,占用的上下文并没有减少。✓ 答案
- C.允许每位同事在本地覆盖某个被导入的文件,项目文件仍是权威,个人修改也同时生效。
- D.在启动时把被导入的章节压缩成摘要,标准依然可用,占用的上下文却只有原来的一小部分。
@import 是一种组织手段:被引用的文件会在会话启动时与记忆文件的其余部分一起解析并加载,所以 token 开销与直接把文本写在一起完全相同。按路径条件触发加载是带 paths 前置字段的规则文件才有的能力,@import 做不到这一点。
编号 QB-XN5AEN依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3; Claude Code memory docs (@import resolution at launch)报告此题的问题
5. 某团队希望有一个 /release-checks 命令,任何人克隆仓库后都能自动获得。它应当定义在哪里?
- A.放在仓库中 .claude/commands/ 目录下的一个 markdown 文件里,提交后每个克隆都能用。✓ 答案
- B.放在每台机器上 ~/.claude/commands/ 的 markdown 文件里,同事克隆后各自复制。
- C.放在仓库中 .claude/config.json 的 commands 数组里,逐条列出命令名称和提示词。
- D.放在 .claude/skills/ 下的一个技能里,用 frontmatter 注册名称使其出现在斜杠菜单。
斜杠命令是按目录发现的 markdown 文件:仓库中的 .claude/commands/ 属于项目作用域并纳入版本控制,同事只要拉取仓库即可获得;而 ~/.claude/commands/ 只属于本机个人。并不存在 .claude/config.json 里的 commands 数组,技能则是按相关性被加载,而不是注册成斜杠条目。
编号 QB-E6Y4UM依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: project vs personal slash command directories报告此题的问题
6. 有一套多步骤的迁移流程,希望只要工作涉及支付模块,智能体就能自行采用,而不需要任何人点名调用。哪种容器最合适?
- A.斜杠命令,因为直接输入命令名是把一套流程带进当前对话最快捷的方式。
- B.技能,因为它的描述会让模型在工作内容匹配时自行加载这套流程。✓ 答案
- C.钩子,因为框架可以在每次工具调用前确定性地注入这套流程。
- D.子智能体,因为独立上下文是唯一能安全存放长流程的地方。
技能是打包好的指令加上一段描述,模型会拿描述与当前工作进行匹配,因而无需显式调用就能按需加载。斜杠命令是需要有人输入的调用快捷方式,子智能体是拥有独立任务说明的独立上下文,钩子则是绑定在事件而非工作主题上的框架自动化。
编号 QB-WNSX8M依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: skills vs slash commands vs subagents报告此题的问题
7. 某个技能会执行依赖审计,输出多达数千行,而一旦有了摘要,这些原始输出就没人需要了。哪个 frontmatter 设置能解决这个问题?
- A.context: fork,让技能在隔离的子智能体中运行,只把结果返回主对话。✓ 答案
- B.argument-hint,先询问审计范围,使技能只检查范围更窄的一组依赖包。
- C.model,把技能路由到更小的模型,这类批量输出的回复也会更短一些。
- D.allowed-tools,限制技能可调用的工具,从而让审计产生更少的输出行。
以 context: fork 运行技能会给它一个独立隔离的上下文,冗长的中间输出在那里被消化,只有最终结果回到主线程。这也正是使用子智能体的一般理由:那些原始材料事后无人需要的工作,不该占据会话其余部分赖以工作的上下文。
编号 QB-D6MSNK依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3; Claude Code skills docs (frontmatter: context, allowed-tools, argument-hint)报告此题的问题
8. 某个 CI 任务把 `claude "review this diff"` 作为构建步骤运行,结果一直挂起,直到被超时机制杀掉。应如何修复?
- A.把 diff 通过标准输入管道传入,CLI 会把它视为只运行一次并直接退出的信号。
- B.用 -p(--print)非交互运行,并加 --output-format json 以便解析结果。✓ 答案
- C.在任务环境中设置 CLAUDE_HEADLESS=1,让 CLI 跳过交互提示并以纯文本输出。
- D.加上 --batch 标志,让 CLI 把请求排队后立即退出,再在后续步骤中轮询运行结果。
不带参数直接调用会打开交互式会话,而在没有终端的环境里它永远不会结束;-p(--print)才是官方文档中用于单次非交互运行、打印结果后退出的标志。再配合 --output-format json,结果就可被机器解析,便于把审查发现发布为 PR 评论;而 CLAUDE_HEADLESS 与 --batch 都不是真实存在的控制项。
编号 QB-RNZ9DE依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: headless/CI invocation (-p/--print, --output-format json)报告此题的问题
9. 某工程师正在编写驱动智能体完成工具调用的循环。哪种控制流是正确的?
- A.固定循环十轮之后停止,其间每轮都把 tool_result 追加回历史,然后返回累计到的内容。
- B.当 stop_reason 为 tool_use 时继续,逐轮追加 tool_result,为 end_turn 时停止。✓ 答案
- C.只要回复中还含有文本块就继续循环,每轮把 tool_result 追加回历史,只剩文本时停止。
- D.一直循环到助手在正文里说任务已经完成为止,其间每一轮都把 tool_result 追加回对话历史。
stop_reason 是 API 给出的、说明本轮为何结束的结构化信号,因此循环条件应当基于它:tool_use 表示模型在等待结果,end_turn 表示它已经完成。解析自然语言中的完成措辞、数到某个固定上限,或检查是否出现文本块,都是用概率性线索替代确定性信号,结果不是提前结束就是拖得过久。
编号 QB-86U4TD依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 1: agentic loop control via stop_reason报告此题的问题
10. 某仓库要求每次提交前都必须运行格式化工具。该指令写在 CLAUDE.md 里,但智能体偶尔仍会跳过它直接提交。怎样才能让这一步可靠执行?
- A.把格式化步骤做成技能,并要求模型在提交前先加载它,使其成为流程的一部分。
- B.干脆拒绝提交工具,改由模型请人来执行提交,这样就不可能出现未格式化的提交。
- C.配置一个由框架在匹配的工具调用上执行的钩子,它的触发与模型的选择无关。✓ 答案
- D.在 CLAUDE.md 顶部用更强硬的措辞重申这条规则,越靠前的指令越会被稳定遵守。
钩子是框架在匹配事件上执行的自动化,而不是模型自行选择的动作,因此每次都会触发,完全不依赖模型是否遵守指令。提示词层面的指令无论措辞多强、位置多靠前,失败率都不为零,所以凡是业务关键的要求都应改用结构化手段强制执行。
编号 QB-6TAPME依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 1: hooks as deterministic enforcement vs prompt instruction报告此题的问题
11. 某团队正在为其智能体起草权限规则。允许规则与拒绝规则之间的区别是什么?
- A.拒绝规则会拦下匹配的调用,即使有允许规则覆盖它;允许规则只是免去确认提示。✓ 答案
- B.两者都只是模型选择工具时参考的提示,所以拒绝规则的措辞写得越强硬越有效。
- C.允许规则会拦下所有未列出的调用,而拒绝规则只是发出警告,调用照常执行。
- D.拒绝规则只对当前会话生效,而允许规则一经批准就会在之后的会话中持续生效。
权限规则由框架而非模型评估,且拒绝匹配优先于允许匹配,这正是拒绝规则更强的原因:它直接取消某项能力,而不是让使用更顺畅。允许规则并不会赋予智能体本来无法尝试的能力,它只是预先批准该调用,从而不再弹出确认。
编号 QB-PAGU7F依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: permission rules; Claude Code permissions (deny takes precedence over allow)报告此题的问题
12. 在采用某款智能体编码工具之前,团队正在讨论是否授予它不受限的 shell 执行权限。为什么这与文件编辑权限属于不同类别的风险?
- A.不受限的 shell 执行权主要抬高成本,因为智能体每个任务会比原本多跑很多条命令。
- B.不受限的 shell 执行权会削弱工具选择,因为 shell 会和内置的文件工具争抢同类工作。
- C.不受限的 shell 执行权把其他权限都包含在内,一条命令就能读到规则未列出的文件或主机。✓ 答案
- D.不受限的 shell 执行权会拖慢评审,因为评审者除了看文件差异,还得读完整的命令记录。
shell 是一种超集能力:周围的工具权限再怎么精细限定,一条命令都能绕过去做到,包括读取项目之外的文件和建立网络连接。因此在采用前必须先回答:智能体可以运行什么、可以访问网络上的什么、哪些操作必须由人确认、以及记录哪些日志;也正因如此,shell 权限应限定到具体命令,而不是整体放开。
编号 QB-5TXBFD依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3: permissions and least-privilege scoping of execution报告此题的问题
13. 协调者把任务的一部分委派给子智能体,子智能体立刻索要协调者几轮之前就已确定的信息。原因是什么?
- A.子智能体惰性读取共享历史,还没写进 CLAUDE.md 的内容首轮读不到。
- B.子智能体从隔离的上下文开始,不会继承协调者的历史,所需事实必须写进它的提示词。✓ 答案
- C.子智能体只与之前几次调用共享记忆,协调者的事实要晚一次委派才会传到它那里。
- D.子智能体会继承历史,但窗口更小,因此协调者最早的那部分记录会被优先丢弃。
子智能体在自己的上下文中运行,既不会继承协调者的对话,也不会在多次调用之间共享记忆——这恰恰是它适合隔离冗长工作的原因。设计上的推论是:子智能体需要的每一条事实,都必须在委派提示词中显式写明。
编号 QB-NA5H2E依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 1: subagent context isolation and explicit context passing报告此题的问题
14. 某团队希望所有人都连接同一个 Jira MCP 服务器,同时不让 API 令牌进入仓库。哪种配置能同时满足这两点?
- A.让每位同事手动把这个服务器加进自己的 ~/.claude.json,从而让项目配置不进入版本库。
- B.把 .mcp.json 提交到项目根目录,令牌写成 ${JIRA_TOKEN},由各人的环境变量展开。✓ 答案
- C.提交一个安装脚本,让它在首次运行时把令牌写入 ~/.claude.json,服务器就会对所有人出现。
- D.把 .mcp.json 提交到项目根目录,令牌直接写在文件里,首次推送后再把该文件加入 .gitignore。
项目级 .mcp.json 是共享且纳入版本控制的服务器声明位置——包含传输方式与启动细节——因此克隆仓库即可获得同样的工具;而 ${ENV_VAR} 展开则把密钥留在各自的环境变量里,而不是写进文件。把令牌直接写进去,即使之后忽略该文件,密钥也已经泄漏进历史;逐台机器手工配置则会因为没有任何东西保持同步而逐渐漂移。
编号 QB-4TKZ9C依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 2: MCP configuration scoping (.mcp.json project scope, ${ENV_VAR} expansion)报告此题的问题
15. 两个 MCP 工具的描述分别是 "Retrieves customer information" 和 "Retrieves order details",智能体总是调用错的那个。首先应该做什么修复?
- A.在每个描述里补上输入格式、示例查询,以及与相邻工具之间的明确边界。✓ 答案
- B.在两个工具前面加一层路由,先读取请求中的关键词再转发给其中之一。
- C.把两个工具合并成一个,用模式参数区分,让模型不必在相似选项间挑选。
- D.在系统提示里加少样本示例,把样例请求和应当回答它的工具一一配对。
工具描述是模型选择工具时依据的首要信息,因此两段简短且几乎雷同的描述本身就是根因,而不是表象。修正描述同时也是成本最低的着力点:加路由层、合并成带模式参数的工具,或在提示词里加示例,都是在真正有缺陷的工具定义之外再叠加机制。
编号 QB-MAS6VC依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 2: tool descriptions as the primary selection mechanism报告此题的问题
16. 某 MCP 查询工具在后端超时和一次有效查询返回零条匹配这两种情况下,都返回字符串 "Operation failed"。这两种情况应如何分别上报?
- A.两种情况都返回 isError,并附上耗时,让智能体据此判断属于哪一种再决定是否重试。
- B.超时返回 isError,无匹配则直接抛出异常,让智能体停下来而不是报告一个虚假的空结果。
- C.两种情况都返回成功的结果,把失败的说明写进文本里,让智能体自行读取后再决定下一步。
- D.超时返回 isError,并带上错误类别和是否可重试的标记;无匹配则返回成功但为空的结果。✓ 答案
超时属于访问失败,答案仍然未知、可能值得重试;而确实没有匹配的查询是一次成功调用,只是结果为空。把两者混为一谈,会让智能体去重试一个已经有定论的问题,又把服务中断当成"不存在"。isError 标志加上结构化元数据——错误类别、是否可重试的布尔值、可读的说明——才能让智能体在重试、上报和返回空结果之间做出选择。
编号 QB-3T8P4B依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 2: MCP error semantics (isError, error metadata, access failure vs empty result)报告此题的问题
17. 某工程师需要在一个不熟悉的仓库里找出某个函数的全部调用点。以下哪种内置工具用法最合适?
- A.用 Glob 匹配模块路径模式下的文件名,再用 Read 逐个打开,看函数在哪里被调用。
- B.从入口文件开始用 Read 逐个读它导入的文件,只有全量通读才能保证不漏掉调用点。
- C.用 Edit 在函数体里插入一个标记,再跑测试套件,让失败信息暴露出哪些文件调用了它。
- D.用 Grep 搜索函数名找出调用点,再用 Read 打开这些文件,顺着其中的导入继续查。✓ 答案
Grep 搜索的是文件内容,而调用点正是内容层面的东西;Glob 匹配的是文件路径和名称,只能找到名字恰好符合某种模式的文件。采用渐进式探索——先搜出入口点,再读取命中所指向的具体文件——也能让上下文免于被"一开始就全读一遍"倾倒进来的材料塞满。
编号 QB-KAEUPB依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 2: built-in tools (Grep searches contents, Glob matches paths)报告此题的问题
18. 某代码审查智能体已有详尽的书面指令,但它的发现在格式上仍不统一,对模棱两可的情况处理也前后不一。应如何解决?
- A.加入两到四个示例,展示确切的输出格式,以及为何选这一判定而非另一种合理判定。✓ 答案
- B.把评审轮次提高到三次,只保留其中至少两轮都出现的发现,以此稳定输出结果。
- C.加一条指令要求模型保持保守,只报告自己确有把握的发现,这样输出格式就会稳定下来。
- D.在提示词的开头和结尾各重申一次格式要求,模型正是靠这种前后重复才会遵守格式。
当详尽的指令仍然产出格式不一、判断摇摆的结果时,少样本示例是标准解法:它们展示确切的输出形态,并示范为何在两个看似都合理的判定中选择其一,这种判断力能推广到指令未曾枚举的情形。含糊的"保守一点"之类措辞不会带来可测量的变化,而要求多轮结果一致则会压掉那些间歇出现的真实发现。
编号 QB-2TVBX9依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 4: few-shot examples for format consistency and ambiguous-case judgment报告此题的问题
19. 发票是通过带严格 JSON 模式的工具调用抽取出来的。JSON 每次都能正常解析,但下游校验仍会拒绝那些各行金额加不出总额的记录。为什么?
- A.模式是在生成之后才套用的,数字字段会被强制转成字符串,导致下游算术校验失败。
- B.模式只约束输出形状,不保证内容为真,因此各行金额加不出总额时仍能通过校验。✓ 答案
- C.模式禁止出现可选字段,于是模型会编造总额来填满必填键,各行金额因此对不上。
- D.模式对模型只是建议性的,因此仍会出现格式错误的 JSON,解析前必须先修复。
带 JSON 模式的工具调用是获得符合模式输出的最可靠途径,它能消除语法与结构错误,但对取值是否正确毫无约束,因此像总额加错、数值填错字段这类语义错误会原样通过。要抓住它们,需要在模式本身中加入自校验——例如同时抽取声明总额与计算总额,再加一个冲突标记——并配合下游校验。
编号 QB-JA3HHA依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 4: schema-constrained tool use eliminates syntax errors, not semantic errors报告此题的问题
20. 到达的文档类型未知,每种类型各有一个抽取工具。模型有时会直接用文字作答,而不做任何抽取。应采用哪种设置?
- A.把 tool_choice 设为 any,强制必须调用工具,但由模型自行决定用哪个抽取工具。✓ 答案
- B.把 tool_choice 设为 auto,模型在没有合适模式时可以直接用文字作答而不调用工具。
- C.不设置 tool_choice,只在提示词里加一句必须调用工具,模型每次都会照办。
- D.对每一个请求都强制指定同一个抽取工具,并让模型在某个字段里标注出文档类型不符的情况。
tool_choice 设为 "any" 会要求模型必须调用某个工具,同时仍由它自己挑选,这正好对应"存在多个抽取模式、且文档类型事先未知"的情形。"auto" 允许模型直接给出文字答复;强制指定某一个具名工具则会在类型不符时套用错误模式;而写在提示词里的要求只是概率性请求,并不是对响应的约束。
编号 QB-3RAH4B依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 4: tool_choice auto vs any vs a forced named tool报告此题的问题
21. 一次漫长的重构会话已接近上下文上限。压缩会话与清空会话之间有什么区别?
- A.压缩和清空都会生成摘要,区别只在于一个按需触发、另一个按体量自动触发。
- B.压缩会直接丢掉最早的一批消息;清空会保留一份摘要,好让对话能接着进行。
- C.压缩只删除工具结果并保留正文;清空则删除正文而把工具结果留在上下文里。
- D.压缩会把历史替换成摘要并让对话继续;清空则直接丢弃历史,从空白重新开始。✓ 答案
压缩会把到目前为止的对话总结成摘要并从摘要继续,这样能腾出空间,但属于有损操作——文件路径、数字、已作出的决定这类精确信息最先变糊,因此必须保留的内容应当重述一遍或写入草稿文件。清空则是丢弃历史、从头开始,适用于早前材料已经过时、而不只是体量太大的情况。
编号 QB-J85CHA依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 5: context management (/compact summarises and continues, clearing discards)报告此题的问题
22. 某团队正在评估一款智能体编码工具:它直接修改共享分支,且不保留任何差异、日志或已执行命令的记录。不采用它的最有力理由是什么?
- A.它产出改动的速度快过评审者的阅读速度,评审队列会一周比一周长。
- B.它的改动出自模型而非某个人,因此落在团队现有的代码归属规则之外。
- C.它的改动无法作为差异来审查,评审者没法把正确的改动和错误的改动区分开。✓ 答案
- D.它依赖的模型在不同版本间行为会变,同一条提示词未必能复现同一份差异。
智能体的产出是一份提案,而不是已经验证过的改动,整个安全模型都建立在"人能在改动生效前查看改了什么、跑了什么"之上。工作无法被审查的工具等于放弃了这道检查,能力再强也补不回来;其余几项确实是现实的管理问题,但只要有可审查的记录,它们都还能应付。
编号 QB-2RX6X9依据: CCAR-F Exam Guide v1.0 (July 2026), Domain 3 / Domain 5: reviewability and auditability of agent-produced changes报告此题的问题
本考试的其他主题
练习题依据官方 Claude 认证架构师基础级(CCAR-F)考试指南和 Anthropic 公开文档编写。这是一个独立的学习工具,与 Anthropic 无关联、未获其认可,也不授予任何认证。考试由 Pearson VUE 交付;当前的题量、考试时长、通过分数和费用以 Anthropic 官方 CCAR-F 考试指南公布的为准。 官方认证页面 →