入门09:功能包全景
前面我们深入学了核心机制。现在快速扫一眼所有功能包,了解每个包是干啥的——就像看一个项目的 package.json 里的 dependencies 列表,知道每个包有什么用。
1. 功能包总览
2. 输入输出类(让 AI 能"动手")
Shell 执行
| 包 | 干啥的 |
|---|
packages/shell/shell/ | 定义"执行命令"这个能力 |
packages/shell/shell-bash/ | 真正执行 bash 命令 |
packages/shell/shell-pwsh/ | 执行 PowerShell 命令 |
用前端话理解:就像你在终端里敲 npm install,AI 也能敲 ls -la、node test.js。
文件系统
| 包 | 干啥的 |
|---|
packages/fs/fs/ | 定义"文件操作"这个能力 |
packages/fs/fs-local/ | 操作本地文件 |
packages/fs/fs-e2b/ | 操作云端沙箱里的文件 |
用前端话理解:就像 fs.readFile、fs.writeFile,但 AI 可以自己决定读哪个文件、写什么内容。
Web 搜索
| 包 | 干啥的 |
|---|
packages/web/web/ | 定义"上网搜索"这个能力 |
packages/web/web-fetch-http/ | 抓取网页内容 |
packages/web/web-search-deepseek/ | DeepSeek 搜索 |
packages/web/web-search-exa/ | Exa 搜索 |
packages/web/web-search-perplexity/ | Perplexity 搜索 |
用前端话理解:就像你在浏览器里搜百度/谷歌,AI 也能搜,而且能选不同的搜索引擎。
终端
| 包 | 干啥的 |
|---|
packages/terminal/terminal/ | 定义"持久化终端"这个能力 |
packages/terminal/terminal-bash/ | 真正打开 bash 终端 |
packages/terminal/tool-terminal/ | AI 能用的终端工具 |
用前端话理解:就像你在 VSCode 里开了个终端窗口,可以一直用。AI 也能开一个,发命令、读输出、关掉。
子进程
| 包 | 干啥的 |
|---|
packages/subprocess/subprocess/ | 定义"创建子进程"这个能力 |
packages/subprocess/subprocess-local/ | 创建本地子进程 |
用前端话理解:就像 child_process.spawn(),但会自动过滤敏感环境变量。
3. 智能层(让 AI 更聪明)
子 Agent
| 包 | 干啥的 |
|---|
packages/subagent/subagent/ | 定义"创建子 Agent"这个能力 |
packages/subagent/subagent-spawn/ | 在当前进程创建 |
packages/subagent/subagent-fork/ | 分叉子进程 |
packages/subagent/subagent-acp/ | 通过 ACP 连接外部 |
用前端话理解:就像 Web Worker——主线程太忙了,开个 Worker 去干活。
计划模式
| 包 | 干啥的 |
|---|
packages/plan/plan-mode/ | 让 AI 先做计划再执行 |
用前端话理解:就像写代码之前先画架构图,AI 先出计划,你确认了再执行。
工作流
| 包 | 干啥的 |
|---|
packages/workflow/workflow/ | 定义"工作流引擎" |
packages/workflow/workflow-worker-thread/ | 在工作线程里跑工作流 |
packages/workflow/tool-workflow/ | AI 能调用的工作流工具 |
用前端话理解:就像 CI/CD 的 pipeline——定义好步骤,按顺序自动执行。
技能系统
| 包 | 干啥的 |
|---|
packages/skill/skill/ | 定义"技能注册表" |
packages/skill/skill-filesystem/ | 从文件系统发现技能 |
packages/skill/tool-skill/ | AI 能用的技能工具 |
用前端话理解:就像 VSCode 的扩展市场——需要什么技能就装什么。
目标管理
| 包 | 干啥的 |
|---|
packages/goal/goal/ | 管理 Agent 的会话目标 |
用前端话理解:就像 Todo List——创建目标、激活、暂停、完成。
4. 数据层(存数据)
存储枢纽
| 包 | 干啥的 |
|---|
packages/storage/storage/ | 统一的存储接口,支持插件式后端 |
用前端话理解:就像 localStorage 的抽象层——你想用 IndexedDB 还是 SQLite 都行,接口一样。
会话压缩
| 包 | 干啥的 |
|---|
packages/compaction/compaction/ | 压缩引擎定义 |
packages/compaction/compaction-basic/ | 用 AI 压缩历史 |
packages/compaction/compaction-tool-result-pruner/ | 删掉多余的工具体输出 |
溢出存储
| 包 | 干啥的 |
|---|
packages/spill/spill/ | 把过大的内容存到外部 |
packages/spill/spill-local/ | 本地溢出存储 |
packages/spill/spill-policy/ | 什么情况下溢出 |
用前端话理解:就像文件太大传不上去,先压缩再上传。
附件
| 包 | 干啥的 |
|---|
packages/attachment/attachment/ | 存图片等附件 |
packages/attachment/attachment-local/ | 存在本地 |
5. 集成层(对接外部系统)
MCP 客户端
| 包 | 干啥的 |
|---|
packages/mcp/mcp-client/ | 连接外部 MCP 服务器 |
用前端话理解:就像用 npm 装个包,就多了一个 API 可用。
ACP 协议
| 包 | 干啥的 |
|---|
packages/acp/acp/ | 标准化 Agent 通信协议 |
SDK 协议
| 包 | 干啥的 |
|---|
packages/sdk/protocol/ | JSON-RPC 协议定义 |
packages/sdk/client/ | TypeScript 客户端 |
packages/sdk/server/ | JSON-RPC 服务器 |
Git 钩子
| 包 | 干啥的 |
|---|
packages/hooks/hook-protocol/ | 钩子协议定义 |
packages/hooks/hooks-claude-code/ | Claude Code 集成 |
packages/hooks/hooks-codex/ | Codex 集成 |
用前端话理解:就像 husky——在 git commit 之前自动触发 AI 做代码审查。
6. 管理类
后台任务
| 包 | 干啥的 |
|---|
packages/jobs/jobs/ | 后台任务管理 |
packages/jobs/jobs-local/ | 本地实现 |
packages/jobs/tool-jobs/ | AI 能用的任务工具 |
用前端话理解:就像 setTimeout + setInterval,但更强大。
定时器
| 包 | 干啥的 |
|---|
packages/schedule/schedule/ | 定时提醒 |
设置与凭证
| 包 | 干啥的 |
|---|
packages/settings/settings/ | 用户配置管理 |
packages/credentials/credentials/ | API Key 等敏感信息管理 |
7. 交互与安全
交互层
| 包 | 干啥的 |
|---|
packages/interaction/user-approval/ | 用户审批(敏感操作需确认) |
packages/interaction/user-questions/ | AI 向用户提问 |
packages/interaction/commands/ | 命令系统 |
packages/interaction/permission-presets/ | 权限预设 |
守卫
| 包 | 干啥的 |
|---|
packages/guard/timeout-policy/ | 超时控制 |
packages/guard/repeat-tool-reminder/ | 防止 AI 反复调同一个工具 |
自修改
| 包 | 干啥的 |
|---|
packages/extensions/tool-cordis/ | AI 可以在运行时修改自己的插件 |
packages/extensions/cordis-host-runner/ | 宿主端插件注册 |
packages/extensions/cordis-client-runner/ | 客户端插件注册 |
用前端话理解:就像代码可以自己修改自己——有点"元编程"的味道。
8. 基础设施
| 包 | 干啥的 |
|---|
packages/util/ | 工具函数合集(原子写文件、品牌类型、超时等) |
packages/typert/ | 类型安全的远程调用框架 |
packages/lsp/lsp/ | 语言服务器协议(代码补全、跳转定义) |
packages/preset/agent-presets/ | Agent 预设配置 |
packages/code-runtime/ | 让 AI 写的代码能跑起来 |
packages/e2b/ | 云端沙箱(E2B) |
packages/test-support/ | 测试工具(Mock LLM、快照测试等) |
packages/runtime-diagnostics/ | 运行时健康检查 |
要点总结
- 约 50+ 个包,覆盖了 Agent 运行所需的各个方面
- 每个包都遵循"服务定义 + 实现"模式,通过 Cordis 插件系统组合
- 输入输出:Shell、文件、Web、终端、子进程(让 AI 能动手)
- 智能能力:子 Agent、计划、工作流、技能、目标(让 AI 更聪明)
- 数据存储:压缩、查询、溢出、附件(怎么存数据)
- 外部集成:MCP、ACP、SDK、钩子(怎么对接外部)
- 管理工具:任务、定时器、设置、凭证(怎么管理)
- 交互安全:审批、守卫、自修改(怎么保证安全)
进阶阅读