dsh-session-inbox:用文件收件箱给 DSH 会话投递跨进程消息

前言

在 DeepSeek Harness(DSH)里跑会话时,常见需求是:另一个 agent、脚本或 CI 在会话外写好一条「用户话」,等目标会话空闲时再交给模型。DSH 自身有 session bridge 等同产品能力,Codex、Claude Code 也有各自会话间通道,但跨产品没有共享注册表和路由,外部进程无法直接唤醒别人的 DSH 会话。dsh-session-inbox 把交接落在文件系统:任何能写 ~/.dsh/inbox/ 的进程追加一行 JSON,挂载插件的宿主在目标会话活着且空闲时取走并注入。下面介绍它的定位、安装与用法。

这是什么

dsh-session-inbox 是社区插件,维护者为 SleepNap,在 SkillHub 等目录中归类为工作流。它给 DSH 会话提供文件-backed 收件箱:不依赖 socket、守护进程、握手或 MCP;一条消息对应 JSONL 里的一行,目标被关闭或重启后消息仍保留在磁盘上。

为什么需要它

各家 agent 在各自产品内可以互发消息,跨产品却没有共享的会话注册表与 agent 循环,因此无法唤醒「属于别的产品」的会话。文件系统是多进程都能访问的交集:投递写到磁盘,何时执行由会话所有者(DSH 插件)决定。

核心功能

  • 监听 ~/.dsh/inbox/<sessionId>.jsonl,在目标会话存活且空闲时将新行作为普通用户消息注入;会话前缀展示为 [inbox] 来自 <from> 的消息:。
  • 提供 CLI dsh-peer-inbox:向指定会话投递、查看各收件箱待处理条数、列出已有收件箱的会话 id。
  • 消费状态保存在 ~/.dsh/inbox/.state/,游标只前进不后退,避免多宿主重放。
  • 目标正在跑 agent 时不打断,消息留在文件;目标不存在则保留等待;坏行永久跳过;多条消息每轮串行消费一条。

安装与启用

桌面应用:设置 → 插件 → 添加插件 → 输入包名 dsh-session-inbox → 安装 → 重启宿主。

命令行(将 <profile> 换成你的 profile):

dsh plugin --profile <profile> add dsh-session-inbox

国内网络可在添加插件时切换中国大陆镜像源(registry.npmmirror.com);镜像同步可能有延迟,必要时可在 npmmirror 包页手动同步。

不经过 npm 时,README 还提供:

dsh plugin --profile <profile> add github:SleepNap/dsh-session-inbox
dsh plugin --profile <profile> add ./dsh-session-inbox
dsh plugin --profile <profile> add ./dsh-session-inbox-0.1.0.tgz

装完重启宿主。插件挂载时会打印 [dsh-session-inbox] watching …。

兼容性:engines.dsh 下限为 >=0.1.7-0,未设上界;需 Node.js >=20。许可证为 MIT。

典型用法

投递与查看(DSH 是否在运行都可以投递):

dsh-peer-inbox send --to session-<uuid> --text "..." --from claude-code
dsh-peer-inbox pending
dsh-peer-inbox list

也可直接向对应文件追加一行 JSON(行末必须有换行),to 须与文件名去掉 .jsonl 一致:

{"id":"<uuid>","ts":"<ISO-8601>","from":"<谁>","to":"<sessionId>","text":"<正文>"}

接收方在会话里会看到带 [inbox] 前缀的用户消息。

适用场景与注意

适合:脚本、CI、另一个 DSH 会话、Claude Code、Codex 等需要异步给某个 DSH 会话塞一条用户 turn,且能接受「空闲才注入」语义的场景。

边界与安全(README 原文强调):

  • 插件只服务挂载它的 DSH 宿主内的会话,推不进别的产品里的会话。
  • from 为自报字段,任何能写收件箱的进程都可冒充,不能用于授权。
  • 入队成功不等于模型已读;需要确认时应约定带 id 并回显 id。

插件以当前 DSH 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 LICENSE。DeepSeek Harness 社区插件目录(如 SkillHub 插件页)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在不动 socket 与 MCP 的前提下,用磁盘上的 JSONL 给 DSH 会话建立跨进程入口。详情与 issue 见 GitHub:SleepNap/dsh-session-inbox;目录介绍见 SkillHub。

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

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

小夜