dsh-audit-log:DeepSeek Harness 运行时数据流审计日志

前言

在 DeepSeek Harness (DSH) 的插件生态中,Cordis 框架允许所有监听器共享同一个 args 数组。由于 internal/get / internal/set 拦截点公开,任何插件都可以静默地重写数据流。当数百个插件同时运行时,很难回答“是哪个插件修改了我的数据”这个问题。

dsh-audit-log 旨在解决这个问题。它是一个运行时数据流审计日志插件,能够记录谁在何时修改了什么,并精确到具体的插件和 Fiber 层面。

插件简介

dsh-audit-log 是一个只读观察者插件,它不会阻塞、重写或存储 Payload 的具体值,仅记录结构指纹。

  • 类别:admin-security
  • 维护者:ssdyg4444-sys
  • 许可证:MIT

核心功能

  1. Dispatch-level diff:在监听器运行前后对参数形状进行快照,记录中间发生的修改。
  2. Per-listener window attribution:每个监听器在注册时被包裹,修改被精确归因到执行该修改的具体插件和 Fiber(置信度为 “window”)。
  3. Read-only observer:始终处于观察模式,绝不干扰数据流。
  4. Shape-only fingerprints:仅存储结构指纹(类型、键、长度),不记录 Payload 值,确保敏感信息不会进入日志。

安装与启用

进入你的 Web 配置目录:

cd ~/.dsh/profiles/web
pnpm add dsh-audit-log

然后在 package.json 的 dsh.profile.bundles 中添加 dsh-audit-log,或者使用 dsh plugin --profile web add dsh-audit-log。安装后重启 DSH 实例即可。默认情况下插件无需配置即可开始记录。

典型用法

在任意插件中,可以通过 ctx.auditLog 查询审计日志。

查询特定事件的修改记录:

const records = await ctx.auditLog.query({
  events: ['message/send'],
  mutationsOnly: true,   // 仅返回发生修改的 Dispatch
  fromSeq: 100,
  limit: 50
});

// 获取具体的责任人
const culprit = records[0].mutations[0].attribution?.package

// 获取每个监听器的窗口记录
const windows = ctx.auditLog.queryWindows({ event: 'message/send' })

适用场景与注意

  • 适用场景:当你需要排查数据流被意外修改、追踪插件间数据依赖、或进行安全审计时使用。
  • 注意:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 隐私保护:日志中永远不会出现 Secret 等敏感值,仅存储结构指纹。

局限性

  • 指纹限制:Shape-only 指纹无法检测等长字符串交换(如 'by-c' 变为 'by-d')或原地数字编辑。
  • 时间精度:同步路径的时间记录是精确的;但在 serial/parallel/waterfall 模式下,异步监听器的同步路径时间粒度较粗(由 Dispatch-level diff 覆盖)。

dsh-audit-log 与生态中其他上下文层级的观测工具互补,前者关注运行时数据流修改,后者关注模型 Prompt 的输入来源。

目录页 | GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜