核心文件索引
| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/index.ts | 150 | CLI 入口,参数解析,进程设置 |
cli/src/main.ts | 300 | 启动序列:配置加载 → 鉴权 → agent 初始化 |
cli/src/cli.ts | 250 | Commander.js 命令定义,flag 解析 |
cli/src/constants.ts | 200 | 全局常量:模型名称、超时、限制 |
| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/config/config.ts | 400 | 多源配置合并(flags > 环境变量 > 项目 > 用户 > 默认值) |
cli/src/config/schema.ts | 350 | 所有配置选项的 Zod schema |
cli/src/config/claudeMd.ts | 200 | CLAUDE.md 文件发现与解析(项目 → 用户 → 企业层级) |
cli/src/config/settings.ts | 250 | 设置持久化与 .claude/settings.json 管理 |
Agentic Loop
Section titled “Agentic Loop”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/agent/agent.ts | 500 | 核心 agent 类:管理对话循环生命周期 |
cli/src/agent/agentLoop.ts | 600 | async generator 循环:LLM 调用 → tool 分发 → 结果收集 → 重复 |
cli/src/agent/turn.ts | 400 | 单次 turn 处理:stream 处理、tool 提取、停止条件检查 |
cli/src/agent/stopConditions.ts | 200 | 停止条件评估:end_turn、max_tokens、tool_use、错误状态 |
cli/src/agent/costTracker.ts | 300 | token 计数、成本计算、预算执行 |
Tool 系统
Section titled “Tool 系统”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/tools/toolRegistry.ts | 350 | 中央 tool 注册表:注册、查找、schema 校验 |
cli/src/tools/toolExecutor.ts | 400 | tool 执行编排:permission 检查 → 执行 → 格式化结果 |
cli/src/tools/streamingToolExecutor.ts | 500 | streaming tool 执行器:解析部分 JSON,在 stream 结束前执行 |
cli/src/tools/toolDefinitions.ts | 300 | API 的 tool schema 定义(名称、描述、输入 schema) |
cli/src/tools/impl/readFile.ts | 250 | ReadFile tool:文件读取,带编码检测、行数限制 |
cli/src/tools/impl/writeFile.ts | 350 | WriteFile/Edit tool:文件写入,带 diff 生成、备份 |
cli/src/tools/impl/bash.ts | 600 | Bash tool:带 streaming 输出的 shell 命令执行 |
cli/src/tools/impl/glob.ts | 200 | Glob tool:遵循 gitignore 的文件模式匹配 |
cli/src/tools/impl/grep.ts | 250 | Grep tool:支持正则、上下文行的内容搜索 |
cli/src/tools/impl/webSearch.ts | 200 | WebSearch tool:网络搜索集成 |
cli/src/tools/impl/webFetch.ts | 250 | WebFetch tool:URL 抓取,带 HTML 转 markdown |
cli/src/tools/impl/todoWrite.ts | 200 | TodoWrite tool:结构化任务列表管理 |
cli/src/tools/impl/notebookEdit.ts | 300 | NotebookEdit tool:Jupyter notebook 单元格操作 |
Agent 协调
Section titled “Agent 协调”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/agent/fork.ts | 400 | Fork 机制:生成并行独立 sub-agent |
cli/src/agent/coordinator.ts | 500 | Coordinator 模式:任务规划、工作者管理、重新规划 |
cli/src/agent/team.ts | 450 | Team/Swarm 模式:同伴 agent、mailbox 通信 |
cli/src/agent/subAgent.ts | 300 | Sub-agent 工厂:创建带共享 context 前缀的子 agent |
cli/src/agent/worktree.ts | 250 | 用于 agent 隔离的 Git worktree 管理 |
cli/src/agent/mailbox.ts | 200 | team 通信的共享消息队列 |
Context 引擎
Section titled “Context 引擎”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/context/systemPrompt.ts | 500 | System prompt 组装:身份 + 能力 + 项目 context |
cli/src/context/promptCache.ts | 300 | prompt cache 优化:前缀排序、cache 断点放置 |
cli/src/context/compression.ts | 600 | 四层压缩管道:snip → microcompact → auto compact → 截断 |
cli/src/context/memory.ts | 350 | 内存系统:对话历史管理、消息格式化 |
cli/src/context/tokenCounter.ts | 200 | token 计数工具:cl100k 估算、预算追踪 |
Permission 与安全
Section titled “Permission 与安全”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/security/permissionManager.ts | 400 | permission 编排:检查 tool → 应用规则 → 提示用户 |
cli/src/security/bashSecurity.ts | 800 | Bash 27 层安全:AST 分析、语义检查、路径校验 |
cli/src/security/ruleEngine.ts | 350 | 规则匹配引擎:来自多源的基于模式的允许/拒绝规则 |
cli/src/security/pathValidator.ts | 250 | 路径校验:项目边界执行、符号链接解析 |
cli/src/security/threatDetector.ts | 300 | 威胁检测:混淆、注入、提权模式 |
Streaming 基础设施
Section titled “Streaming 基础设施”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/streaming/sseParser.ts | 300 | Server-Sent Events 解析器:原始字节 → 类型化 stream 事件 |
cli/src/streaming/apiStream.ts | 400 | API streaming 客户端:连接管理、重连、中止处理 |
cli/src/streaming/jsonParser.ts | 250 | 增量 JSON 解析器:部分 JSON → 完整值,用于提前 tool 执行 |
| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/ui/App.tsx | 400 | 根 Ink 组件:布局、主题、全局状态 |
cli/src/ui/MessageDisplay.tsx | 350 | 消息渲染:Markdown、代码块、tool 结果 |
cli/src/ui/ToolOutput.tsx | 250 | tool 执行显示:spinner、进度、结果格式化 |
cli/src/ui/PermissionPrompt.tsx | 200 | permission 对话框:tool 详情、允许/拒绝/始终选项 |
cli/src/ui/InputArea.tsx | 300 | 用户输入:多行编辑、历史、slash command |
MCP 集成
Section titled “MCP 集成”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/mcp/mcpClient.ts | 400 | MCP 客户端:连接生命周期、tool 发现、请求路由 |
cli/src/mcp/mcpToolAdapter.ts | 250 | 将 MCP tool schema 适配为 Claude Code 的内部 tool 格式 |
cli/src/mcp/mcpConfig.ts | 200 | MCP 服务器配置:发现、连接设置 |
Hook 与扩展
Section titled “Hook 与扩展”| 路径 | 约行数 | 职责 |
|---|---|---|
cli/src/hooks/hookRunner.ts | 300 | hook 执行引擎:事件匹配、脚本执行、超时管理 |
cli/src/hooks/hookConfig.ts | 200 | 从 .claude/hooks.json 加载 hook 配置 |
cli/src/plugins/pluginLoader.ts | 250 | plugin 发现与加载:动态导入、注册 |
| 模块 | 列出文件数 | 约总行数 | 占核心比例 |
|---|---|---|---|
| 入口与启动 | 4 | 900 | 3% |
| 配置 | 4 | 1,200 | 5% |
| Agentic Loop | 5 | 2,000 | 8% |
| Tool 系统 | 13 | 4,200 | 16% |
| Agent 协调 | 6 | 2,100 | 8% |
| Context 引擎 | 5 | 1,950 | 7% |
| Permission 与安全 | 5 | 2,100 | 8% |
| Streaming | 3 | 950 | 4% |
| UI 层 | 5 | 1,500 | 6% |
| MCP | 3 | 850 | 3% |
| Hook 与扩展 | 3 | 750 | 3% |
| 合计(前 56 个文件) | 56 | ~18,500 | 约占 512K 的 4% |