Skip to main content
Glama

智慧协作体系(zhihui-xiezuo)

这是**「智慧协作体系」的第一个模块 —— DSH 会话桥**,后续会继续补充其它模块。

让外部 Agent 接入一个已经在运行的本机 DeepSeek Harness (DSH) Web 实例:列会话、只读核对、绑定会话、向指定会话投递任务,并取回该任务所属回合的最终回复。

提供 CLI 与 MCP(stdio) 双入口,Windows / macOS / Linux 可用。


这个包解决什么问题

你在浏览器里开着 dsh web,某个会话里有一场正在进行的对话。你想让另一个 Agent(Codex、Claude Desktop、Cursor、任何 MCP 客户端)把一条任务投进那个会话,并且拿到这一回合的回复。

DSH 官方没有提供这个能力:

  • 官方 @deepseek-ai/dsh-acp 是 ACP 协议 + stdio,自己拉起一个全新的 DSH 进程,只能操作它自己创建/恢复的会话。它碰不到你网页上正开着的那个会话——那个会话由 dsh web 进程持有跨进程写锁,ACP 去 session/resume 会撞上 SessionAlreadyOwnedError。

  • 官方没有任何 MCP 形式的会话控制服务端(packages/mcp/ 下只有 mcp-client 和 mcp-resources,方向都是「DSH 消费外部 MCP」,不是对外暴露)。

本包补的就是这个缺口:接入已运行实例、操作人正在看的那个会话、人在环。

dsh-acp(官方)

zhihui-xiezuo(本包)

协议

ACP v1

私有 HTTP 信封 RPC + WebSocket

传输

stdio

HTTP + WS,仅本机环回

启动模型

客户端 spawn 新 DSH 进程

连接已存在的 dsh web

目标会话

自己创建/恢复的

任意已存在会话,含网页正开着的

向已有会话发消息

❌

✅

取回回复正文

❌(只返回 stopReason)

✅(wait 返回正文 + turn/seq)

鉴权

无(受信控制器)

启动令牌 → Cookie

取消 / 审批

✅ session/cancel、权限应答

❌ 刻意不订阅审批通道

典型用途

进程外 subagent、测试运行器

把任务投给人正在看的会话

两者不重叠,各自独占不同场景。


Related MCP server: MCP DSH Nexus

安装

需要 Node.js ≥ 22。

npm install -g zhihui-xiezuo

或者从源码:

git clone https://github.com/chongming1994/zhihui-xiezuo.git && cd zhihui-xiezuo
npm install
npm link          # 可选,装出全局命令

安装后有两个可执行入口:

  • zhihui-xiezuo —— 命令行

  • zhihui-xiezuo-mcp —— MCP stdio 服务端

Windows 说明

npm install -g / npm link 会自动生成 .cmd shim,无需手动处理。也可以不装全局,直接用 node <包内路径>\bin\zhihui-xiezuo.js 调用。


快速开始

1. 拿到 DSH 的启动令牌

启动 dsh web 时终端会打印一个带 token 参数的 URL,把那个 token 复制出来。

2. 认证

# 交互式输入(不回显,不落命令行历史)
zhihui-xiezuo auth

# 或从受保护文件读取
zhihui-xiezuo auth --token-file ~/.config/dsh-token

凭据写入状态目录(见下),令牌本身不保存。DSH 重启后令牌会变,需要重新 auth。

3. 检查连接

zhihui-xiezuo check --json

只调 session/list,不激活任何会话。

4. 列会话、绑定、投递、取回复

zhihui-xiezuo sessions                       # 列会话摘要(不含聊天正文)
zhihui-xiezuo inspect <会话ID>                # 只读核对单个会话
zhihui-xiezuo bind <会话ID>                   # 显式绑定目标
zhihui-xiezuo send --file ./task.md          # 投递任务
zhihui-xiezuo wait <requestId> --timeout 600000   # 取回该回合回复

CLI 命令

命令

作用

副作用

auth

启动令牌换凭据

写本地凭据

check

检查连接与接口兼容性

无(不激活会话)

sessions

列会话摘要

无

inspect <ID>

只读核对单会话

无

bind <ID>

校验并保存绑定

写本地配置

send --file <任务文件>

向绑定会话投递

有

wait <requestId>

等待并取回该回合结果

无

status <requestId>

查本地记录 + 只读核对

无

create

创建执行会话

有(需 --authorize)

rename

重命名会话

有(需 --authorize)

workorder <子命令>

协作工作单状态机

读写本地

完整选项与退出码见 zhihui-xiezuo --help。

退出码(给调用方用的稳定契约):

0 成功   1 失败   2 用法错误   3 认证/信任失败   4 目标不存在
5 本地等待超时   6 关联不确定   7 提交结果未知

MCP 接入

MCP 服务端是 stdio 传输,暴露 10 个工具。

通用配置

{
  "mcpServers": {
    "zhihui-xiezuo": {
      "command": "node",
      "args": ["/绝对路径/zhihui-xiezuo/bin/zhihui-xiezuo-mcp.js"],
      "env": {
        "ZHIHUI_XIEZUO_URL": "http://127.0.0.1:3080"
      }
    }
  }
}

全局安装后也可以直接用命令名:

{
  "mcpServers": {
    "zhihui-xiezuo": {
      "command": "zhihui-xiezuo-mcp"
    }
  }
}

Windows 上如果用命令名,注意某些客户端不走 shell、找不到 .cmd;此时请写 "command": "node" + 绝对路径的 args。

工具清单

只读

工具

作用

dsh_check

检查连接、认证与接口兼容性

dsh_sessions

列会话摘要

dsh_inspect

只读核对单个会话

dsh_titles

只读列会话标题

dsh_status

查本地请求记录

写入(需要显式 confirm: true,否则直接拒绝、不执行)

工具

作用

dsh_bind

绑定目标会话

dsh_send

向会话投递任务

dsh_create

创建会话

dsh_rename

重命名会话

长任务

工具

作用

dsh_wait

等待并取回该回合回复

写操作要求 confirm: true 是刻意的安全边界:本工具绝不推断「当前网页会话」,也绝不代替用户授权。


状态目录

平台

位置

Windows

%LOCALAPPDATA%\zhihui-xiezuo

macOS / Linux

~/.local/share/zhihui-xiezuo

可用环境变量覆盖,优先级:

--home 参数  →  ZHIHUI_XIEZUO_HOME  →  DSH_BRIDGE_HOME(旧变量,向后兼容)  →  平台默认

目录内含 config.json、credential.json(凭据)、requests/(请求账本)、workorders/、locks/。


安全边界

本工具在设计上刻意收紧,使用前请知悉:

  • 仅本机环回:只接受 127.0.0.1 / localhost / ::1,非环回地址在发出任何网络请求之前就失败关闭。

  • 不跟随重定向:所有 /api 调用与令牌交换都用 redirect: 'manual',任何 3xx 一律显式拒绝,绝不把任务正文或凭据转发到别的地址。

  • 只发显式绑定的会话:绝不推断「当前网页会话」。目标必须显式指定或已绑定。

  • 不订阅审批通道:因此不可能自动批准任何请求。审批永远留给人。

  • 不提供 cancel / steer / approve / 改队列 / 改模型 / 改 preset。

  • 未知状态不自动重发:submission_unknown / result-unknown 只留账等人工核对,不重试。

  • 不读密钥:凭据只存在状态目录的 credential.json,不打印、不写入任务正文。


已知限制

  • 不能取消、不能批准:send 只支持 mode=queue,不提供 steer / cancel / approve。

  • 需要有一个跑着的 dsh web:本包是纯 HTTP 客户端,不自己拉起 DSH。

  • DSH 接口契约是 pre-stable:上游升级后需重新核对(check 会报告契约字段)。

  • Windows 上不做自动 ACL 收紧:chmod 在 Windows 只能切只读位,本包不自动改 ACL。若要限制令牌文件访问,请自行执行:

    icacls "C:\path\to\dsh-token" /inheritance:r /grant:r "%USERNAME%:R"

    或直接用交互式 auth(令牌不落文件,最省事)。


开发

npm install
npm test          # 139 项测试

源码结构:

src/
  cli.js             命令行入口、参数解析、命令分派
  mcp-server.js      MCP stdio 服务端(10 个工具)
  rpc.js             DSH HTTP 客户端(环回校验、令牌交换、redirect 拒绝)
  mux.js             WebSocket 会话事件流
  associate.js       回合归属关联(requestId → turn → reply)
  store.js           请求账本、文件锁、状态单调前进
  config.js          状态目录、配置、凭据、原子写
  secret-input.js    令牌输入(POSIX mode 校验 / Windows ACL 校验)
  workorder.js       协作工作单状态机
  errors.js          稳定错误码与退出码
  redact.js          输出脱敏

许可

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables inspection and control of a running OpenCode TUI session, including live pane capture, prompt injection, interrupting turns, and blocking waits for session state changes.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables permission-scoped MCP clients to interact with DeepSeek Harness Desktop over a local loopback HTTP bridge, including checking status, listing models/workspaces/sessions, reading bounded session history, and creating, sending, waiting for, or canceling chats. Access is restricted per bearer token and only exposes the tools and sessions granted to that token.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets Claude Code, Codex, or any MCP client drive DeepSeek Harness as a long-lived coding agent: starting and resuming conversations, dispatching tasks in the background, streaming live output and reasoning stats, interjecting or interrupting mid-turn, handling approval prompts, and collecting results later. Sessions persist by ID, so work survives process restarts and can be handed back to a DSH GUI when needed.
      1,309 npm
      16
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets an external MCP client drive a running DeepSeek Harness instance: list its sessions, create or continue a session in a chosen workspace with an instruction, and wait for the finished answer. It also carries the instance's questions and approval decisions back to the caller, so a delegated turn never deadlocks waiting for a human.
      650 npm
      MIT