packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
v1.1.2 · 适配 DeepSeek Harness 0.2.1+
恢复上下文插件。
dsh plugin --profile web add dsh-recover-context@latest安装后插件会自动挂载到 web 组合,无需手工编辑 cordis.patch.yml。
本版本要求 DSH >= 0.2.1-rc.2:使用了该版本的 Connection Fetch 路由、SessionPersistence 与uiConversation/useChat客户端契约,与更早的版本不兼容。
插件把工作区快照存放在 ~/.dsh/storages/recover-context// 下(绝不写入工作区):
baseline.json 基线元数据索引(仅 {路径: {sha,size,mtime}},不含文件内容)
turn-<n>.json 每轮结束时的元数据索引
blobs/<sha> 按内容寻址(CAS)存储的文件内容rename,进程中断不会留下半成品。.gitignore(支持通配符、目录规则、! 取反),大型数据目录不会被扫描。产物(如 dist/、build/、*.log),会话开始前就存在的同类文件保持不动。
这正是编辑/回退能可靠撤销本轮产物的前提。
因此在其中继续编辑/回退同样能撤销此前轮次的产物,而不是逐层失效。
上一个对话留在工作区里的产物,会在下一个会话回退/编辑到基线时被一并清除—— 前提是内容与台账记录完全一致(被改动过的文件视为用户资产,绝不删除)。
"对话回退了但文件没动"的不一致状态;还原后还会自检文件是否真的已删除。
maxFiles(默认 100,000)与 maxTotalBlobBytes(默认 512 MiB)防止超大仓库失控。单文件默认不限体积(流式复制,内存恒定),可用 blobSizeCap 显式收紧。
可选配置文件:~/.dsh/storages/recover-context/config.json
{
"enabled": true,
"enableGitignore": true,
"ignoreNames": [".git", "node_modules", ".pnpm-store", "dist", "build", ".venv", "__pycache__", ".DS_Store"],
"ignorePatterns": ["*.pyc", "*.log", "*.tmp"],
"trackSizeCap": 104857600,
"maxFiles": 100000,
"maxTotalBlobBytes": 536870912,
"ioConcurrency": 8,
"cleanupPreviousArtifacts": true
}字段 · 说明 enabled · 总开关,false 时完全停止采集 enableGitignore · 是否解析工作区 .gitignore ignoreNames · 按名字忽略的目录/文件 ignorePatterns · 按文件名通配符忽略 trackSizeCap · 超过该大小的文件只记录 size+mtime,不计算哈希、不备份内容(默认 100 MiB) blobSizeCap · 可选:单文件内容备份上限,默认不限制(受 maxTotalBlobBytes 兜底) maxFiles · 扫描文件数上限,超出即停止并告警 maxTotalBlobBytes · 单个会话可备份的 blob 总字节上限 ioConcurrency · 哈希计算与 blob 写入的并发度 cleanupPreviousArtifacts · 回退/编辑到基线时,是否清除上一个对话遗留的产物(默认 true;只删内容未被改动过的)
Apache-2.0