按工作区登记临时脚本与日志,扫描清运可还原
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yuezhiye/dsh-closet该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令
查看扫描证据(共 5 处,展示前 5 条)
- 执行外部命令来自配置/变量lib/run.js:183
const child = spawn(command, cmdArgs, { - 执行外部命令固定命令lib/run.js:269
const killer = spawn('taskkill', ['/PID', String(pid), '/T', '/F'], { - 执行外部命令固定命令lib/git.js:64
execFile( - 执行外部命令固定命令lib/git.js:75
execFile( - 执行外部命令来自配置/变量lib/open.js:156
child = spawn(command, args, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-llm@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-settings给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 插件 · 收纳间:按工作区统一管理临时脚本与日志(登记 · 扫描 · 执行 · 清运 · 回收站 · 面板)
README
由 DeepSeek 最新模型翻译生成收纳间 dsh-closet
DSH(DeepSeek Harness)的临时脚本与日志管理器:按工作区登记脚本、只读扫描遗留物、一键清运进可还原回收站。
DSH 干活时会留下大量临时脚本和日志 —— fix-xxx.ps1、upgrade-xxx.ps1、restart-dsh.log、.bak…… 事后没人记得哪个还能用、哪个已经过期、哪个可以删。
收纳间就是给这些产物准备的一个抽屉:放进去的都记在册上,没放的会被扫出来问你,清掉的先进回收站,随时能捞回来。
三条铁律
1. 跟着工作区走:数据存在 <工作区>/.dsh-fix/,换工作区就是换一个抽屉,绝不往用户目录乱写。
2. 扫描永不删除:closet_scan 只列清单、给理由,一个字节都不动。
3. 清理只做移动:closet_clean 把文件移进 .dsh-fix/trash/<批次>/,附带 manifest.json 记录原路径,随时可还原;真正的删除只有「过期清理」一处入口,默认 30 天后才允许,且默认只做预演。
展开完整文档(README 剩余 1 节)
收纳间 dsh-closet
DSH(DeepSeek Harness)的临时脚本与日志管理器:按工作区登记脚本、只读扫描遗留物、一键清运进可还原回收站。
DSH 干活时会留下大量临时脚本和日志 —— fix-xxx.ps1、upgrade-xxx.ps1、restart-dsh.log、.bak…… 事后没人记得哪个还能用、哪个已经过期、哪个可以删。
收纳间就是给这些产物准备的一个抽屉:放进去的都记在册上,没放的会被扫出来问你,清掉的先进回收站,随时能捞回来。
三条铁律
1. 跟着工作区走:数据存在 <工作区>/.dsh-fix/,换工作区就是换一个抽屉,绝不往用户目录乱写。
2. 扫描永不删除:closet_scan 只列清单、给理由,一个字节都不动。
3. 清理只做移动:closet_clean 把文件移进 .dsh-fix/trash/<批次>/,附带 manifest.json 记录原路径,随时可还原;真正的删除只有「过期清理」一处入口,默认 30 天后才允许,且默认只做预演。
目录结构
<工作区>/ └── .dsh-fix/ # 收纳间(dataDir 可配置) ├── registry.json # 登记册:路径/语言/用途/状态/运行次数 ├── logs/<脚本名>/ # 每次执行的完整输出,按时间戳分文件 │ └── 20261018-165530.log └── trash/<批次>/ # 回收站 ├── manifest.json # 每个文件的原路径与体积 └── <搬进来的文件>
工具
装上插件后,AI 可以直接调用 7 个工具:
| 工具 | 作用 | 会改文件吗 |
| closet_register | 登记一个脚本:路径、用途、语言、状态(active/done/obsolete) | 只写登记册 |
| closet_list | 列出登记册,并标注「文件还在不在」 | 否 |
| closet_scan | 扫描工作区,列出疑似遗留物及判定理由;skipTracked: true 可完全不显示已被 git 跟踪的文件 | 否 |
| closet_run | 按语言执行登记过的脚本,输出写进日志 | 只写日志 |
| closet_clean | 把指定文件移进回收站(可还原);已被 git 跟踪的文件会被拒收,确需清运要带 force: true | 移动 |
| closet_trash | 查看回收站批次;expire: true 才做过期清理(默认预演) | 只在过期清理时删除 |
| closet_logs | 列出某个脚本的执行日志,或读取某份日志的末尾 | 否 |
也可以在 GUI 的 设置 → 脚本与日志 面板里点点点。
一个典型回合
用户:这次排查完了,把临时脚本收拾一下 AI :closet_register { path: ".dsh-fix/upgrade-wbc.ps1", purpose: "升级 workbuddy 连接器", status: "done" } AI :closet_scan → 发现 8 个遗留物(3 个 .bak、2 个日志、3 个临时脚本),附判定理由用户:前 5 个可以清 AI :closet_clean { paths: [...] } → 已移入回收站批次 20261018-165530
支持的语言
按扩展名自动识别,多语言通用:
| 语言 | 扩展名 | 缺省解释器 |
| PowerShell | .ps1 .psm1 .psd1 | pwsh,缺失时退到 powershell.exe |
| Node | .js .mjs .cjs .ts | node |
| Python | .py | python,缺失时退到 py -3 |
| 批处理 | .bat .cmd | cmd.exe /d /c |
| Shell | .sh .bash .zsh | bash |
解释器路径可在配置里覆盖,见下。
配置
写在插件条目的 config 下(cordis.yml,或安装后由 cordis.patch.yml 注入的默认值):
dsh-closet:
enabled: true
dataDir: .dsh-fix # 收纳间目录名,相对工作区 trashRetentionDays: 30 # 回收站保留天数
ignore: [] # 额外忽略的目录名或 glob,如 ['.bak', 'build']
maxScanFiles: 5000 # 扫描上限,防止在大仓库里扫穿 maxScanDepth: 64 # 扫描最大深度 runTimeoutMs: 120000 # 单次执行超时(毫秒) maxLogBytes: 2097152 # 单个日志文件上限(字节) maxCleanBatch: 200 # 单次最多清运多少项 maxCleanBytes: 209715200 # 单次最多清运多少字节(200 MB)
interpreters: {} # 覆盖解释器,键为语言名,值为 argv 数组
ignore 里写错的值会被丢弃而不是「忽略一切」——配置写坏只会让扫描结果变多,不会让它变空。
面板
安装后在 设置 → 脚本与日志 里:
- 已登记脚本:状态、路径、运行次数;文件已被删掉的会标红提示。
- 扫描遗留物:勾选后点「移进回收站」,一次一批。表头第一个复选框可一键全选(被 git 跟踪的文件不参与),部分勾选时显示半选状态。
- 回收站:按批次列出体积与条目,可一键还原。
- 执行日志:按脚本分组,点开看最近 200 行。
面板接口走 /dsh-closet/api/,只接受同源请求(拒 cross-site 与 origin: null)。
安全设计
- 不会误删:closet_clean 只移动;真正删除只有 closet_trash { expire: true } 一条路,默认 dryRun。
- 不动版本库里的东西:扫描会照常列出已被 git 跟踪的文件(标 tracked + 「⚠ 已被 git 跟踪」),但判定固定为「待确认」,closet_clean 默认整批拒收;确需处理要显式带 force: true。工作区不是 git 仓库或本机没装 git 时,保护自动降级并在结果里明说。
- 不会越界:只能处理工作区内的文件;.. 穿越、大小写变体、软链接/目录联接绕过都被拦截(字面路径与真实路径双重校验)。
- 不会扫穿:node_modules、.git 等默认跳过,软链接不跟随,深度与文件数有上限。
- 不会写坏:registry.json 走「写临时文件 → rename」的原子写;文件损坏时先改名留存现场再重建。
- 不会拖死:脚本执行有超时保护,超时用 taskkill /T 连同子进程整棵树杀掉(POSIX 走进程组)。
开发
npm test # 单测 108 + 端到端冒烟 18 + 文档一致性;零依赖,全用 Node 内置 test runner
npm run test:unit # 只跑单测
npm run lint:syntax
项目结构:
lib/
├── store.js 登记册读写(原子写、路径规范化、语言识别) ├── scan.js 遗留物扫描(只读) ├── run.js 多语言执行(spawn + 日志 + 超时 + 进程树强杀) ├── trash.js 回收站(移动/还原/过期清理) ├── config.js 配置归一化 + 原生 Schemastery schema(拿不到内核依赖时用自带的兼容 schema) ├── routes.js HTTP 面板接口 ├── client.js 设置面板(CJS factory 单文件,无需构建) └── index.js 插件入口,7 个工具的定义与装配
test/
├── .test.js 单测(store / scan / run / trash / contract) ├── smoke.mjs 端到端冒烟:真 ctx + 真文件系统,工具与路由都跑一遍 ├── docs-check.mjs 文档与实现一致性(工具名 / 模块 / 版本号) └── host-stubs.js 把 @deepseek-ai/dsh-llm 等宿主包替换成桩,让纯 Node 也能 import 入口
store / scan / run / trash 四层不依赖 DSH,可以单独用、单独测、换宿主也能跑。
lib/client.js 是手写的 window.__ModuleLoader__ CJS factory,改完不需要重启,HMR 会自己刷新(React 组件状态会丢)。改 lib/index.js、package.json 或 cordis.patch.yml 需要重启 DSH。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yuezhiye/dsh-closet
按工作区登记临时脚本与日志,扫描清运可还原
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9