工具系统
OpenCowork 工具注册、调用、审批和完整工具分类。
工具系统 / Tool System
工具系统是 OpenCowork 把“聊天”变成“执行”的关键。入口位于 src/renderer/src/lib/tools/,统一通过 toolRegistry 注册。
ToolHandler 结构 / ToolHandler shape
interface ToolHandler {
definition: Tool
execute(input: unknown, ctx: ToolContext): Promise<ToolResultContent>
requiresApproval?(input: unknown, ctx: ToolContext): boolean
}注册顺序 / Registration order
src/renderer/src/lib/tools/index.ts 的注册顺序大致是:
- 基础任务与文件工具
- 搜索与 Shell 工具
- Widget / AskUser / Plan / Cron / Notify / Goal
- 动态目录刷新(skills / sub-agents)
- Team 工具
- Web Search 动态注册
- 应用插件工具动态注册
- MCP 工具运行时发现
工具分类 / Tool categories
1) 文件系统
ReadWriteEdit
2) 搜索
GlobGrep
3) Shell
Bash
4) 计划与任务
EnterPlanModeExitPlanModeTaskCreateTaskGetTaskUpdateTaskList
5) 子代理与团队
Task(统一子代理入口)TeamCreateSendMessageTeamStatusTeamDelete
6) 目标与审批/提问
get_goalcreate_goalupdate_goalAskUserQuestionNotifyvisualize_show_widget
7) Cron
CronAddCronUpdateCronRemoveCronList
8) Web / Browser
WebSearchWebFetchBrowserNavigateBrowserGetContentBrowserScreenshotBrowserSnapshotBrowserClickBrowserTypeBrowserScroll
9) App plugins
ImageGenerateDesktopScreenshotDesktopClickDesktopTypeDesktopScrollDesktopWait
10) 消息平台插件
PluginSendMessagePluginReplyMessagePluginGetGroupMessagesPluginListGroupsPluginSummarizeGroupPluginGetCurrentChatMessages- Feishu / Weixin 专属工具(如
FeishuSendImage、WeixinSendFile)
11) MCP
MCP 工具不是预先写死的,它们由已连接 server 的能力发现动态注入。
审批 / Approval
并不是所有工具都会无条件执行。高风险工具通常会:
- 需要用户审批
- 或者在
forceApproval场景下由插件自动回复流程接管
常见需要审批的操作包括:
- 文件写入 / 编辑
- Shell 命令
- 发消息到外部平台
- 桌面点击 / 输入 / 滚动
- Cron 创建或修改
动态目录 / Dynamic catalogs
Skill 和 Task 并不是两个割裂的系统:
Skill从~/.agents/skills/加载Task从~/.open-cowork/agents/加载子代理定义
这意味着工具系统可以根据用户本地安装的内容动态扩展。
你在代码里会看到什么 / What to look for in code
toolRegistry.register(...)registerAllTools()registerImagePluginTools()/registerBrowserTool()/registerDesktopControlTools()refreshSkillTools()/refreshSubAgentTools()isWebSearchToolRegistered()
结论 / Conclusion
OpenCowork 的工具系统本质上是一个可注册、可动态扩展、带审批策略的能力总线。Agent 不是“猜怎么做”,而是“拿工具去做”。