Expose save_image across direct model, MCP gateway, DeepSeek Harness and remote Agents (written on the remote host via chunked reads), and show the image MCP tool list in settings.
160 lines
4.9 KiB
TypeScript
160 lines
4.9 KiB
TypeScript
export type BuiltinModelToolSummary = {
|
|
name: string
|
|
displayName: string
|
|
description: string
|
|
access: 'read' | 'write'
|
|
group: 'filesystem' | 'browser' | 'web' | 'programming' | 'image'
|
|
}
|
|
|
|
export const builtinModelTools = [
|
|
{
|
|
name: 'generate_image',
|
|
displayName: 'Generate or edit image',
|
|
description: 'Generate or edit an image with an enabled image model and save it in this conversation.',
|
|
access: 'write',
|
|
group: 'image'
|
|
},
|
|
{
|
|
name: 'save_image',
|
|
displayName: 'Save image to file',
|
|
description: 'Save a generated or uploaded image from this conversation to a local PNG, JPEG or WebP file.',
|
|
access: 'write',
|
|
group: 'image'
|
|
},
|
|
{
|
|
name: 'workspace_rg',
|
|
displayName: '搜索工作区',
|
|
description:
|
|
'使用内置 ripgrep 原生参数搜索或列出文件;Ask 限于工作区只读搜索,Execute 使用当前账号权限,长输出可分页续读。',
|
|
access: 'read',
|
|
group: 'filesystem'
|
|
},
|
|
{
|
|
name: 'workspace_read_text',
|
|
displayName: '读取工作区文本',
|
|
description: '按行分页读取当前工作区内的 UTF-8 文本文件。',
|
|
access: 'read',
|
|
group: 'filesystem'
|
|
},
|
|
{
|
|
name: 'workspace_apply_patch',
|
|
displayName: '应用工作区补丁',
|
|
description:
|
|
'使用 apply_patch 格式在当前工作区内新增、修改或删除 UTF-8 文本文件。',
|
|
access: 'write',
|
|
group: 'filesystem'
|
|
},
|
|
{
|
|
name: 'browser_navigate',
|
|
displayName: '浏览器导航',
|
|
description: '在隔离浏览器中打开当前设备可连接的 HTTP 或 HTTPS 页面。',
|
|
access: 'write',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_snapshot',
|
|
displayName: '读取浏览器快照',
|
|
description: '读取当前页面的有界可访问性快照;可编辑值会被隐藏。',
|
|
access: 'read',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_click',
|
|
displayName: '点击浏览器元素',
|
|
description: '点击最近一次浏览器快照中的可见元素。',
|
|
access: 'write',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_type',
|
|
displayName: '输入浏览器文本',
|
|
description: '向可编辑页面元素(包括密码框)输入文本;不支持上传文件。',
|
|
access: 'write',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_select',
|
|
displayName: '选择浏览器选项',
|
|
description: '在最近一次快照标识的原生选择控件中选择值。',
|
|
access: 'write',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_back',
|
|
displayName: '浏览器返回',
|
|
description: '在隔离浏览器的历史记录中返回上一页。',
|
|
access: 'write',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'browser_screenshot',
|
|
displayName: '截取浏览器页面',
|
|
description: '截取当前可见页面区域、约 200KB 的有界 JPEG 图片。',
|
|
access: 'read',
|
|
group: 'browser'
|
|
},
|
|
{
|
|
name: 'web_search',
|
|
displayName: '联网搜索',
|
|
description:
|
|
'通过 Exa 托管 MCP 搜索公开网页,查询词会发送给第三方服务。',
|
|
access: 'read',
|
|
group: 'web'
|
|
},
|
|
{
|
|
name: 'web_fetch',
|
|
displayName: '读取网页',
|
|
description:
|
|
'通过 Exa 托管 MCP 读取公开 HTTP 或 HTTPS 网页的有界正文。',
|
|
access: 'read',
|
|
group: 'web'
|
|
},
|
|
{
|
|
name: 'process_execute',
|
|
displayName: '进程执行',
|
|
description:
|
|
'使用当前用户权限运行 PowerShell、Bash 或 Sh 命令,可指定工作目录;长输出保留完整内容并支持分页续读。',
|
|
access: 'write',
|
|
group: 'programming'
|
|
},
|
|
{
|
|
name: 'output_read',
|
|
displayName: '续读工具输出',
|
|
description: '按 cursor 分页读取当前会话已保留的搜索、进程或 Subagent 输出;会话释放后失效。',
|
|
access: 'read',
|
|
group: 'programming'
|
|
},
|
|
{
|
|
name: 'subagent_delegate',
|
|
displayName: '编程 Subagent',
|
|
description:
|
|
'将聚焦任务委派给同一模型连接,继承当前工作模式和工作区;长输出可分页续读。',
|
|
access: 'read',
|
|
group: 'programming'
|
|
}
|
|
] as const satisfies readonly BuiltinModelToolSummary[]
|
|
|
|
export const builtinModelToolGroups = [
|
|
{
|
|
id: 'filesystem',
|
|
name: '工作区文件',
|
|
description:
|
|
'搜索和分页读取工作区文件;Execute 模式还可通过补丁新增、修改或删除文件。',
|
|
tools: builtinModelTools.filter((tool) => tool.group === 'filesystem')
|
|
},
|
|
{
|
|
id: 'web',
|
|
name: '联网搜索',
|
|
description:
|
|
'启用后,直连模型可在 Ask 和 Execute 模式搜索并读取公开网页。',
|
|
tools: builtinModelTools.filter((tool) => tool.group === 'web')
|
|
},
|
|
{
|
|
id: 'programming',
|
|
name: '开发工具',
|
|
description:
|
|
'直连模型可运行项目命令,或将聚焦的开发任务委派给继承当前模式的 Subagent。',
|
|
tools: builtinModelTools.filter((tool) => tool.group === 'programming')
|
|
}
|
|
] as const
|