跳到正文

Claude Code 源码:把智能体看成操作系统进程

有用的镜头

“模型使用工具”这句话太软了。

如果我将 Claude Code 视为在本地操作环境中运行的智能体进程,则它会更容易推理:

model reasoning
 -> runtime prepares context
 -> model requests tool calls
 -> runtime checks permissions
 -> tools touch files, commands, plugins, and subprocesses
 -> results return to context
 -> loop exits, compacts, or continues

该透镜使隐藏的基材可见。

智能体作为进程

智能体运行时必须管理普通的类似流程的问题。

类似操作系统的关注智能体运行时版本
流程生命周期开始、等待、取消、恢复、停止
文件系统源文件、差异、临时文件、注释、日志
权限允许哪些命令、文件、域和工具
plugin通过 plugin、MCP 或工具发现加载额外功能
系统调用工具调用是对运行时的请求,以对世界进行操作
信号用户中断、预算限制、致命错误

模型并不直接改变世界。它要求运行时这样做。

智能体循环

一个简化的循环如下所示:

prepare messages
 -> call model
 -> inspect result
 -> if tool call:
 check permission
 run tool
 append tool result
 continue
 else:
 produce final answer
 stop

该循环的退出路径比“答案完成”更多。

退出触发它出现在哪里
正常完成尚未准备好工具调用或最终响应结果处理
预算边界token、成本或 turn 预算模型调用/运行时核算
用户中断UI 取消或发出信号任意合作边界
致命错误工具失效、压实失效、无效状态准备或结果处理

运行时从一开始就需要所有这些。如果只设计正常的完成,那么所有其他边界都会成为一个尴尬的例外。

提示和工具安全

系统提示符不是一团静态的东西。它具有稳定的政策和动态的环境背景。

static layer:
 long-term behavior, authority, safety boundaries

dynamic layer:
 current tools, repo state, budget, task state, environment facts

工具也有语义。工具不仅仅是函数签名。它具有发现文本、权限要求、输入/输出整形和安全检查。

系统调用类比有助于:

model: I want to run this action
runtime: Is it allowed? How should it execute? What result is safe to return?

上下文工程

上下文与会话历史记录不同。

运行时可能具有持久事件、文件、日志和注释,但模型只能看到成形的上下文窗口。这样上下文工程成为核心运行时工作。

三个操作很重要:

运营目的
结构化修剪保留任务关键字段并删除不相关的细节
压实用高召回率延续摘要替换旧的原始上下文
交接将旧阶段压缩为下一阶段更强的状态快照

对于 coding agent,良好的延续摘要应保留:

intent
constraints
files read
files modified
errors
tests run
open questions
next action

重点不是要漂亮地总结。重点是使下一步行动成为可能。

注释和子智能体

有两种做法比压缩更重要。

第一,当注释必须在上下文改动中幸存下来时,将注释写入文件系统。 NOTES.md、计划文件或进度日志比要求模型记住更可靠。

第二,使用子智能体进行有界探索。主智能体可以保持目标并将狭窄的调查委托给另一个上下文,然后仅使用提炼的结果。

该模式保护主要上下文:

main agent keeps objective and synthesis
subagent burns context on local exploration
summary returns

我的收获

类似Claude Code的系统不仅仅是提示包装器。它们是具有运行时职责的智能体进程:

  • 准备背景;
  • 路由工具调用;
  • 强制执行权限;
  • 处理取消;
  • 紧凑的历史;
  • 公开 plugin;
  • 保持足够的状态以继续;
  • 到达边界时诚实退出。

操作系统镜头很有用,因为它将模糊的“AI 智能体”转变为可检查的东西:进程、状态、工具、权限和系统调用。