Back to home@xswt442-cmd

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
GitHub repo

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