dsh-install-radar:追踪每个 DSH 会话在本机装了什么

前言

在 DeepSeek Harness(DSH)里跑 Agent,一轮对话里往往会连续执行 pip install、npm install、git clone、下载模型或拉起带独立 profile 的浏览器。装完之后,磁盘上多出来的目录往往很难和「哪次会话、哪条命令」一一对上;只看某一个目录的大小,也说不清是临时垃圾还是可以长期保留的依赖。

dsh-install-radar(仓库 cccc11f3/dsh-install-radar)面向这个问题:把「会话命令证据」「监视根目录快照对比」「按时间窗口扫盘」三条线索叠在一起,在侧栏和 Agent 工具里给出体积、路径、创建时间、用途说明,以及清理时的风险分级。下面按安装、界面、工具和 CLI 说明怎么用。

这是什么

插件全名 dsh-install-radar,简介为 Session install radar for DeepSeek Harness(package.json 中进一步说明:按会话记录 Python / npm / git / winget 等安装,并附带「为什么装」「删掉会怎样」)。维护者 GitHub 用户 cccc11f3(package.json 作者字段为 YG),许可证 MIT,当前包版本 1.0.0,要求 Node >= 20,DSH 引擎 >= 0.2.0-rc.1。分类上属于带 客户端 能力的 DSH 插件(侧栏面板 + cordis.patch.yml 注入)。

社区目录页:skillhub.cn/plugins/cccc11f3/dsh-install-radar。目录与 GitHub 由社区维护,不等同于 DeepSeek / 幻方官方应用商店。

核心思路:三路证据

README 用表格说明三路来源各自能回答什么、边界在哪里。大意如下:

来源 作用 局限
会话日志归因($DSH_HOME/sessions/**/session.v*.jsonl.zstd 里的 tool/call) 哪次会话、哪轮、哪条命令装了什么,落在哪、多大、干什么用 只见命令痕迹;$变量 目标、远程脚本内部行为看不到
目录快照对比(基线 vs 现在) 监视根下新出现的条目、明显变大的目录 需要先立基线;监视根外看不见
时间戳扫描(「今天」等视图) 近 N 天哪些目录在吃盘,含临时目录与其它工具写入 只看时间窗口,不判断「该不该存在」

漏掉任一路,就容易出现「磁盘少了几十 GB,报告却显得没事」的错位。插件还在 v0.12 及之后版本里补了进程命令行审计、历史侧写(例如把遗留 cdp-* 目录与会话命令按时间窗口对表)、用途兜底(读 package.json / METADATA / README 等签名,不发网络请求)等能力;细节以仓库 README 为准。

侧栏面板

插件注册在 sidebar.panellist 与 main(key = install-radar),order: -20,排在官方面板行之前。数据经宿主路由 /api/install-radar/*(如 report、refresh、sessions、baseline、diff、recent、open)由 ctx.connection.rpc.call 拉取。

顶层两个页签:

  • 会话安装(蓝):子页签包括按会话、按类型、按时间;默认折叠,点开看条目;每条可有「为什么装」、卸载后果(安全 / 需注意 / 危险等等级)。
  • 非会话新增(橙):时间戳扫描(1 / 3 / 7 天)、谁在拉起 CDP、基线以来新条目;支持增长趋势(14 天柱状图,走 /api/install-radar/trend)、批量勾选清理、定时自动清理(配置在 $DSH_HOME/install-radar/config.json 的 autoClean,默认关)。

行尾常见操作:复制路径、打开文件夹、卸载命令(仅复制,不执行)。一键清理对白名单路径做二段确认;小于 50 MB 或标记为 danger 的项不提供一键删。

Agent 工具

宿主侧主要工具(名称来自 README):

  • install_radar_report — 完整报告,并写入 $DSH_HOME/install-radar/report.md
  • install_radar_sessions — 会话命令证据,可按关键词过滤
  • install_radar_recent — 近 N 天按归属目录聚合
  • install_radar_baseline — 立基线(建议在大量安装前跑一次)
  • install_radar_diff — 基线以来新增或明显变大
  • install_radar_audit — 会话目录索引与消失审计

此外还有 install_radar_procs(CDP 相关进程)、install_radar_history(历史侧写)、install_radar_repro(复现线索)、install_radar_autoclean(定时清理开关与预览)等,见 README「v0.12 变更」与各小节。

安装与启用

README 给出的标准装法(需重启一次)示例为通过 link: 指向本机插件目录:

dsh plugin --profile desktop add link:"E:\DeepSeek Harness工作区\dsh-install-radar"

请将引号内路径换成你本机 clone 或解压后的 dsh-install-radar 目录;不要用未在文档中出现的 github:owner/repo 拼写代替上述流程,除非你的 DSH 版本文档明确支持且你已核对行为一致。

README 还记录了另一种手工落地:在 profiles/desktop/node_modules/dsh-install-radar 建指向插件目录的 junction,并在 profiles/desktop/package.json 里写 dependencies["dsh-install-radar"] = "link:…",同时把 dsh-install-radar 加入 dsh.profile.bundles。回滚时删除 junction,用备份 package.json.bak-radar-* 覆盖并重启。

依赖对齐时,README 示例在关闭 DSH 后用 profile 目录下的 pnpm 执行 install(路径因机器而异,见 README「彻底对齐」代码块)。

安装前建议阅读仓库源码与 MIT 许可证;插件以当前 DSH 进程权限读盘、删临时文件,清理操作不可逆,生产机请先 dryRun 或小范围试删。

典型用法

在 DSH 里

  1. 首次或监视根变化后,让宿主自动重立基线,或调用 install_radar_baseline / 侧栏等价操作(报告里可能出现 baselineAuto: first-run | roots-changed)。
  2. 一轮会话结束后看 会话安装 → 按会话,核对体积与「为什么装」。
  3. 磁盘异常增长时打开 非会话新增 → 今天 / 近 3 天,再对照 install_radar_diff 与 install_radar_recent。
  4. 清理前看风险色标(不影响 / 需注意 / 不要删);批量删除服务端一次最多 50 条,删完写入 clean-log.jsonl。

不进 DSH 的 CLI

仓库提供 bin/radar.mjs,可用 Node 直接跑:

node bin/radar.mjs roots
node bin/radar.mjs baseline
node bin/radar.mjs scan
node bin/radar.mjs sessions
node bin/radar.mjs recent --days 3
node bin/radar.mjs diff
node bin/radar.mjs report --out report.md

通用参数包括 --home <DSH_HOME>、--extra <目录>(可重复)、--limit、--days、--json。

自测

node test/host-smoke.mjs
node test/client-smoke.mjs

host-smoke 会真扫盘;client-smoke 测客户端 bundle 与插槽注册。

适用场景与注意

适合:长期在单机上用 DSH 做自动化开发、装依赖、跑浏览器 CDP;需要把「哪次对话」和「哪块磁盘」对上,并区分会话内安装与机子上后来长出来的垃圾。

注意:

  • 监视范围由默认监视根决定(README 写明已纳入 C:\Windows\Temp、%LOCALAPPDATA% 等,修复旧版漏检);仍可通过 CLI --extra 扩展。
  • 会话日志只能还原到命令层,变量展开与脚本内部逻辑需结合 diff / recent / 进程审计推断。
  • 清理仅允许白名单临时目录等路径;danger 级(如 .pnpm-store、site-packages、浏览器 User Data 等)不应一键删。
  • 定时自动清理默认关闭,开启后每 90 秒采样时只删标记为 safe 且超过设定天数的临时项。

结尾

dsh-install-radar 把 DSH 会话里的安装行为落成可核对、可分级清理的清单,并用侧栏把「会话装的」和「非会话新增的」分开呈现。需要安装步骤与最新功能列表时,以 GitHub README 为准:

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

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

小夜