OpenCowork
核心概念

工具系统

OpenCowork 工具系统的架构与内置工具详解。

工具系统 / Tool System

工具系统让 Agent 能够与外部世界交互,位于 src/renderer/src/lib/tools/

ToolHandler 接口 / Interface

每个工具实现 ToolHandler 接口:

interface ToolHandler {
  // JSON Schema 工具定义(传给 LLM)
  definition: Tool

  // 执行工具,返回结果
  execute(input: unknown, ctx: ToolContext): Promise<ToolResultContent>

  // 可选:是否需要用户审批
  requiresApproval?(input: unknown, ctx: ToolContext): boolean
}

工具注册 / Registration

工具通过全局 toolRegistry 注册:

import { toolRegistry } from '@renderer/lib/agent/tool-registry'

toolRegistry.register(myTool)
toolRegistry.unregister('tool-name')

插件工具在插件启用/禁用时动态注册/注销。

内置工具 / Built-in Tools

文件系统

工具描述
Read读取文件内容,支持行范围
Write写入文件(覆盖)
Edit精确字符串替换编辑

搜索

工具描述
Glob文件名模式匹配
Grep内容正则搜索(基于 ripgrep)

Shell

工具描述
Bash执行 Shell 命令,支持超时

任务管理

工具描述
TaskCreate创建任务
TaskUpdate更新任务状态
TaskGet获取任务详情
TaskList列出所有任务

应用插件工具

工具描述
ImageGenerate根据提示词生成图片(1–4 张),需启用图像插件
DesktopScreenshot截取当前屏幕,属于隐藏的桌面控制插件能力
DesktopClick / DesktopType / DesktopScroll / DesktopWait桌面交互工具,和图像工具一起由应用插件层动态注册

其他

工具描述
AskUserQuestion向用户提问(支持选项)
Preview在侧边栏预览文件
Notify发送系统通知
Skill执行预定义技能/工作流
Plan 系列计划模式工具
Cron 系列定时任务工具

工具审批 / Approval

危险操作(如 Shell 命令、文件写入)会触发用户审批:

requiresApproval(input, ctx) {
  // forceApproval 模式下跳过审批(插件自动回复)
  if (ctx.forceApproval) return false;
  return true;
}

审批结果会缓存,相同操作不会重复询问。

On this page