ClaudeCode源码设计思想
ClaudeCode源码分析
参考大佬文档:Claude Code 源码解析
Prompt工程设计
- Prompt大体可分为静态部分和动态部分
- Prompt可设置缓存逻辑,减少重复计算
工具系统
设计思想大概分为4个层次:
| 类型 | 功能 | 代表工具 |
|---|---|---|
| Read | 读取信息 | FileRead、Grep、Glob、WebFetch、WebSearch |
| Write | 创建或修改 | FileWrite、FileEdit、NotebookEdit |
| Execute | 运行命令 | Bash、PowerShell、REPL |
| Connect | 连接外部系统 | MCP工具、Agent、SendMessage、TeamCreate |
核心思想:
- ToolSearchTool:工具搜索工具,负责在工具系统中搜索和选择合适的工具来完成任务
- 工具结果最大字符数限制,ClaudeCode大多数工具的阈值是100000字符。当一个工具的返回结果超过这个阈值时,系统不是直接截断,而是把完整结果保存到磁盘上的一个临时文件,然后在对话中只放一个摘要和文件路径。这样Claude可以在需要时通过Read工具去读取完整结果
权限模式
ClaudeCode两阶段判断逻辑:
- Stage 1:快速判断(64 token预算),仅输出 yes/no 来判断是否放出权限
- Stage 2:深度推理(4096 token预算):要求分类器输出详细的推理过程和拒绝理由
记忆系统
- ClaudeCode核心记忆文件是MEMORY.md,限定200行、25KB
- 核心设计决策:只记偏好,不记代码
- 记录失败经验也要记录成功经验
- 时间类要明确到具体的时间点,年月日
上下文管理
所有用户信息都要保留!
| 段落 | 内容 | 重要程度 |
|---|---|---|
| Primary Request and Intent | 用户的所有显式请求和意图 | 最高 |
| All User Messages | 所有非工具结果的用户消息 | 最高 |
| Current Work | 压缩前正在做的工作的详细描述 | 最高 |
| Errors and Fixes | 遇到的错误和修复方法 | 中高 |
| Key Technical Concepts | 讨论过的技术概念、框架、技术 | 高 |
| Files and Code Sections | 具体的文件名、代码片段、修改记录 | 高 |
| Pending Tasks | 明确被要求但尚未完成的任务 | 高 |
| Problem Solving | 解决问题的过程和正在进行的排查 | 中 |
| Optional Next Step | 下一步计划(必须与用户最近的请求直接相关) | 中 |

