DeepSeek Harness 插件介绍:dsh-workspace-intelligence

前言

在 DeepSeek Harness (DSH) 的开发实践中,智能体有时需要在未获取文件内容、未定位光标的情况下,仅通过符号名称查找代码结构(如类名、函数名)。传统的 LSP 工具(如 goToDefinition)通常依赖上下文。dsh-workspace-intelligence 解决了这一需求,它为 DSH 提供了一个独立的 workspace_symbol 工具,允许 agent 利用标准 LSP 的 workspace/symbol 请求进行确定性搜索。

插件定位

dsh-workspace-intelligence 是一个独立的 DSH/Cordis 插件。
它专注于确定性 LSP 工作区符号搜索。插件不修改 DeepSeek Harness 核心代码,也不直接调用 ctx.lsp,而是通过公开的 ctx.fs、ctx.subprocess 和 ctx.tools 上下文与 LSP 通信。它兼容 SymbolInformation[]、WorkspaceSymbol[]、URI-only location、null 和空数组等多种返回格式,确保行为可预测。

安装与启用

插件默认处于禁用状态,因为 Language Server 的启动命令必须由部署方指定。

  1. 安装插件
    使用官方安装命令添加插件到指定 Profile。
    dsh plugin --profile <name> add dsh-workspace-intelligence
  1. 安装依赖环境
    安装 Node.js(要求 ^22.19.0 或 >=24)以及至少一个支持 stdio LSP 的语言服务器(示例)。
    pnpm add -g pyright typescript typescript-language-server
  1. 配置 Language Server
    部署方需在 Profile 的 cordis.patch.yml 中配置语言服务器。根据操作系统执行以下步骤:

    • Windows
      运行 pnpm root -g 获取全局目录。将 examples/windows/cordis.patch.yml 合并到 Profile 配置中。将 C:/pnpm-global-root 替换为实际输出路径(注意将分隔符改为 /)。保留 node + JS 绝对路径,不要使用 .cmd shim;ctx.subprocess 不经过 shell。

    • macOS/Linux
      将 examples/macos-linux/cordis.patch.yml 合并到 Profile 的 cordis.patch.yml。模板直接从 PATH 启动语言服务器。

    • 验证配置
      合并完成后,检查合成结果以确保配置正确。

    dsh --profile <name> --dump-config

使用方法

调用该工具时,模型只需传递一个必填参数。

{ "query": "SessionManager" }
  • 参数限制:空白 query 会被拒绝。模型不能选择 provider、命令、workspace 或 timeout。
  • 返回内容:结果包含符号名、可读的 kind、canonical URI、可选的 range 以及 containerName。

配置说明

servers 配置项必填,且至少包含一项。Server ID 会按字典序排序,因此对象插入顺序不影响行为。

配置项 默认值 说明
command 必填 executable 的绝对路径或由 ctx.subprocess 解析的命令名
args [] 直接传入的 argv,不经过 shell
env {} 子进程环境变量增量
initializationOptions null LSP 初始化参数
configuration null workspace/configuration 返回值
maxMessageBytes 16000000 单条 LSP 消息上限
maxStderrBytes 1000000 stderr 诊断尾部上限
shutdownTimeoutMs 5000 优雅关闭等待时间
killGraceMs 2000 进程树终止等待时间
maxResults 100 merge 和去重后保留的符号数
maxResultChars 16000 完整模型输出字符预算,最小 256
timeoutMs 60000 交给 DSH timeout policy 的工具超时元数据

行为与限制

  • 并发与排序:查询会 fan-out 到全部已配置的 server;同一 server 内串行。结果按 exact match、prefix match、其他结果、server id 和原始顺序稳定排序。
  • 去重规则:去重 key 为 name + kind + URI + optional range。排序后的第一项保留。
  • 错误处理:任一 provider 成功(包括空结果)即返回成功;失败和不支持的 provider 只计数。全部不支持时报 WORKSPACE_SYMBOL_UNSUPPORTED,存在失败且无成功结果时报 WORKSPACE_SYMBOL_PROVIDER_FAILED。
  • 取消策略:caller 取消会发送 best-effort $/cancelRequest,并原样拒绝,不会变成 partial success。
  • 进程管理:每个 canonical workspace/server 惰性复用一个进程。卸载时先移除工具,再执行 shutdown、exit 和 process-tree 终止。
  • 不支持的功能:不提供 grep fallback、document symbols、call hierarchy、embedding、raw JSON-RPC 或 cursor-based LSP 操作。

结语

dsh-workspace-intelligence 提供了一个确定性、无上下文依赖的符号搜索能力。它是 DSH 生态中“一切皆插件”理念的体现。该插件遵循 MIT 许可证,适合需要在 Agent 层面进行代码结构查询的开发场景。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜