Claude Code 工作模式
Claude Code 工作模式
0. 定位声明
适用版本:Claude Code(基于 @anthropic-ai/claude-code npm 包,当前稳定版 ~1.x)
前置知识:
- 基本的终端/命令行使用经验
- 了解 LLM 基础概念(Token、上下文窗口、Tool Use)
- 了解 Git 基本操作(commit、diff、branch)
不适用范围:
- 不覆盖 Claude.ai Web 界面的使用
- 不适用于通过 API 自行集成 Claude 的场景(那属于 Claude API 范畴)
- 不覆盖 MCP Server 的开发与调试(仅涉及用户侧配置与使用)
1. 一句话本质
Claude Code 是一个跑在你终端里的 AI 编程助手。你用自然语言描述任务(“帮我重构这个函数”、“找出内存泄漏的原因”),它会自己读代码、改文件、执行命令,直到任务完成——整个过程就像一个会写代码的实习生坐在你旁边,你说需求,它动手做。
与普通的 AI 聊天工具最大的区别是:它能主动操作你的文件系统和终端,而不只是输出文字。
2. 背景与根本矛盾
历史背景
2023 年前后,以 ChatGPT 为代表的对话式 AI 已能生成高质量代码片段,但开发者普遍面临"最后一公里"问题:AI 输出的代码需要手动复制粘贴、调试、整合到工程上下文——上下文割裂使 AI 实际提效有限。
与此同时,GitHub Copilot 等 IDE 插件只能做"代码补全",无法理解完整的工程意图(如"帮我把这个模块迁移到新架构"这类需要跨文件、多步骤的任务)。
Claude Code 在这一背景下诞生,定位是:在开发者本地环境中,以 Agentic 方式自主完成跨文件、多步骤的编程任务。
根本矛盾(Trade-off)
| 张力轴 | 一侧 | 另一侧 |
|---|---|---|
| 自主性 vs 安全性 | 完全自主执行(无需确认)→ 效率最高 | 每步都询问用户 → 安全但繁琐 |
| 上下文深度 vs Token 成本 | 读入整个代码仓库 → 理解最准确 | 只读必要文件 → 便宜但可能遗漏 |
| 操作能力 vs 可控边界 | 允许执行任意 shell 命令 → 功能强大 | 限制执行范围 → 安全但能力受限 |
Claude Code 的核心设计哲学是:默认保守(向用户确认),但允许用户主动授权更大的自主权,通过 --dangerously-skip-permissions 等标志在受控场景(如 CI 流水线)中开放自主执行。
3. 核心概念与领域模型
关键术语表
| 术语 | 费曼式解释 | 正式定义 |
|---|---|---|
| Tool Use(工具调用) | Claude 不只会"说话",还会"动手"——它可以调用预定义的工具函数来读文件、执行命令 | LLM 通过结构化输出触发外部函数调用的机制,Anthropic API 层面称为 Function Calling |
| Agentic Loop(代理循环) | Claude 会反复"想→做→看结果→再想",直到任务完成,而不是只回答一次 | 以 LLM 推理为核心的 Reason-Act-Observe 循环,每轮迭代结果作为下一轮输入 |
| Context Window(上下文窗口) | Claude 的"工作记忆"——它能同时"记住"的内容总量,超出则会遗忘早期信息 | LLM 单次推理能处理的最大 Token 数,Claude 3.x 系列支持 200K Token |
| REPL 模式 | 像 Python 交互式终端一样,你输一句它回一句,保持对话状态 | Read-Eval-Print Loop,维持会话上下文的交互式执行模式 |
| Headless 模式 | 不需要人盯着,把任务写在命令里直接运行,适合自动化脚本 | 无交互式界面的非阻塞执行模式,通过 stdin/参数传入任务,结果输出到 stdout |
| MCP(Model Context Protocol) | 给 Claude Code 装"插件"的标准接口,让它能连接数据库、调用外部 API 等 | Anthropic 制定的开放协议,定义 AI 模型与外部工具/数据源的标准化通信方式 |
| Permission Gate(权限门控) | 每次 Claude 要做"危险操作"(如删文件、执行命令),都会弹出确认提示 | 执行高风险工具调用前的用户授权检查机制 |
领域模型
用户输入(自然语言任务)
│
▼
┌───────────────────────────────────────────────────────┐
│ Claude Code CLI │
│ │
│ ┌─────────────┐ ┌──────────────────────────────┐ │
│ │ Session │ │ Agentic Loop │ │
│ │ Manager │───▶│ ┌────────────────────────┐ │ │
│ │ │ │ │ 1. Claude 推理 │ │ │
│ │ - 对话历史 │ │ │ 2. 选择工具 │ │ │
│ │ - 工作目录 │ │ │ 3. Permission Gate │ │ │
│ │ - 配置状态 │ │ │ 4. 执行工具 │ │ │
│ └─────────────┘ │ │ 5. 观察结果 → 回到1 │ │ │
│ │ └────────────────────────┘ │ │
│ └──────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Tool Layer(工具层) │ │
│ │ read_file │ write_file │ bash │ search │ ... │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ │
│ │ MCP Servers │ │ Anthropic API │ │
│ │ (可选扩展) │ │ (Claude 模型推理) │ │
│ └──────────────┘ └──────────────────────────────┘ │
└───────────────────────────────────────────────────────┘
│
▼
文件系统 / 终端 / 外部服务(实际执行结果)
4. 工作模式详解
Claude Code 的工作模式是本文核心。根据交互方式和自主程度,可以划分为以下几种模式:
4.1 交互式 REPL 模式(Interactive Mode)
费曼解释:就像和人发微信一样,你说一句它回一句,可以随时改变方向。
启动方式:
# 直接在项目目录下启动
cd /your/project
claude
工作特征:
- 维持完整会话上下文,前面讨论的内容在后续对话中可被引用
- 每次需要执行"写文件"、"运行命令"等操作时,默认弹出权限确认
- 用户可在对话中实时调整任务方向
- 支持
@文件名语法将特定文件纳入上下文
典型用途:
- 探索式调试(“这个 bug 可能是哪里导致的?”)
- 增量式功能开发(边讨论设计边实现)
- 代码审查与重构讨论
交互控制命令:
| 命令 | 作用 |
|---|---|
/help |
查看所有可用命令 |
/clear |
清空当前会话上下文(节省 Token) |
/compact |
压缩上下文(用摘要替换历史,保留关键信息) |
/cost |
查看当前会话的 Token 消耗与费用 |
/permissions |
查看当前已授权的操作范围 |
Escape |
中断当前正在执行的 Agentic 任务 |
4.2 一次性任务模式(One-shot / Inline Mode)
费曼解释:不开对话框,直接在命令行把任务一句话说完,它做完就退出。
启动方式:
# -p / --print 标志:执行后打印结果并退出
claude -p "找出 src/ 目录下所有未被使用的 import,并给出修复建议"
# 从 stdin 读取任务
echo "给这个函数补充单元测试" | claude -p
工作特征:
- 无交互,执行完毕后进程退出,返回码反映执行状态
- 输出为纯文本,可被管道下游处理
- 默认仍然受权限门控约束(需要文件写入时仍会暂停)
典型用途:
- Git hooks 中的代码质量检查
- Makefile 中的辅助任务
- 快速查询代码库信息
4.3 无人值守自动化模式(Headless / Non-interactive Mode)
费曼解释:把 Claude Code 当作一个可以自主完成任务的"机器人",不需要有人在旁边盯着确认,适合在服务器或 CI 上跑。
启动方式:
# --dangerously-skip-permissions:跳过所有权限确认
claude -p "运行测试套件,修复所有失败的测试" \
--dangerously-skip-permissions
# 在 CI 环境中的典型用法(GitHub Actions 示例)
# 注意:需要设置 ANTHROPIC_API_KEY 环境变量
claude -p "检查本次 PR 的代码变更,生成 code review 报告" \
--dangerously-skip-permissions \
--output-format json
⚠️ 安全警告:--dangerously-skip-permissions 意味着 Claude 可以无需确认地执行任意 shell 命令和文件操作。仅在以下条件全部满足时使用:
- 在隔离的沙箱/容器环境中运行
- 任务范围明确且可预期
- 对代码库有版本控制保护(可回滚)
输出格式控制:
# 流式 JSON 输出(适合程序化处理)
claude -p "分析这段代码的复杂度" --output-format stream-json
# 纯文本输出(默认)
claude -p "..." --output-format text
输出格式对比:
| 格式 | 适用场景 | 特点 |
|---|---|---|
text(默认) |
人类阅读 | Markdown 格式,友好易读 |
json |
程序解析 | 结构化,包含完整元数据 |
stream-json |
实时流处理 | 逐行输出 JSON 事件,适合低延迟场景 |
4.4 自定义工作流模式(Custom Workflow / SDK Mode)
费曼解释:不用命令行,而是在你自己的程序里调用 Claude Code 的能力,把 AI 嵌入到你的工具链中。
Claude Code 提供了 Node.js SDK,允许开发者以编程方式控制 Agentic 循环:
// 运行环境:Node.js 18+,@anthropic-ai/claude-code 最新版
import { query } from "@anthropic-ai/claude-code";
// 基础用法:单次查询
const messages = [];
for await (const message of query({
prompt: "解释 src/auth.ts 中的认证逻辑",
options: {
maxTurns: 10, // 最大 Agentic 循环次数
cwd: "/your/project", // 工作目录
},
})) {
messages.push(message);
// message.type 可能是 'text' | 'tool_use' | 'tool_result' | 'result'
if (message.type === "text") {
process.stdout.write(message.text);
}
}
// 多轮对话:传入历史消息
const followUp = query({
prompt: "基于刚才的分析,帮我重构 validateToken 函数",
options: { maxTurns: 20 },
// 传入前一轮的消息历史,维持上下文
messages: messages,
});
关键参数说明:
| 参数 | 默认值 | 说明 | 风险 |
|---|---|---|---|
maxTurns |
10 | Agentic 循环最大轮数 | 过大可能导致高费用和无限循环 |
allowedTools |
全部 | 限制可用工具集合 | 过度限制会使任务无法完成 |
cwd |
process.cwd() |
工作目录 | 设置错误会导致文件操作失败 |
systemPrompt |
内置 | 覆盖系统提示 | 覆盖后会失去内置的安全约束 |
4.5 MCP 增强模式(MCP-integrated Mode)
费曼解释:给 Claude Code 安装"插件",让它能访问你公司的数据库、内部 Wiki、项目管理系统等,就像给手机装 App 一样扩展能力。
MCP(Model Context Protocol) 是 Anthropic 推出的开放协议,Claude Code 通过 MCP Server 连接外部数据源和工具。
配置方式(~/.claude.json 或项目级 .claude/config.json):
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
MCP 工作原理:
Claude Code
│
│ 发现工具(工具描述注入到系统提示)
▼
MCP Client(内置于 Claude Code)
│
│ JSON-RPC over stdio / SSE
▼
MCP Server(独立进程)
│
▼
外部服务(GitHub API / PostgreSQL / Jira / ...)
常用 MCP Server 生态:
| Server | 用途 | 适用场景 |
|---|---|---|
server-github |
GitHub PR/Issue 操作 | 自动化 code review、issue 分析 |
server-postgres |
数据库查询 | 代码中的 SQL 辅助、schema 理解 |
server-filesystem |
增强文件操作 | 大型目录结构导航 |
server-brave-search |
网络搜索 | 查询最新文档和技术方案 |
| 自定义 Server | 任意内部系统 | 企业内网工具集成 |
4.6 模式对比总览
| 维度 | REPL 交互模式 | One-shot 模式 | Headless 自动化 | SDK 编程模式 | MCP 增强模式 |
|---|---|---|---|---|---|
| 触发方式 | 终端交互 | CLI 单次命令 | CI/脚本调用 | 代码调用 | 叠加于其他模式 |
| 用户参与 | 全程参与 | 发起后退出 | 无需参与 | 由程序控制 | 同宿主模式 |
| 权限控制 | 每步确认 | 每步确认 | 跳过确认 | 可编程控制 | 同宿主模式 |
| 上下文保持 | ✅ 全会话 | ❌ 单次 | ❌ 单次 | ✅ 可传递 | ✅ 继承 |
| 适用场景 | 探索调试 | 快速查询 | CI/自动化 | 工具链集成 | 数据源扩展 |
| Token 消耗 | 中-高 | 低-中 | 中-高 | 可控 | 略高(工具描述占 Token) |
5. 工作原理与实现机制
5.1 Agentic Loop 详解
Claude Code 的核心执行引擎是一个 Reason-Act-Observe 循环,以下是单次完整任务的执行时序:
用户输入 "帮我修复 src/api.ts 中的 TypeScript 错误"
│
▼
[Turn 1 - 推理]
Claude 分析任务:需要先读文件
│
├─ 决策:调用 read_file(path="src/api.ts")
│
▼
[Permission Gate]
"是否允许读取 src/api.ts?" ─── 用户确认 ──▶ [执行工具]
│
▼
[Turn 1 - 观察]
接收文件内容,发现 3 处 TS 错误
│
▼
[Turn 2 - 推理]
分析错误原因,制定修复方案
│
├─ 决策:调用 write_file(path="src/api.ts", content=...)
│
▼
[Permission Gate]
"是否允许修改 src/api.ts?" ─── 用户确认 ──▶ [执行工具]
│
▼
[Turn 2 - 观察]
文件写入成功
│
▼
[Turn 3 - 推理]
需要验证修复是否有效
│
├─ 决策:调用 bash(command="npx tsc --noEmit")
│
▼
[Permission Gate]
"是否允许执行命令?" ─── 用户确认 ──▶ [执行工具]
│
▼
[Turn 3 - 观察]
tsc 输出无错误 → 任务完成,退出循环
│
▼
输出最终摘要给用户
5.2 上下文管理机制
Claude Code 面临的核心工程挑战之一是在有限的 Context Window 内塞入足够的信息。
信息优先级策略(⚠️ 存疑:具体实现细节为推断):
- 系统提示:Claude Code 的行为规范和工具定义(固定占用,约 10-20K Token)
- 用户任务描述:当前任务的完整上下文
- 工具调用历史:已执行操作的记录(随对话增长)
- 文件内容:被
@引用或工具读取的文件(最大变量)
上下文压缩机制(/compact 命令触发):
原始对话历史(可能 100K+ Token)
│
▼
Claude 生成摘要(保留关键决策和已知信息)
│
▼
压缩后上下文(约 5-10K Token)
│
▼
继续执行,但早期细节可能丢失
实践建议:当执行复杂的长任务时,若发现 Claude 开始"遗忘"之前的约束或决策,应主动使用 /compact 或重新启动带有精炼 prompt 的新会话。
5.3 权限系统设计
┌────────────────────────────────────────────────────────┐
│ 权限级别(从宽松到严格) │
├────────────────────────────────────────────────────────┤
│ 1. --dangerously-skip-permissions │
│ 所有操作无需确认,完全自主执行 │
├────────────────────────────────────────────────────────┤
│ 2. 会话级授权(交互模式中选择"Allow in session") │
│ 本次会话内同类操作不再询问 │
├────────────────────────────────────────────────────────┤
│ 3. 单次确认(默认) │
│ 每次操作单独确认 │
├────────────────────────────────────────────────────────┤
│ 4. 只读模式(部分工具被禁用) │
│ 通过 allowedTools 配置限制可用工具集 │
└────────────────────────────────────────────────────────┘
高风险操作分类(⚠️ 存疑:分类标准为推断):
bash执行任意 shell 命令write_file/delete_file文件写入/删除- 网络请求工具(通过 MCP 接入时)
6. 高可靠性保障与生产实践
6.1 数据安全
最小化暴露原则:
# 推荐:在项目根目录启动,限制文件访问范围
cd /your/project
claude
# 不推荐:在 home 目录启动(Claude 可以访问更多文件)
cd ~
claude
敏感信息保护:
- Claude Code 会将对话内容发送至 Anthropic API,不要在对话中粘贴私钥、密码等敏感信息
- 使用
.claudeignore文件(语法与.gitignore相同)排除敏感目录和文件
# .claudeignore 示例
.env
.env.*
secrets/
*.pem
*.key
node_modules/
6.2 可观测性
| 指标 | 查看方式 | 正常范围 | 警告阈值 |
|---|---|---|---|
| Token 消耗 | /cost 命令 |
依任务复杂度而定 | 单任务 > 100K Token 时需关注费用 |
| 循环轮数 | 任务日志 | 5-15 轮 | > 30 轮可能陷入循环 |
| 任务耗时 | 终端时间 | 30s - 5min | > 10min 建议中断重来 |
6.3 容灾策略
版本控制是最重要的保险:
# 在让 Claude Code 进行大规模修改前,先创建 checkpoint
git add -A && git commit -m "checkpoint: before claude-code refactoring"
# 若结果不满意,可完整回滚
git reset --hard HEAD~1
任务中断与恢复:
Escape键可随时中断正在执行的 Agentic 任务- 中断后文件系统处于操作进行中的状态,需手动检查是否有半完成的修改
- 重新启动新会话时,可用
git diff了解 Claude Code 已做的修改
7. 使用实践与故障手册
7.1 典型生产配置
项目级配置文件(/your/project/.claude/config.json):
{
"model": "claude-opus-4-5",
"maxTurns": 15,
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
}
}
}
CLAUDE.md — 项目上下文注入文件(最重要的配置之一):
在项目根目录创建 CLAUDE.md,Claude Code 每次启动时会自动读取此文件:
# 项目上下文
## 技术栈
- Node.js 20 + TypeScript 5.x
- PostgreSQL 15(ORM: Drizzle)
- 部署在 Kubernetes,镜像推送至内部 Harbor
## 开发约定
- 所有函数必须有 JSDoc 注释
- 数据库迁移文件放在 db/migrations/
- 禁止直接修改 db/schema.ts,需通过 drizzle-kit generate 生成
## 禁止操作
- 不要删除任何带有 `// DO NOT DELETE` 注释的代码
- 不要修改 .env.production 文件
7.2 故障模式手册
【故障一:Claude 陷入无限工具调用循环】
- 现象:任务运行 > 30 轮,反复读写同一文件但没有进展
- 根本原因:初始 Prompt 描述不清晰,或任务本身存在循环依赖(A 依赖 B,B 依赖 A)
- 预防措施:在 Prompt 中明确"成功标准";为 SDK 模式设置合理的
maxTurns(建议 ≤ 20) - 应急处理:按
Escape中断 →git diff检查当前状态 → 重新用更清晰的 Prompt 启动
【故障二:上下文超限(Context Window Overflow)】
- 现象:Claude 开始忽略之前定义的约束,或报告"无法记住之前的信息"
- 根本原因:对话历史超过 200K Token,早期信息被截断
- 预防措施:长任务中定期使用
/compact压缩上下文;将核心约束写入CLAUDE.md而不是依赖对话历史 - 应急处理:
/clear清空历史 → 重新注入关键上下文 → 继续任务
【故障三:文件被意外修改或删除】
- 现象:Claude 在执行大型重构时删除了不应删除的文件或引入了错误修改
- 根本原因:任务描述不够精确,或 Claude 对业务逻辑的理解有偏差
- 预防措施:大改前创建 git commit checkpoint;使用
CLAUDE.md明确禁止操作范围 - 应急处理:
git checkout -- <file>还原单个文件 或git reset --hard全量回滚
【故障四:MCP Server 连接失败导致工具不可用】
- 现象:Claude 报告无法使用某个工具,或工具调用返回连接错误
- 根本原因:MCP Server 进程未启动、环境变量未注入、网络不通
- 预防措施:在 CI 环境中明确检查 MCP Server 健康状态;本地开发时先用
npx <server>手动测试 - 应急处理:检查
.claude/config.json中的环境变量配置 → 重启 Claude Code 会话
【故障五:API 费用超预期】
- 现象:单次任务消耗 Token > 100K,月账单显著增长
- 根本原因:频繁读取大文件、上下文未及时压缩、循环任务未设置 maxTurns 上限
- 预防措施:在
CLAUDE.md中告知 Claude 避免读取超过 X KB 的文件;SDK 模式设置maxTurns;使用/cost监控消耗 - 应急处理:立即中断任务 → 检查是否有 Agent 循环 → 优化 Prompt 减少不必要的工具调用
7.3 边界条件与局限性
- 大型 Monorepo:代码库超过 100 万行时,Claude Code 无法在单次会话内理解全局结构,需要通过
CLAUDE.md人工标注关键模块边界 - 二进制文件:无法处理图片、视频、编译产物等非文本文件
- 实时性要求:每次工具调用都有 API 往返延迟(通常 1-5 秒),不适合需要毫秒级响应的场景
- 网络隔离环境:Claude Code 需要访问
api.anthropic.com,在完全隔离的内网环境中无法使用 - 并发执行:⚠️ 存疑:多个 Claude Code 实例同时操作同一文件系统时的行为未明确记录,建议避免并发写入
8. 性能调优指南
8.1 Token 效率优化
Prompt 工程对 Token 消耗影响最大(优先级最高):
# ❌ 低效 Prompt(会导致大量探索性工具调用)
"帮我优化这个项目"
# ✅ 高效 Prompt(明确范围、成功标准、约束)
"优化 src/services/user.service.ts 中的 getUserById 函数:
1. 目标:将 P99 查询延迟从当前 ~200ms 降低到 <50ms
2. 方法:仅考虑添加数据库索引和查询优化,不修改业务逻辑
3. 成功标准:提供 EXPLAIN ANALYZE 结果证明优化有效"
CLAUDE.md 预加载上下文,减少 Claude 探索文件结构的工具调用次数(可节省 20-40% Token)。
8.2 调优参数速查
| 参数/配置 | 默认值 | 推荐值 | 调整方向 |
|---|---|---|---|
maxTurns(SDK) |
10 | 简单任务: 5-10 / 复杂重构: 15-25 | 过小导致任务截断,过大增加费用风险 |
CLAUDE.md 大小 |
无限制 | < 5KB | 过大占用宝贵 Token |
/compact 频率 |
手动 | 每 30-50 轮对话触发一次 | 过频会丢失上下文细节 |
.claudeignore 覆盖 |
无 | 覆盖 node_modules、build 等 | 减少无效文件被读入 |
9. 演进方向与未来趋势
9.1 MCP 生态扩展
MCP 协议自 2024 年底开源以来,第三方 MCP Server 数量快速增长(⚠️ 存疑:截至 2025 年社区 MCP Server 数量的具体统计)。随着更多企业内部系统接入 MCP,Claude Code 的能力边界将从"本地文件系统"扩展到"企业全量数据"。
对使用者的实际影响:未来可以直接问 Claude Code “把 Jira 上本周所有 P0 bug 转换成对应的测试用例并提交 PR”——而无需在多个系统间手动切换。
9.2 多 Agent 协作模式
Anthropic 正在探索让多个 Claude Code 实例并发协作的模式(Swarm / Multi-agent),其中 Orchestrator Agent 负责任务分解,Sub-agents 负责并行执行。
对使用者的实际影响:超大规模重构任务(如"将整个后端从 REST 迁移到 GraphQL")将不再需要人工切分子任务,Claude Code 可以自主并行处理。
10. 面试高频题
【基础理解层】
Q:Claude Code 和 GitHub Copilot 最本质的区别是什么?
A:Copilot 是"代码补全工具",在 IDE 中实时预测下一行代码;
Claude Code 是"任务执行 Agent",在终端中通过 Agentic Loop 自主完成多步骤任务(读文件→分析→修改→验证)。
本质差异:Copilot 是"辅助输入",Claude Code 是"委托执行"。
考察意图:考察候选人是否理解 AI Coding 工具的不同范式,而不只是停留在"都是 AI 写代码"层面。
Q:什么是 Agentic Loop?为什么 Claude Code 需要它?
A:Agentic Loop 是"推理→行动→观察→再推理"的循环。
之所以需要它,是因为复杂任务无法一步完成——Claude 需要先读代码才知道怎么改,改完还需要运行测试才知道改对了。
没有 Agentic Loop,Claude 就只能"说说而已",无法真正执行任务。
考察意图:考察对 LLM Agent 架构的理解深度。
【原理深挖层】
Q:Claude Code 的 Permission Gate 设计背后体现了什么工程哲学?
A:体现了"默认最小权限"原则,同时兼顾了可用性。
每次高风险操作前询问用户,本质上是在 AI 自主性(效率)和人类控制(安全)之间寻找动态平衡点。
这与 Unix 的 sudo 模型类似:你可以执行高权限操作,但必须明确地确认你知道自己在做什么。
开放 --dangerously-skip-permissions 则是允许用户在受控场景(CI)中主动放弃这层保护,换取自动化能力。
考察意图:考察对 AI 安全工程和权限设计原则的理解。
Q:CLAUDE.md 文件的本质是什么?它解决了什么问题?
A:CLAUDE.md 本质上是"注入到每次会话系统提示的持久化上下文"。
它解决的问题是:Claude 没有跨会话记忆,每次重启都是"新人"——CLAUDE.md 相当于给新入职的员工写的《项目指南》,
确保 Claude 每次都了解项目的技术约定、禁止事项和关键边界,而不需要每次都口头重新解释。
考察意图:考察候选人是否真正理解 LLM 无状态性带来的工程挑战及解决方案。
【生产实战层】
Q:在 CI 流水线中使用 Claude Code 的 Headless 模式,你会重点关注哪些风险?
A:
1. 费用失控风险:Agent 陷入循环会消耗大量 Token,必须设置 maxTurns 上限和 API 费用告警
2. 代码质量风险:无人值守时 Claude 可能做出不符合预期的修改,必须配合 git 检查和测试套件自动验证
3. 敏感信息泄露:CI 环境中的数据库连接串、API Key 等绝不能出现在传给 Claude 的 Prompt 中
4. 非幂等操作风险:如果 CI 失败重跑,Claude 的操作是否可以安全地重复执行?需要在设计上保证幂等性
考察意图:考察候选人将 AI 工具引入生产流程时的工程素养和风险意识。
11. 文档元信息
验证声明
本文档内容经过以下验证:
✅ 与官方文档概念一致性核查:https://docs.claude.com/en/docs/claude-code/overview
⚠️ 以下内容未经本地环境验证,仅基于文档与推断:
- 第 5.2 节:上下文管理的具体 Token 占比为推断值
- 第 5.3 节:权限分类为推断,非官方分类体系
- 第 6.2 节:可观测性指标阈值为经验推断
- 第 9 节:演进方向基于公开信息,未来产品规划可能变化
- 第 7.3 节第 5 条:并发行为未查到官方说明,已标注存疑
⚠️ 文档撰写时网络访问受限,无法实时核查最新官方文档,请以 Anthropic 官方文档为准
知识边界声明
本文档适用范围:Claude Code 命令行工具(@anthropic-ai/claude-code),基于截至 2025 年底的公开资料
不适用场景:
- Anthropic API 直接调用(不通过 Claude Code CLI/SDK)
- Claude.ai Web 界面
- 企业内部部署的私有化版本(如有)
- Claude Code 与特定 IDE 插件集成的具体行为
参考资料
官方文档:
- Claude Code 概览:https://docs.claude.com/en/docs/claude-code/overview
- MCP 协议规范:https://modelcontextprotocol.io
- Anthropic API Tool Use 文档:https://docs.anthropic.com/en/docs/tool-use
延伸阅读:
- ReAct: Synergizing Reasoning and Acting in Language Models(Agentic Loop 的学术基础)
- Anthropic 博客:Introducing Claude Code(产品发布文章)
- MCP GitHub 仓库:https://github.com/modelcontextprotocol
更多推荐



所有评论(0)