Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

工作原理

理解智能体循环、内置工具、会话与上下文窗口,以及检查点和权限这两道安全机制。

Claude Code 是一个运行在终端里的智能体助手。它最擅长写代码,但凡是你能在命令行里做的事,它都能帮上忙:写文档、跑构建、搜索文件、调研主题等。

智能体循环

你交给 Claude 一个任务后,它会经历三个阶段:收集上下文 → 采取行动 → 验证结果。这三个阶段互相交织,Claude 在整个过程中都在使用工具:搜索文件来理解代码,编辑文件来改动,运行测试来检查成果。

循环会随任务调整:只问一个代码库问题,可能只需要收集上下文;修 bug 会反复经过三个阶段;重构则可能包含大量验证。Claude 根据上一步学到的东西决定下一步,串联几十个动作并随时纠偏。

你也是循环的一部分:可以随时打断,补充上下文,或要求它换个思路。

循环由两部分驱动:负责推理的模型和负责行动的工具。Claude Code 是包在模型外面、提供工具并管理模型所见上下文的那一层,这一层被称为智能体 harness。

模型

Claude Code 使用 Claude 模型理解代码、推理任务。官方的说法是:Sonnet 能很好地处理大多数编码任务,Opus 在复杂架构决策上推理更强。会话中用 /model 切换,或用 claude --model <name> 启动。详见模型配置。

工具

没有工具,Claude 只能回复文字;有了工具,它才能读代码、改文件、跑命令、搜网页、调用外部服务。内置工具大致分五类:

类别Claude 能做什么
文件操作读文件、编辑代码、新建文件、重命名和整理
搜索按模式找文件、用正则搜内容、探索代码库
执行运行 shell 命令、启动服务、跑测试、使用 git
网络搜索网页、获取文档、查报错信息
代码智能编辑后看到类型错误和警告、跳转定义、查找引用(需要代码智能插件)

比如你说「修复失败的测试」,Claude 可能会:跑测试 → 读报错 → 搜相关源码 → 读这些文件 → 改文件 → 再跑测试验证。完整的工具清单见工具参考。

在内置工具之上,可以用 Skill 补充知识、用 MCP 连接外部服务、用 Hooks 自动化流程、用子智能体分担任务,这些见扩展 Claude Code。

Claude 能访问什么

在某个目录运行 claude 后,它能访问:

  • 你的项目:当前目录及子目录的文件,经你允许也可访问其他位置
  • 你的终端:任何你能运行的命令——构建工具、git、包管理器、脚本
  • 你的 git 状态:当前分支、未提交改动、近期提交历史
  • 你的 CLAUDE.md:每次会话都会读取的项目指令;如果仓库里有给其他智能体用的 AGENTS.md,Claude 也可以读取
  • 自动记忆:Claude 工作时自动保存的学习内容,每次会话开头加载 MEMORY.md 的前 200 行或 25KB(以先到者为准)
  • 你配置的扩展:MCP 服务器、Skill、子智能体、Claude in Chrome

因为能看到整个项目,所以它可以跨文件工作——这和只看当前文件的内联代码助手不同。

运行环境与入口

运行环境代码在哪执行用途
本地你的机器默认,完整访问你的文件和工具
云端Anthropic 托管的虚拟机,或组织自建的自托管环境卸载任务,处理本地没有的仓库
Remote Control你的机器,从浏览器控制用网页界面,但执行和文件仍在本地

入口(终端、桌面端、IDE 扩展、claude.ai/code、Slack、CI/CD)只决定你怎么看和怎么交互,底层的智能体循环完全一样。

会话

Claude Code 把对话保存在本地:每条消息、工具调用和结果都写入 ~/.claude/projects/ 下的 JSONL 文件,这使得回退、恢复和分叉会话成为可能。Claude 修改代码前还会给受影响文件做快照。

会话相互独立:每个新会话都有全新的上下文窗口,不带上次的对话历史。要跨会话保留内容,用自动记忆,或自己在 CLAUDE.md 里写持久指令。

  • 会话绑定当前目录。切换分支后 Claude 能看到新分支的文件,但对话历史不变。想并行跑多个会话,用 git worktree 创建独立目录
  • claude --continue 或 claude --resume 以同一个会话 ID 重新打开并追加消息;--fork-session 或 /branch 把历史复制到新会话 ID,原会话不变

上下文窗口

上下文窗口装着对话历史、文件内容、命令输出、CLAUDE.md、自动记忆、已加载的 Skill 和系统指令。上下文会随工作逐渐变满:Claude 会自动压缩,但对话早期的指令可能丢失。要长期生效的规则写进 CLAUDE.md,用 /context 查看是什么在占用空间。

快满时 Claude Code 会先清理较早的工具输出,必要时再总结对话;你的请求和关键代码片段会保留。想控制压缩时保留什么,可以在 CLAUDE.md 里加「Compact Instructions」小节,或运行 /compact focus on the API changes 这样带重点的命令。

其他管理上下文的办法:

  • Skill 按需加载:会话开始时 Claude 只看到 Skill 的描述,用到时才加载全文。只想手动调用的 Skill 可设置 disable-model-invocation: true
  • 子智能体使用独立的上下文窗口:它的工具调用不占用你的上下文,结束时只返回摘要

用检查点和权限保证安全

检查点:Claude 编辑文件前会快照当前内容,出问题时按两次 Esc 回退,或让 Claude 撤销。检查点独立于 git,恢复对话后依然可用,只覆盖文件改动;对数据库、API、部署这类远程系统的操作无法回退,需要靠权限模式和规则来控制。

权限模式:按 Shift+Tab 循环切换:

  • Auto:分类器在后台审查多数动作,拦截有风险的,而不是每次问你
  • Manual:改文件和跑 shell 命令前都询问
  • Accept edits:不询问就编辑文件、运行 mkdir、mv 这类常见文件系统命令,其他命令仍询问
  • Plan:只探索并给出计划,不改源码

还可以在 .claude/settings.json 里预先放行 npm test、git status 这类可信命令。详见权限。

高效使用的几个习惯

  • 向 Claude 求助:直接问「怎么设置 hooks」「CLAUDE.md 怎么组织」。/init 为项目生成初始 CLAUDE.md,/doctor 诊断安装和配置问题
  • 这是一场对话:不需要完美的提示词,先说想要什么再逐步修正,第一次不对不用重来
  • 打断与引导:按 Esc 立即停止;或直接输入修正并回车,消息会排队,Claude 完成当前工具调用后会读到并调整
  • 委托而非口述:像对一位能干的同事那样给出背景和方向,不必指定读哪些文件、跑什么命令,例如「结账流程对过期银行卡用户坏了,相关代码在 src/payments/,帮我排查并修复」