工具系统
按当前工具注册表梳理内置工具、条件工具、桌面自动化、MCP 工具和权限边界。
工具从哪里来
CrabCode 的工具池由运行时装配,不是写死在文档里。当前源码里可以确认的来源有五类:
| 来源 | 说明 |
|---|---|
| 内置工具 | 文件读写、编辑、Shell、Web、任务、计划、技能、记忆、终端捕获等基础能力 |
| 条件工具 | 由 feature flag、环境变量、平台或运行模式启用,例如 LSP、工作树、桌面自动化、cron、PowerShell |
| MCP 工具 | 外部 MCP server 暴露的 tools、resources、prompts |
| 插件/技能 | 插件可以注册 MCP server、slash command、hooks、skills;技能由模型按任务触发 |
| GUI/App Server 能力 | 桌面端通过 App Server 暴露浏览器、cron、插件、账号、记忆、本地模型等方法 |
工具池最终还会经过 allowlist、denylist、权限模式、沙盒、MCP 配置和 --bare 等规则过滤。
默认内置工具
| 工具 | 用途 |
|---|---|
Agent / TaskOutput | 启动子智能体、读取子任务输出 |
Bash | 执行 shell 命令;受权限、沙盒和 allow/deny 规则约束 |
Read | 读取文件 |
Edit | 精确修改已有文件 |
Write | 新建或覆盖文件 |
NotebookEdit | 修改 notebook 单元 |
WebFetch | 抓取 URL 内容 |
WebSearch | 搜索互联网内容 |
TodoWrite | 维护当前任务列表 |
ExitPlanMode / EnterPlanMode | 在计划模式和执行模式之间切换 |
AskUserQuestion | 在需要人类输入时向用户提问 |
Skill | 发现并调用本地技能 |
TaskStop | 停止后台任务或子任务 |
ListMcpResources / ReadMcpResource | 列出并读取 MCP resources |
如果运行时没有启用内嵌搜索实现,还会补上 Glob 与 Grep 作为文件搜索工具。
常见条件工具
| 工具或工具组 | 启用条件 | 用途 |
|---|---|---|
ToolSearch | 可用工具搜索开关启用 | 在大量工具中搜索匹配工具 |
TerminalCapture | 运行环境支持终端捕获 | 读取当前终端输出 |
LSP | ENABLE_LSP_TOOL 等开关启用 | 走语言服务做符号、诊断、跳转类能力 |
EnterWorktree / ExitWorktree | 工作树模式启用 | 进入或退出隔离 worktree |
SendMessage / ListPeers / TeamCreate / TeamDelete | 协同或 agent swarm 能力启用 | 多智能体或协作消息 |
CronCreate / CronDelete / CronList | cron 工具开关启用 | 在模型工具层创建、删除、列出自动化任务 |
RemoteTrigger | 远程触发能力启用 | 触发远程工作流 |
Monitor / Brief | 对应运行模式可用 | 监控状态或切换简洁输出 |
SendUserFile / PushNotification / SubscribePR | 对应产品能力可用 | 发送文件、推送通知、订阅 PR |
PowerShell | Windows/PowerShell 能力启用 | 执行 PowerShell 命令 |
CtxInspect / Snip | 调试或上下文工具启用 | 检查上下文、截取片段 |
某些内部、测试或灰度工具不会在普通用户文档中承诺稳定 API。
桌面自动化工具
当桌面自动化能力可用时,工具池会加入一组 GUI 操作工具:
| 工具 | 用途 |
|---|---|
ComputerObserve | 观察当前桌面/应用状态 |
ComputerPermissions | 检查或请求桌面自动化权限 |
ComputerMove | 移动鼠标 |
ComputerClick / ComputerDoubleClick | 点击或双击 |
ComputerDrag | 拖拽 |
ComputerScroll | 滚动 |
ComputerKey / ComputerHotkey | 按键或组合键 |
ComputerTypeText | 输入文本 |
这组工具适合本地应用操作、GUI 验证和需要真实窗口状态的任务。它们通常比纯 shell 更敏感,因此审批和系统权限更重要。
--bare 极简模式
--bare 会跳过 hooks、LSP、插件同步、自动记忆等额外能力,并把工具池压到最小。普通会话通常只保留 Bash、Read、Edit;REPL 模式会替换为对应的 REPL 工具。这个模式适合受控脚本、最小权限排障或你只想让 CrabCode 做非常窄的文件/命令操作时使用。
MCP 工具
MCP server 可以动态暴露 tools 和 resources。CrabCode 会把 MCP 工具合并进工具池,再按名称冲突、权限和配置规则过滤。管理命令见 MCP 和 CLI 参考。
常见操作:
crabcode mcp list
crabcode mcp add <name> <command> [args...]
crabcode mcp add-json <name> '{"command":"node","args":["server.js"]}'
crabcode mcp get <name>
crabcode mcp remove <name>crabcode mcp list
crabcode mcp add <name> <command> [args...]
crabcode mcp add-json <name> '{"command":"node","args":["server.js"]}'
crabcode mcp get <name>
crabcode mcp remove <name>权限边界
工具执行同时受以下规则约束:
| 规则 | 作用 |
|---|---|
--permission-mode / /permissions | 决定默认审批策略和允许/拒绝规则 |
--allowedTools / --disallowedTools | 启动时设置工具白名单或黑名单 |
--tools | 显式指定可用工具集,"" 可禁用全部工具,default 使用默认集合 |
| Sandbox | 限制写盘、网络和命令执行边界 |
| MCP 配置 | 控制外部 server 是否加载、工具是否可见 |
| 插件目录 | 决定本次会话能加载哪些插件/技能 |