Files
deepseek-harness/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.zh.md
T

2.1 KiB
Raw Blame History

Agent Note: 在工具调用中用系统应用打开文件

Status: implemented

English | 中文

Problem

聊天工具行把整行摘要当作点击目标,点击后打开右侧 details 面板,并带有整行悬停背景。对文件系统工具而言,有用的动作是用操作系统默认应用打开所涉文件,而不是在侧栏里查看原始工具载荷。

Decision

文件工具的路径摘要(read/write/edit 参数中的 path 或 file_path)渲染为悬停下划线链接并使用 pointer 光标。点击路径会经 WorkspacesService.openPath 调用 host.openPath,相对路径相对会话 cwd 解析。带文件链接的行关闭参数展开(左侧图标不可点);工具行(含 bash 与 todo 注册)去掉整行点击、整行悬停底色,以及点击打开 details 的手势。details 面板及其 inject 面仍保留供程序化选择;工具行不再驱动它们。

host.openPath 是特权一元 RPC,仅接受来自回环、同源浏览器请求(与 host.pickDirectory 相同的载体守卫)。平台适配器不经 shell 打开:macOS 为 open,Windows 为 PowerShell Invoke-Item,Linux 为 xdg-open。打开器可在测试中注入。仅含 URL 的 read 参数(web_fetch)不是文件链接。

Alternatives considered

  • 保留整行点击打开 details,另加文件入口 — 否决;产品要求用文件链接替换整行手势。
  • 在应用内预览文件 — 否决;要求是操作系统默认应用。
  • 复用 host.pickDirectory 的超时豁免 — 不必要;打开路径的交接在常规一元截止时间内即可完成。

Consequences

点击工具行中的文件路径会在宿主上打开该路径。非文件工具行是惰性摘要(行内已有的展开开关仍保留)。远程或非回环客户端无法调用 host.openPath。

Risks

  • 没有 xdg-open 的 Linux 宿主会使 RPC 失败;聊天行保持静默,宿主返回 internal 错误。
  • 没有会话 cwd 时相对路径会原样转发,可能在宿主侧失败。