kovey/dsh-engineering-suite--packages-dsh-audit-trail ↗★ 0

dsh-audit-trail

Audit and traceability layer for DeepSeek Harness: append every tool call to a structured JSONL trail, keep pre-write snapshots, and rewind the workspace by turn. 适合需要审计工具调用历史或需要回滚工作区状态的开发者。

패키지
dsh-audit-trail
호환성
미검증
Harness peer 범위
^0.1.5-rc.2
Cordis peer 범위
^4.0.2
버전
0.1.0
최근 업데이트
2026. 9. 20.

같은 패키지 이름의 다른 저장소

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kovey/dsh-engineering-suite#4a618ac4376c4a075c99c92b69895163bb21b0ce&path:packages/dsh-audit-trail

配置

键默认说明
enabledtrue关掉则完全不装配
logFile~/.dsh/audit-trail.log插件日志(绝不写 stdout)
layout.rootDir / auditDir / stateDir.dsh / /audit / /state也接受扁平键 rootDir/auditDir/stateDir
trackTools[]要记录的工具;空 = 全部
ignoreTools[]永不记录的工具
writeTools['write','edit']需要写前快照的工具
maxArgsSummary200参数摘要上限(字符)
maxResultTail600结果尾巴上限(字符,tail 语义)
redactArgstrue见下
snapshot.enabledtrue写前快照开关(关掉后 audit_rewind 无内容可回滚)
snapshot.maxFileBytes1048576超过则跳过(reason:"oversize")
snapshot.maxFilesPerTurn50每会话+轮次快照上限(超出 reason:"quota")
prompt.enabled / prompt.orderfalse / 670可选的系统提示词小节 eng:audit-trail

项目级配置

一个 dsh profile 同时服务多个仓库,所以"快照多大算大""哪个工具不值得记录"这类设置不可能对每个工作区都合适。 每个工作区可以用自己的一份文件细化本仓库的审计行为:

/.dsh/audit-trail.json
{
  "snapshot": { "enabled": true, "maxFileBytes": 262144, "maxFilesPerTurn": 20 },
  "ignoreTools": ["read", "grep"],
  "writeTools": ["write", "edit", "bash"],
  "maxResultTail": 200,
  "redactArgs": true
}

profile 是上限:项目文件只能细化行为,不能把审计轨迹搬走,也不能把自己关掉。未命中的键一律忽略并记录问题(插件日志里逐键给出原因)。

可覆盖键(与 profile 同名键浅合并,未写的键继续用 profile 的值):

键类型作用
snapshot.enabledbool本工作区的写前快照开关(关掉后本仓库 audit_rewind 无内容可回滚)
snapshot.maxFileBytes正整数本工作区的单文件快照上限(超出记 reason:"oversize")
snapshot.maxFilesPerTurn正整数本工作区每会话+轮次的快照条数上限(超出记 reason:"quota")
writeToolsstring[]本工作区哪些工具需要写前快照
trackToolsstring[]本工作区记录哪些工具(空数组 = 全部)
ignoreToolsstring[]本工作区永不记录的工具
maxArgsSummary正整数参数摘要上限(字符)
maxResultTail正整数结果尾巴上限(字符)
redactArgsbool本工作区是否脱敏文件正文

只能由 profile 决定(写了也会被拒绝,并逐条记录原因;理由见下):

键拒绝理由
enabled插件开关是部署决定:项目不能关掉对自己工作区的审计
logFile插件日志落点是部署决定:审计证据不能被项目改写或丢弃
rootDir / auditDir / stateDir / layout审计工件位置是部署决定:审计轨迹不能自己搬家
prompt系统提示词小节由 profile 决定

信任根:.dsh/** 被 dsh-spec-gate 的 guard 对写工具关闭,所以模型无法用 write / edit 改写自己的审计设置—— 能改这个文件的只有人。注意:这个保护覆盖的是写类工具;用 bash(echo >、sed -i 等)改它只在 dsh-spec-gate 的 shellPolicy: strict 下才被拦下。

失败绝不放行:文件不存在 / 不是合法 JSON / 顶层不是对象 / 某个值类型不对时,回退到 profile 配置并记录问题 (逐键回退,不做类型强转),审计照常记录——坏掉的项目配置永远不会变成"没有审计"。

生效范围:配置按调用方会话的 header.cwd 逐次调用解析(读者按 mtime+size 缓存,热路径每次调用只多一次 stat); 未声明 header.cwd 的会话直接用 profile 配置(绝不从没人指定的 process.cwd() 里读配置)。 audit_report / audit_rewind 都会打印 配置来源:项目级 或 配置来源:profile,以及本工作区实际生效的快照策略。