agent 的环境管家:工具链台账(node/pnpm/git/gh/ffmpeg/浏览器)、缓存与临时目录扫描 + 白名单安全一键清理、机器规则(AGENTS.md)编辑,全在 Web GUI 设置面板。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:guo6x/dsh-housekeeper
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English · DeepSeek Harness 插件
管住 agent 的脏手:工具链台账、两阶段缓存清理、机器规则(AGENTS.md)随时改,全在 Web GUI 设置面板里完成。零运行时依赖,一条命令安装。
- 📋 工具链台账 —— 自动探测 node/pnpm/git/gh/ffmpeg/Edge/Chrome 的位置与版本,装了什么一目了然
- 🗑️ 诚实缓存清理 —— 扫描 agent 留下的
.tmp与缓存目录:大小/文件数/修改时间、4000 文件截断标记、30 天未动高亮、点行展开内容预览;先生成计划,再确认删除 - 🛡️ 白名单保护 —— 只允许删「项目
.tmp」与「缓存根直接子目录」;..路径逃逸、符号链接逃逸、系统目录一律拒绝,删除前先 realpath 校验 - 📝 机器规则编辑 + 保命 —— 直接读写
~/.dsh/AGENTS.md,每次保存自动备份上一版,一键恢复;保存即实时生效 - 🌍 可配置 —— 项目/缓存扫描根目录按平台默认(Windows:
D:\github/D:\environment\cache),面板里可改,环境变量可覆盖 - 🤖 agent 工具 ——
housekeeper_report(台账+磁盘占用报告)、housekeeper_plan(只审阅)与housekeeper_clean(一次性 token 执行)
安装——复制、粘贴、验收
# 从 GitHub 直装——当前唯一受支持的发布渠道:
dsh plugin --profile web add github:guo6x/dsh-housekeeper
如果 dsh web 正在运行,重启它,再打开 设置 → 插件 → 环境管家。看到“工具链台账”区块,就说明安装完成。
要求:DSH web profile、Node ≥ 22。插件不需要账号、API key 或额外服务。
从本地 checkout 开发?在仓库目录执行 dsh plugin --profile web add .。仓库已提交 lib/ 构建产物,所以 GitHub 安装不会跑构建脚本。
60 秒完成一次安全验收
这段流程不会删除文件,也不会写入机器规则。
- 打开 设置 → 插件 → 环境管家。
- 查看自动发现的工具链与缓存候选项;点一行先预览内容。
- 先不要勾选任何目录。这样已经在不改动机器的前提下验收了台账和候选列表。
想用对话完成同样的无副作用验收,直接粘贴:
运行
housekeeper_report,总结探测到的工具链和最大的缓存候选项。不要生成清理计划、删除文件或修改机器规则。
真的准备清理时,再只勾选你认识的临时目录,点 生成清理计划。先阅读批准/拒绝的路径;在你明确使用该计划的一次性确认动作前,删除仍然不可能发生。
agent 也走同一条受审阅的路径:先要求 housekeeper_report,查看 housekeeper_plan,再决定是否把返回 token 交给 housekeeper_clean。
如果面板没有出现
- 确认插件安装在 web profile:
dsh plugin --profile web list dsh-housekeeper。 - 安装后必须重启
dsh web;仅刷新浏览器不会加载新的宿主代码。 - 确认 Node 为 22 或更新版本。台账不依赖 Edge、Chrome 或云端凭据。
安全模型
- 全部路由仅接受回环地址(非 127.0.0.1/::1 一律 403)
- 清理白名单(满足全部条件才允许删除):
- 路径位于
<项目根>\<仓库>\ .tmp\之下,或<缓存根>\的直接子目录 - 规范化后不越过白名单根(拒绝
..) realpath后仍落在白名单根内(拒绝符号链接逃逸)- 白名单根自身与仓库目录自身不可删
- 路径位于
- 两阶段确认:先生成仅保存在内存中的清理计划;确认 token 5 分钟后失效、只能用一次,执行时再次走白名单与 realpath 校验
- 规则文件只读写
$DSH_HOME/AGENTS.md单文件,路径不可参数化 - 无遥测、无网络外呼
原理
GUI 设置页 ──fetch──▶ /housekeeper/state|clean/plan→clean|rules(仅回环)──▶ 宿主插件
├─ 探测:候选路径 + PATH 查找 + 版本
├─ 扫描:按规则走查目录,统计大小(4000 文件上限)
├─ 清理:白名单 + realpath 生成计划 → 一次性确认 token → 再校验后 rm
└─ 规则:读写 $DSH_HOME/AGENTS.md(64KB 上限)
开发
pnpm install
pnpm test # 构建、安全回归套件、发布包内容检查
MIT 协议。问题与想法请提 issue。
链接
同类插件
yjh051108/dsh-routing-suite★ 6995
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3667
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 325
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 208
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
lire1131/dsh-undo-savepoint★ 167
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 158
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。