dsh-treekeeper
对账 DSH 任务账本与 OS 进程树,定位归属、检测泄漏并安全治理|Reconcile DSH task ledgers with OS process trees for attribution, leak detection, and safe governance.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 27, 2026
- Updated
- Aug 27, 2026
Introduction
dsh-treekeeper
DeepSeek Harness 的运行时进程树对账与治理插件。
状态:开发中(骨架)。 纯函数核心(归属算法、泄漏启发式)已测试;宿主联调未完成,见下方「现状」。
问题
DSH 的任务账本(jobs 注册表、子代理谱系)记录了后台任务和子代理,但不含操作系统进程信息:一个后台 bash 或子代理在系统里留下了哪些进程、是否泄漏、归谁所有,账本不回答,也没有现成工具回答。
做什么
- 进程树归属:周期采样本机进程表,沿祖先链归到 harness 根进程;无法归入的进入「未归属桶」;
- 泄漏启发式:相同命令行 ≥N 份、父进程已死的存活进程、归属插件但超长存活的子进程;
- 账本对照:
jobs注册表(跨会话)与 OS 进程做指示性关联(JobSnapshot不含 pid,关联按命令行匹配,结果标注为指示性); - 插件审计:命令行含
node_modules/<pkg>/的进程归因到来源插件; - 树杀:
taskkill /T前做创建时间预检(防 pid 复用)、系统进程与自身进程树白名单拒绝、客户端二次确认,杀后复查。
现状
已实现:
- 采样器(Windows CIM;失败时降级
tasklist,降级时归属停用并明示); - 归属与泄漏启发式(纯函数,
node --test覆盖); - 宿主路由
/dsh-treekeeper/api(snapshot / jobs / subtree / history / kill / config); - 浏览器浮层面板(告警、未归属桶、任务账本、两步确认树杀)。
未验证 / 未完成:
- 宿主进程内 CIM 可用性、
jobs.list()真实签名、面板插槽——待宿主联调; - 子代理谱系解析(
@deepseek-ai/dsh-subagent动态解析已写,降级路径待测); - 未发布到 npm,未提交 awesome-dsh-plugin 收录。
安全模型
/api同源守卫(Fetch Metadata + Origin + loopback Host),变更动作仅 POST;- 树杀服务端三道闸:pid 复用预检、白名单/系统进程黑名单、杀后复查;动作写入本地历史文件;
- 只读采样 + 显式杀进程;不读会话正文,数据不出本机。
平台与边界
- Windows 优先;非 Windows 采样未实现;
- 绕过
ctx.subprocess直接创建的进程只能由 OS 层兜底可见; - 与 macOS/Linux:路线图。
License
MIT