白饭钓竿(dsh-rice-on-a-stick):用 MCP 与内置工具远程驱动 DSH

前言

DeepSeek Harness(dsh)把会话、任务与工作区收拢在一个宿主进程里,日常多在 Web 或 Desktop 界面里操作。若你希望另一套 Agent(例如独立 MCP 客户端、编排脚本或其他 IDE 里的模型)也能新建会话、发消息、排队与分叉任务,而不反复切回 dsh 界面,就需要一条稳定、契约清晰的控制面。

社区里常见做法是自建 MCP Server、手写 HTTP 封装,能力与 dsh 版本容易脱节。下面介绍的 白饭钓竿(npm 包名 dsh-rice-on-a-stick,GitHub:Leawind/dsh-rice-on-a-stick)是 dsh 官方插件形态的实现:把操作真实 dsh 会话等能力同时暴露为 MCP 工具和 dsh 内置工具,由维护者 Leawind 发布,在 SkillHub 目录中归类为工作流。插件当前 GitHub 星标为 0;包版本见仓库标签(资料中 package.json 为 0.1.0-rc.2)。

这是什么

一句话:这是一个 dsh 插件,将控制 DeepSeek Harness 的能力暴露给外部 MCP 客户端,并可选注册为 dsh 会话可调用的原生工具。

架构上,MCP 客户端经 Streamable HTTP 连到插件内的 MCP 服务;插件再调用 dsh 宿主服务(会话等)。同一 dsh 实例里的会话也可通过内置工具调用插件,无需经过 HTTP(与访问令牌无关)。

环境要求:dsh 0.2.1-rc.2 及以上。完整设置面板与会话能力需要 web 或 desktop 版 dsh;MCP 客户端需支持 Streamable HTTP,仅支持 stdio 的客户端需自行桥接。

核心功能

以下均来自项目 README,按能力分节说明。

会话与任务

  • 操作真实会话:新建、发送、排队、分叉、归档与恢复、切换模型等。
  • 新建会话时,调用方 Agent 须显式指定模型与预设。
  • 续接已有会话时沿用该会话原先的模型。
  • 可配置模型白名单,限制客户端只能使用列表中的模型。

图片附件

session_prompt / session_submit 可附带图片(宿主机可读的本地路径或 http(s) URL)。字节由插件在 dsh 进程内读取,经官方附件服务准入后随消息投递;图片数据不进工具参数字面、不进模型上下文。取回使用 attachment_read:默认只返回元数据与宿主机本地路径;多模态 MCP 客户端可选内联为图片块。

通用桥(只读)

长尾宿主能力通过桥接覆盖只读面:

  • bridge_describe:给出全部宿主 Remote 端点的渐进式目录(按 namespace 分组、只读标记、单端点契约)。
  • bridge_call:按端点引用调用只读白名单内的方法;数据与校验走宿主 Typert 体系(与 Web UI 同一契约)。变更类操作不可桥(设计说明见仓库 docs/bridge-design.zh.md)。

同步与异步

调用方可以同步等待结果,也可以提交后异步再取。等待超时不会打断 dsh 内正在运行的任务;需要停止时可随时中止。

审批接管

插件创建的会话里出现的审批请求,默认由调用方 Agent 回答,界面不再重复弹出;也可改为界面优先,或仅展示、不接管。

dsh 自用工具

上述能力会注册为 dsh 内部工具,当前 dsh 会话可直接调用;不需要时可在设置中关闭。

安全默认

默认只监听本机,可配置访问令牌。README 明确提示:

  • 未启用认证时,任何能访问对应端口的本机进程都可以驱动 dsh。
  • 插件会对调用者暴露本机代码执行能力,默认监听 127.0.0.1。
  • 启用 dsh 内部自用工具后,本实例的任意会话都能调用这些工具(不经 HTTP,也与令牌无关)。

安装与启用

通过 npm 向 web profile 安装(命令来自 README):

dsh plugin --profile web add dsh-rice-on-a-stick

卸载:

dsh plugin --profile web remove dsh-rice-on-a-stick

README 还提供源码目录链接安装与 npm run dev 实时构建,适合参与开发或跟踪 main 分支;生产环境一般以 npm 包为准。

安装后,在 dsh 图形界面的设置面板中可启用 HTTP/MCP 并调整端口、主机与令牌。也可直接编辑 profile 目录下的 cordis.patch.yml(字段与默认值见仓库 src/core/config.ts):

- id: dsh-rice-on-a-stick
  config:
      http: true
      port: 5642
      host: 127.0.0.1
      # authToken: 'your-secret-token'

接入 MCP 客户端

MCP Server 默认地址:

http://127.0.0.1:5642/mcp

传输方式为 Streamable HTTP。在插件设置中开启认证后,客户端需配置 Bearer 凭证。

典型接入步骤可以概括为:

  1. 安装并启用插件,确认 http 为 true 且端口未被占用。
  2. 在 MCP 客户端中添加上述 URL 的 HTTP MCP 服务;若启用 authToken,在客户端填写对应 Bearer token。
  3. 通过 MCP 工具列表使用会话相关工具(如新建/发送会话、attachment_read、只读桥 bridge_describe / bridge_call 等);新建会话时按 README 要求带上模型与预设。

具体工具名与参数以客户端连上服务后的 schema 为准,与插件注册表一致。

适用场景与注意

适合谁

  • 需要在 Cursor、自研 Agent 或其他 MCP 客户端里遥控本机 dsh 会话与任务的工作流场景。
  • 希望 dsh 会话与外部 Agent 共用同一套会话操作语义,而不是维护两套脚本。
  • 需要只读探查 dsh 宿主 Remote 能力、又不想为每个端点单独写适配时,可使用桥接只读面。

使用前请确认

  • 插件以当前 dsh 进程权限运行,会向调用方暴露与 dsh 相当的本地能力;安装前请阅读 MIT 许可 与源码,仅在可信环境启用。
  • 生产或共享机器上应开启 authToken,并保持 host 为 127.0.0.1,除非明确理解扩大监听面的风险。
  • 项目致谢初始代码来自 chushixixin/dsh-harness-mcp-server(MIT),现为独立仓库,升级与问题跟踪以 Leawind 仓库为准。

结尾

白饭钓竿把「驱动 dsh」收敛成标准 dsh 插件:对外是 MCP,对内是可选内置工具,并区分会话操作、附件、只读桥与安全默认值。若你在编排多 Agent 工作流,可从 npm 安装、配置本机 MCP 端点起步。

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

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

Xiaoye