ws-cleaner
DSH dynamic Cordis plugin: auto/manual workspace cleanup (clean_workspace tool)
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 19, 2026
- Updated
- Aug 19, 2026
Introduction
ws-cleaner — DSH 工作区自动/手动清理插件
DSH 动态 Cordis 插件(Host 半部),注册工具 clean_workspace:在每次任务完成后自动清理工作区里的不必要文件,并支持用户随时手动清理。
功能
- 任务完成后自动清理:监听
agent/turn-stopping与agent/status(idle)双信号(5 秒防抖去重),按保守垃圾规则清理;默认把命中文件移入.dsh-trash/<时间戳>/回收区(可恢复),配置permanent: true时直接永久删除;同时清空超过trashKeepDays(默认 7 天)的旧回收区 - 随时手动清理:工具
clean_workspace,支持dry_run(只统计)、permanent(永久删除)、age_days、trash_keep_days、extra_patterns、keep_patterns
清理规则(保守)
| 类别 | 规则 |
|---|---|
| 临时/备份/转储 | *.tmp *.temp *.bak *.orig *.old *.dmp *.partial *.crdownload *.pyc |
| 系统残留 | .DS_Store、Thumbs.db、~$* |
| 缓存目录 | __pycache__ |
| 旧日志 | 超过 ageDays(默认 7 天)未修改的 *.log |
永不触碰:.git 目录、.dsh-trash 自身、keepPatterns 命中的文件。
配置
工作区根目录可选 .dsh-cleaner.json:
{
"enabled": true,
"permanent": false,
"ageDays": 7,
"trashKeepDays": 7,
"extraPatterns": ["*.abc"],
"keepPatterns": ["*.ps1"]
}
permanent: true→ 自动清理直接永久删除(不进回收区)enabled: false→ 关闭自动清理(手动工具不受影响)
加载到 DSH
- 把本文件从
return {开始到结尾的内容作为code.host交给动态插件工具cordis_define(新插件给 3–6 位小写字母前缀,如clean) - 用
cordis_run运行插件 - 会话内即可直接调用工具
clean_workspace
依赖服务(Host):fs(可选,读配置)、shell、timer、harness。
工具参数
| 参数 | 说明 |
|---|---|
dry_run | true 只统计命中数量,不移动不删除 |
permanent | true 直接永久删除,否则移入 .dsh-trash 回收区 |
age_days | *.log 保留天数,超过才清理(默认 7) |
purge_trash | 是否清空超过 trash_keep_days 天的旧回收区(默认 true) |
trash_keep_days | 回收区保留天数(默认 7) |
extra_patterns | 额外通配符(如 *.abc),追加到内置规则 |
keep_patterns | 永不清理的通配符(如 *.ps1,按文件名匹配) |
版本
- v1:
clean_workspace手动清理工具 +agent/turn-stopping自动清理(移入回收区) - v2:自动清理改双信号触发(
agent/turn-stopping+agent/status→idle,防抖去重、不依赖定时器调度,修复 v1 自动触发未生效问题);新增permanent配置,支持自动清理永久删除模式 - v3:新增 apply 即时清扫 + 定时兜底(
intervalMinutes)+ 触发标记.ws-cleaner-last-run.json - v4:apply 直接触发(不依赖定时器)+ 全阶段诊断
- v5(根因修复):自动清理不生效的根因是沙箱策略——插件用
policySvc.resolve({})拿到默认策略(workspace-write,workspaceRoot = DSH 安装目录),对会话工作区的写入/删除全部被拦截;v5 改为经agents.currentInitiator()取会话 Agent,用其 session 解析会话级策略(danger-full-access)并显式传给 shell/fs,同时取真实工作区路径 - v6:修复
__CLEAN_JSON__标记解析正则多写的花括号;端到端实测:apply 清扫自动永久删除测试垃圾(permanent 模式),标记文件完整记录触发源与结果