helibeiqi/dsh-time-travel ↗★ 1
dsh-time-travel
DeepSeek Harness (DSH) 插件:可逆时间旅行与审计。为工具副作用建立「前状态快照 → 执行 → 补偿」链路,提供 rewindTo(turnId) 按轮次倒序恢复工作区,内置审计规则引擎。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:helibeiqi/dsh-time-travel说明文档
阅读完整 README ↗配置
插件导出 schemastery Config,可在 dsh 的插件配置面板 / profile 中覆盖:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
turnGapMs | number | 5000 | 同一会话内两次工具调用超过该间隔(ms)则开启新轮次;0 = 每次调用独立成轮 |
audit.enabled | boolean | true | 是否启用审计规则引擎 |
audit.logPath | string | audit-log.jsonl | 审计日志输出路径(JSON Lines,相对 cwd) |
audit.rules | dict\ | 全部 true | 按规则 id 开关:dangerous-shell / sensitive-path-write / non-compensable-write / delete-whole-dir |
watchTools | dict\ | 见下表 | 工具名 → 补偿器类别映射 |
maxRecords | number | 10000 | 内存保留的最大工具记录数(超出丢弃最旧;审计日志不受影响) |
dryRun | boolean | false | true 时 rewind 只出报告、不实际执行补偿 |
watchTools 默认映射(按 DSH 0.1.0-rc.6 实际工具名 + 通用桥接名):
| 工具名 | 补偿器类别 | 可自动补偿 |
|---|---|---|
write / edit | fs-write | ✅ 恢复原内容 / 删除新建 |
delete | fs-delete | ✅ 写回原内容 |
bash | bash | ❌ 仅审计 + manual 提示 |
pwsh | bash | ❌ 仅审计(Windows 上 dsh 的 bash 工具实际注册名为 pwsh,PowerShell) |
http.request | http | ❌ 仅审计 |
最小使用示例
import { Context } from '@deepseek-ai/cordis'
import { apply } from 'dsh-time-travel'
// 插件被 dsh 加载后,apply 已执行;以下仅为编程调用示例
const ctx: Context = /* dsh 注入的根 Context */
// 模型调用 write 覆盖了 a.txt 之后:
const report = await ctx.timeTravel.rewindTo('T3') // 撤销 T3 及之后所有工具副作用
// report: { requestedTurnId: 'T3', rewound: 2, skipped: 1, failed: 0, details: [...] }
// 查看当前记录(可按会话过滤)
const records = ctx.timeTravel.records('session-abc123')
// 全部回退
await ctx.timeTravel.rewindAll()
审计日志示例(audit-log.jsonl):
{"at":"2026-08-20T08:00:00.000Z","turnId":"T1","sessionId":"s1","callId":"c1","toolName":"bash","kind":"bash","isError":false,"hits":[{"ruleId":"dangerous-shell","severity":"critical","message":"bash 命令命中高危模式(rm -rf / mkfs / dd 写盘 / shutdown / curl|sh 等)"}],"command":"rm -rf /tmp/doomed"}