Back to home@ABccgh

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-stoppingagent/status(idle)双信号(5 秒防抖去重),按保守垃圾规则清理;默认把命中文件移入 .dsh-trash/<时间戳>/ 回收区(可恢复),配置 permanent: true 时直接永久删除;同时清空超过 trashKeepDays(默认 7 天)的旧回收区
  • 随时手动清理:工具 clean_workspace,支持 dry_run(只统计)、permanent(永久删除)、age_daystrash_keep_daysextra_patternskeep_patterns

清理规则(保守)

类别规则
临时/备份/转储*.tmp *.temp *.bak *.orig *.old *.dmp *.partial *.crdownload *.pyc
系统残留.DS_StoreThumbs.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

  1. 把本文件从 return { 开始到结尾的内容作为 code.host 交给动态插件工具 cordis_define(新插件给 3–6 位小写字母前缀,如 clean)
  2. cordis_run 运行插件
  3. 会话内即可直接调用工具 clean_workspace

依赖服务(Host):fs(可选,读配置)、shelltimerharness

工具参数

参数说明
dry_runtrue 只统计命中数量,不移动不删除
permanenttrue 直接永久删除,否则移入 .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 模式),标记文件完整记录触发源与结果