这一章不是讲产品怎么用,而是讲研究者如何高效读懂这份快照:从哪开始找、用什么命令搜、如何追踪一个功能的完整链路。
面对这类大型源码快照,最有效的方法不是“顺读”,而是“从注册表和类型开始,按链路向实现钻”。对于本仓库,最重要的四个锚点是:
src/main.tsxsrc/commands.tssrc/tools.tssrc/QueryEngine.ts
flowchart TD
A[研究问题] --> B[找注册表 / 总入口]
B --> C[看类型定义与 schema]
C --> D[查 feature flag / isEnabled / availability]
D --> E[进入具体实现]
E --> F[回看状态层与服务层]
F --> G[形成结论]
G --> H[记录源码事实与边界]
不要一开始就钻进 src/commands/ 或 src/tools/ 的某个子目录。先看谁在注册、谁在过滤、谁在装配。
本仓库大量逻辑受类型和 schema 驱动。读 src/types/command.ts、src/Tool.ts、src/types/permissions.ts 的收益非常高。
看到一个功能时,马上搜索它有没有被 feature('...') 包住。否则你很容易把实验功能误当默认能力。
很多命令和技能不是 built-in,而是来自 plugin、bundled、skills、MCP。先确认来源,再解释行为。
先看:
然后确认顶层结构:
ls -la
find src -maxdepth 2 -type d | sort先看注册中心:
sed -n '1,220p' src/main.tsx
sed -n '1,220p' src/commands.ts
sed -n '1,220p' src/tools.ts然后统计 feature flag:
rg -n "feature\\('" src/main.tsx src/commands.ts src/tools.ts例子:想追 /plugin
sed -n '1,160p' src/commands/plugin/index.tsx
rg -n "name: 'plugin'|name: \"plugin\"" src/commands/plugin然后进入实现文件和相关 UI。
例子:想追 AgentTool
rg -n "export const AgentTool" src/tools/AgentTool
sed -n '1,260p' src/tools/AgentTool/AgentTool.tsx如果还想看整个工具面:
find src/tools -maxdepth 1 -mindepth 1 | wc -l
sed -n '1,260p' src/tools.tssed -n '1,200p' src/types/permissions.ts
sed -n '1,220p' src/utils/permissions/PermissionMode.ts
sed -n '1,260p' src/utils/permissions/permissionSetup.ts技能:
sed -n '1,220p' src/skills/loadSkillsDir.ts插件:
sed -n '1,220p' src/utils/plugins/loadPluginCommands.ts
sed -n '1,220p' src/types/plugin.tsMCP:
sed -n '1,220p' src/services/mcp/client.ts
sed -n '1,220p' src/services/mcp/config.tsLSP:
sed -n '1,220p' src/services/lsp/manager.tssed -n '1,220p' src/bridge/bridgeMain.ts
sed -n '1,220p' src/remote/RemoteSessionManager.ts| 主题 | 第一锚点 | 第二锚点 |
|---|---|---|
| 启动链路 | src/main.tsx |
src/replLauncher.tsx |
| 命令系统 | src/commands.ts |
src/types/command.ts |
| 工具系统 | src/tools.ts |
src/Tool.ts |
| 权限 | src/types/permissions.ts |
src/utils/permissions/permissionSetup.ts |
| UI/REPL | src/screens/REPL.tsx |
src/state/AppStateStore.ts |
| 多代理 | src/tools/AgentTool/AgentTool.tsx |
src/commands/tasks/index.ts |
| 插件/skills | src/skills/loadSkillsDir.ts |
src/utils/plugins/loadPluginCommands.ts |
| MCP | src/services/mcp/client.ts |
src/services/mcp/config.ts |
| Remote/Bridge | src/bridge/bridgeMain.ts |
src/remote/RemoteSessionManager.ts |
你会看到很多目录,以为功能已经启用,但实际上它可能受 feature gate 控制,或者根本不在当前命令/工具列表里。
命令是用户入口,工具是执行能力。这两个层级不能混看。
如果某个行为依赖远程服务、OAuth、IDE、remote worker,本仓库只能说明结构,不能单凭静态代码证明它“当前一定可运行”。
很多行为不是在单个命令文件里闭合,而是会更新 AppState、任务状态、权限上下文、MCP 客户端列表等。
如果你要写研究笔记、分享或报告,建议每个专题都按以下模板整理:
- 目标能力是什么。
- 它的入口文件是什么。
- 它是否受 feature flag 控制。
- 它依赖哪些状态或外部系统。
- 哪些内容能被源码确认,哪些只能推断。
对这类大型 agentic CLI 快照,最重要的研究能力不是“会不会读 TypeScript”,而是能不能迅速找到注册点、状态边界和 feature gate。只要这三件事做对,阅读成本会骤降。