dsh-pi-agent:通过 --mode rpc 把 pi 的循环跑进 DeepSeek Harness 的 Web UI
2026 年 8 月 23 日,Micheleww 在 earendil-works/pi 的 Discussions 中发布 dsh-pi-agent——这是第一个用 --mode rpc 无头接口把 pi 接入 DeepSeek Harness(DSH)的社区插件。DSH 是一个插件化的平台,自带 Web UI、以 SQLite 为底的持久化会话、hooks、presets 和审批链;pi 则是一个极简的编码 agent,只有一个约 300 token 的系统提示与四个工具(read / bash / edit / write)。这个插件夹在两者中间,让用户同时拿到两边的能力——DSH 的工程外壳套在 pi 的干净引擎之上。
集成方式是在 DSH 的 ctx.agents 上注册一个 AgentFactory。之后每个 DSH 会话都被一个无头的 pi --mode rpc 子进程通过 stdio 上的 JSONL 驱动——存在已保存会话时用 --session <file>,临时调用(如中途切换那条路径)则用 --no-session。在 create/resume 时,插件会从 DSH 的持久化事件日志中重建一个 pi 会话文件,并用 --session 启动子进程,让子进程一上来就拥有完整的会话历史——包括切换之前由 DSH 原生循环跑过的那几轮。命令一一对应:set_model 按会话设置,send(..., "next-turn") 映射到 pi 的 steer,abort 走同一条通道。Pi 自己的本地信任模型在这里生效——pi 的工具调用不走 DSH 的审批链,因为模型面对的是 pi,而不是 DSH。
插件还配了一行 SubagentProvider,把 tool-subagent 配上 provider: pi 之后,每次委托就会 spawn 一个全新的 pi -p <task> 子进程。这两行相互独立:可以跑「pi 主循环 + DSH 原生子 agent」,也可以跑「DSH 原生主循环 + pi 子 agent」,或者两者全开。Micheleww 在 DSH 0.1.x 上做了端到端验证:会话创建/恢复、流式输出、steering、子 agent 委托,以及 DSH 原生与 pi 之间的来回切换——全部通过。插件以 MIT 协议开源,仓库里写到 v0.2.0 的 npm 包已在计划中。
对 Piagent 的读者来说,dsh-pi-agent 是 --mode rpc 作为「集成面」最直观的外部背书——官方 subagent 示例扩展 正是沿着同一条通道驱动子 pi 进程的。它也颠覆了之前 pi2dsh 的集成方向(那时是「用包装器把 pi 装成 DeepSeek 风格的 harness」):现在反过来,让 DSH 把 pi 当作自己的 agent 循环运行,但保留 DSH 自带的 Web UI 与前端。两个项目合在一起,展示的是同一条 --mode rpc + 无头子进程的表面如何同时容纳两种方向。
source: https://github.com/earendil-works/pi/discussions/8508