dsh-tool-diagnose:DeepSeek Harness 实时诊断插件

在 DeepSeek Harness (DSH) 的开发与调试过程中,了解 Cordis 状态(如插件加载状态、工具可见性、凭证配置等)通常需要通过运行 Shell 命令或手动阅读配置文件来完成。传统的 Skill 更多扮演“症状表”的角色,告诉智能体该运行什么命令以及如何解析输出。dsh-tool-diagnose 插件改变了这一模式,它作为一个 Cordis 插件,在进程内部运行自省,直接暴露一个面向模型的 diagnose 工具。

前言

该插件旨在解决开发者需要实时、精确地检查 DSH 运行时状态的问题。不同于依赖外部脚本或 Skill,它通过 ctx.diagnostics 注册表提供了一套可扩展的检查机制。这使得智能体可以直接在对话中调用诊断工具,获取关于插件状态、工具可用性、凭证解析、审批策略、令牌压力以及子代理树的实时数据。

安装与启用

安装过程需要指定一个已存在的 Profile。DSH 默认提供 web 和 headless 两个 Profile,分别对应 Web UI 和命令行单次任务场景。

  1. Web UI 环境:
    dsh plugin --profile web add dsh-tool-diagnose
  1. Headless 终端环境:
    dsh plugin --profile headless add dsh-tool-diagnose

如果你的环境使用了自定义 Profile(即 $DSH_HOME/profiles/<name>/ 目录),请将 --profile 后的参数替换为你的 Profile 名称。

核心功能

插件的核心在于 ctx.diagnostics 服务。它包含一组检查项,部分检查项依赖于特定的服务(如 ctx.credentials、ctx.approval 等),如果依赖服务未挂载,插件会自动跳过相应的检查,而不会导致整体插件加载失败。

支持的检查项包括:

  • plugin-fiber-state:读取 ctx.loader.entries(),报告插件条目的启用/禁用状态以及 Fiber 阶段(pending/loading/active/failed/unloading)。
  • tool-visibility:调用 ctx.tools.get(name),确认工具是否在全局范围内注册或可见。
  • credential-resolution:通过 ctx.credentials.describe() 解析凭证引用(如 DEEPSEEK_API_KEY),仅返回配置/来源/可写状态,不泄露实际密钥。
  • approval-policy:报告部署的默认审批策略(”ask”/”never”),或特定会话的覆盖策略。
  • token-pressure:对比 totalTokens(请求/响应压力)与 surfaceTokens(固定启发式总数),用于排查压缩未运行的原因。
  • subagent-tree:扁平化会话的子代理树,报告数量、最大深度及无法解析的后代。

典型用法

在对话中调用 diagnose 工具时,可以提供一个可选的 target 参数,用于过滤检查范围。target 的具体含义取决于不同的检查项:

  • plugin-fiber-state:插件模块名称的子串。
  • tool-visibility:工具名称。
  • credential-resolution:凭证引用名称。
  • subagent-tree:会话 ID。

示例:检查 bash_run 工具为何未显示

智能体可以发起如下调用:

调用 diagnose 工具,target 为 "bash_run",以检查工具可见性。

系统将返回相关的检查结果,帮助定位是工具未注册、插件加载失败还是作用域限制。

扩展机制

dsh-tool-diagnose 的设计允许其他插件依赖并扩展其检查功能。检查项本质上是一个闭包在 ctx 上的工厂函数。第三方插件可以在其自身的 apply 函数中,通过 ctx.inject 依赖 diagnostics 服务并注册新的检查。

第三方插件扩展示例:

import type { Context } from '@deepseek-ai/cordis'

export const name = 'my-extra-diagnostics'

export function apply(ctx: Context) {
  ctx.inject(['diagnostics'], (ctx) => {
    ctx.diagnostics.registerCheck({
      id: 'my-check',
      description: '检查特定业务逻辑的状态',
      run(target) {
        // 在此处读取闭包捕获的 ctx
        // 不要将 ctx 作为 run() 的参数传入
        return []
      },
    })
  })
}

插件与 Skill 的区别

此插件是 Cordis 插件,而非 Skill。它运行在 DSH 进程内部,直接访问内存中的服务状态。与之相对的是,Skill 是可移植的、无构建步骤的脚本,通常用于告诉智能体运行外部命令。两者可以配合使用:Skill 可以指示智能体先调用 diagnose 工具,再根据工具返回的表格数据进行判断。

资源链接

  • GitHub 仓库: https://github.com/xu-kai-quan/dsh-tool-diagnose
  • NPM 包: dsh-tool-diagnose
  • 社区目录: https://www.skillhub.cn/plugins/xu-kai-quan/dsh-tool-diagnose
羽毛球分组比赛记分
小程序二维码

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

小夜