dsh-minder-hooks:为 DeepSeek Harness 带来可审计的钩子事件

前言

DeepSeek Harness(dsh)通过插件化架构扩展能力,但默认情况下,你只能靠人工翻阅会话归档来回答“它到底做了什么”。当 AI 智能体执行文件编辑、启动进程等操作,结果出错时,我们需要的是一份本地、可读、机器可解析的事件链,而不是散落在归档里的日志片段。

这是什么

dsh-minder-hooks 是一个面向 dsh 的钩子事件捕获与上报插件。它把 dsh 传递的钩子事件(会话启动、工具调用、前置检查等)追加到本地 JSONL 文件中,敏感字段在写入前被脱敏。安装后,它会在你本地的 dsh 进程中以“不可中断、不泄露”的方式运行,不会因为自身异常而中断会话,也不会向外发送网络请求。

核心功能

  • 本地 JSONL 存储:每行一个 JSON 对象,包含时间戳、事件类型与 dsh 传入的数据摘要。
  • 敏感值脱敏:键名为 key、token、secret、password、authorization 的字段在写入前替换为 [redacted]。
  • 日志轮转:单个日志文件达到 10 MiB 时自动轮转,保留一个 .old 分支。
  • 无干扰运行:钩子总是以退出码 0 退出,不向 stdout 打印内容,不会因自身异常中断会话。
  • 无网络依赖:整个包不含网络代码,避免本地日志泄露到远程。
  • 自动升级:安装 mindr 后,插件会自动切换到 mindr 的完整监管钩子(失败检测、升级上下文、二次意见预算等);移除 mindr 后自动降级为纯捕获模式。

安装与启用

使用 dsh 的插件命令安装:

dsh plugin --profile <your-profile> add github:xyzzing/dsh-minder-hooks

安装后,该插件会进入指定 profile,并在下一次 profile 启动时生效。

安装完成后,可以在任意任务中运行一次,然后查看本地捕获文件:

tail -3 ~/.local/state/dsh-minder-hooks/events.jsonl

典型用法

在捕获模式下,插件会把 dsh 传递的钩子事件写入本地 JSONL。每行是一个 JSON 对象,包含时间戳、事件名称、输入摘要和会话标识符等字段。例如,会话启动时可能输出:

{"timestamp":"2026-10-26T12:00:00.000Z","event":"SessionStart","session":"abc123","tool":"agent"}

工具调用时,会输出类似:

{"timestamp":"2026-10-26T12:00:01.500Z","event":"PreToolUse","tool":"write_file","input":"src/main.py"}

敏感字段会被自动脱敏。如果需要调整存储位置,可以编辑 state 目录中渲染出的 hooks.json 文件(钩子进程的环境由 dsh 控制,不支持通过环境变量传递配置)。

在 headless 模式下,只会触发会话启动钩子;工具阶段的钩子(PreToolUse / PostToolUse)不会触发。在 web host 模式下,三个钩子阶段都会触发,与 mindr 的生产环境行为一致。

适用场景与注意

  • 适合需要为 dsh 会话建立本地可审计事件链的场景,比如调试工具调用、排查执行结果异常。
  • 插件以当前 dsh 进程的权限运行,安装前建议检查源码与许可证(MIT)。

短结尾

dsh-minder-hooks 把“它做了什么”变成一份可读的本地记录,并在安装 mindr 后自动升级为完整的监管能力。如需查看目录页与源码,可访问:

  • 技能目录:https://www.skillhub.cn/plugins/xyzzing/dsh-minder-hooks
  • GitHub:https://github.com/xyzzing/dsh-minder-hooks
羽毛球分组比赛记分
小程序二维码

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

Xiaoye