Skip to content

Releases

dsh-task-dispatch 0.6.3

Choose a tag to compare

@vinson1101 vinson1101 released this 12 Nov 13:50

修复:MCP 适配层没有随包分发

按推荐方式(release tarball)安装时,插件目录里没有 mcp/,因此
codex mcp add 只能指向源码仓库的绝对路径——仓库改名或移动后这条路径就断了
(本机已实际发生过一次)。

0.6.3 起:

  • package.json 的 files 包含 mcp,适配层随包分发
  • 新增 bin:dsh-task-dispatch-mcp → ./mcp/index.mjs
  • 适配层与插件同版本、同目录,升级插件即升级适配层

升级后要做的一步

把 Codex 的 MCP 路径改成已安装的插件目录,不再依赖仓库位置:

codex mcp remove dsh
codex mcp add dsh -- node ~/.dsh/profiles/desktop/node_modules/dsh-task-dispatch/mcp/index.mjs

(如果用的是别的 profile,把 desktop 换成对应名字。)

另外修正一处文档错误

之前 README 写「git 直装会带上 mcp/ 和 test/」——实测不成立:
files 对 git 依赖同样生效,git 直装和 tarball 一样都不带 test/。
现在 files 已包含 mcp,两种方式都会带上适配层。

仍无完成回传

取结果仍需主动查 dsh_result / dsh_wait;notify 只是 webhook 台账。

dsh-task-dispatch 0.6.2

Choose a tag to compare

@vinson1101 vinson1101 released this 11 Nov 03:54

0.6.1 之后的三处收尾修正。

修复

项 之前 现在
Content-Type 校验 前缀匹配,application/jsonp 也能通过这一层 精确匹配媒体类型(忽略 ; charset= 参数),jsonp → 415
令牌文件权限 只有新建文件才设 600;已存在的 644 文件不会被纠正 启动时检测,权限宽于 600 就自动 chmod 600 并打警告
文档 中英文 README 安装命令仍指向 0.6.0,token 默认值写作「无」 更新到 0.6.2;token 默认值改为「自动生成」

Content-Type 那处是加固,不是已验证的认证绕过——它位于认证之后,且需要持有有效令牌。

升级提醒(重要)

升级插件后,请同步更新并重启 MCP 适配层。 适配层需要读取与中继相同的 $DSH_HOME/relay/token;旧版适配层不会发送令牌,升级后调用会直接 401。Codex 会为每个新会话重新拉起适配层,重启一个 Codex 会话即可。

dsh plugin --profile desktop add https://github.com/vinson1101/dsh-task-dispatch/releases/download/v0.6.2/dsh-task-dispatch-0.6.2.tgz

装完重启 DSH。

dsh-task-dispatch 0.6.1 — security fix

Choose a tag to compare

@vinson1101 vinson1101 released this 11 Nov 03:27

安全修复(必须升级)

0.6.0 及更早版本在未配置 token 时完全放行,且不校验 Origin / Host:本机任意进程都能读取任务记录、向 Agent 派活;在特定浏览器条件下,恶意网页也可能尝试访问。

0.6.1 改为:

修复 行为
默认强制认证 首次启动自动生成 32 字节令牌,写入 $DSH_HOME/relay/token(权限 600),重启复用;除 /health 外都要求 Authorization: Bearer <token>
Host 校验 必须是 127.0.0.1 / localhost / [::1],否则 403 —— 挡 DNS rebinding
Origin 校验 带 Origin 且非本机来源 → 403 —— 挡恶意网页
Content-Type 校验 POST 必须是 application/json,否则 415 —— 挡简单表单 CSRF
关闭认证需显式声明 只有 allowAnonymous: true 才放行,并打警告日志

升级方式

dsh plugin --profile desktop add https://github.com/vinson1101/dsh-task-dispatch/releases/download/v0.6.1/dsh-task-dispatch-0.6.1.tgz

装完重启 DSH。之后所有请求要带令牌:

curl -H "Authorization: Bearer $(cat ~/.dsh/relay/token)" http://127.0.0.1:7391/tasks

MCP 适配层会自动读取同一个令牌文件,无需额外配置。

说明

  • 如果你之前手工配置过 token,行为不变
  • 如果之前依赖"无认证"的调用方,升级后会拿到 401
  • 发现者未确认是否已被利用;建议升级后检查 $DSH_HOME/relay/tasks/ 里有没有不属于自己的任务

dsh-task-dispatch 0.6.0

Choose a tag to compare

@vinson1101 vinson1101 released this 08 Nov 10:58

按工作空间给真实 DSH 会话派活,并把任务和结果留在可查的台账里。零依赖。

Dispatch work to a real DSH session by workspace path, with a persistent task ledger you can query later. Zero dependencies.

这个仓库里有两个包

包 位置 作用 版本
dsh-task-dispatch 仓库根目录 DSH 插件本体,装在 DSH 里 0.6.0
dsh-task-dispatch-mcp mcp/ MCP 适配层,给 Codex 等客户端 0.4.0

装插件

dsh plugin --profile desktop add https://github.com/vinson1101/dsh-task-dispatch/releases/download/v0.6.0/dsh-task-dispatch-0.6.0.tgz

重启 DSH 后:

curl -s http://127.0.0.1:7391/health

接 Codex

codex mcp add dsh -- node /绝对路径/dsh-task-dispatch/mcp/index.mjs

得到 7 个工具:dsh_send / dsh_ask / dsh_result / dsh_wait / dsh_tasks / dsh_sessions / dsh_workspaces。

已知限制(重要)

  • 没有完成回传:任务结束后不会主动通知调用方。取结果必须查 dsh_result 或等 dsh_wait。
  • notify 只是投递台账,webhook 返回 200 不代表对方已处理。
  • 只监听 127.0.0.1,非回环地址会被拒绝启动。

要求

  • DSH >= 0.2.2-rc.1
  • Node >= 18