Repository navigation
Releases
dsh-task-dispatch 0.6.3
修复: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
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
安全修复(必须升级)
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/tasksMCP 适配层会自动读取同一个令牌文件,无需额外配置。
说明
- 如果你之前手工配置过
token,行为不变 - 如果之前依赖"无认证"的调用方,升级后会拿到 401
- 发现者未确认是否已被利用;建议升级后检查
$DSH_HOME/relay/tasks/里有没有不属于自己的任务
dsh-task-dispatch 0.6.0
按工作空间给真实 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