OCOpenCowork
Get startedInstallChannelsAgentsCapabilitiesSkillsModelsPlatformsOpsReferenceHelp

工具系统

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 的注册顺序大致是:

  1. 基础任务与文件工具
  2. 搜索与 Shell 工具
  3. Widget / AskUser / Plan / Cron / Notify / Goal
  4. 动态目录刷新(skills / sub-agents)
  5. Team 工具
  6. Web Search 动态注册
  7. 应用插件工具动态注册
  8. MCP 工具运行时发现

工具分类 / Tool categories

1) 文件系统

  • Read
  • Write
  • Edit

2) 搜索

  • Glob
  • Grep

3) Shell

  • Bash

4) 计划与任务

  • EnterPlanMode
  • ExitPlanMode
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList

5) 子代理与团队

  • Task(统一子代理入口)
  • TeamCreate
  • SendMessage
  • TeamStatus
  • TeamDelete

6) 目标与审批/提问

  • get_goal
  • create_goal
  • update_goal
  • AskUserQuestion
  • Notify
  • visualize_show_widget

7) Cron

  • CronAdd
  • CronUpdate
  • CronRemove
  • CronList

8) Web / Browser

  • WebSearch
  • WebFetch
  • BrowserNavigate
  • BrowserGetContent
  • BrowserScreenshot
  • BrowserSnapshot
  • BrowserClick
  • BrowserType
  • BrowserScroll

9) App plugins

  • ImageGenerate
  • DesktopScreenshot
  • DesktopClick
  • DesktopType
  • DesktopScroll
  • DesktopWait

10) 消息平台插件

  • PluginSendMessage
  • PluginReplyMessage
  • PluginGetGroupMessages
  • PluginListGroups
  • PluginSummarizeGroup
  • PluginGetCurrentChatMessages
  • Feishu / Weixin 专属工具(如 FeishuSendImageWeixinSendFile

11) MCP

MCP 工具不是预先写死的,它们由已连接 server 的能力发现动态注入。

审批 / Approval

并不是所有工具都会无条件执行。高风险工具通常会:

  • 需要用户审批
  • 或者在 forceApproval 场景下由插件自动回复流程接管

常见需要审批的操作包括:

  • 文件写入 / 编辑
  • Shell 命令
  • 发消息到外部平台
  • 桌面点击 / 输入 / 滚动
  • Cron 创建或修改

动态目录 / Dynamic catalogs

SkillTask 并不是两个割裂的系统:

  • 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 不是“猜怎么做”,而是“拿工具去做”。

On this page