truelove-dreamer/dsh-plugin-hooks
truelove-dreamer★ 0JavaScript最后同步: 2026-08-14
DeepSeek Harness plugin: Claude-Code-style lifecycle hooks for DSH. Configure shell commands that run automatically before/after model tool calls (pre-tool / post-tool) with a JSON payload on stdin; pre-tool non-zero exits block the call.
README 摘要
dsh-plugin-hooks DeepSeek Harness 插件:把 Claude Code 风格的 lifecycle hooks 带到 DSH —— 配置驱动的 shell 命令,在模型工具调用前后自动执行。 背景 DSH 0.1.0-rc.6 没有 hooks 能力,但架构已经预留了接缝: tools/pre-execute / tools/post-execute 两个有序 waterfall,以及 shell 服务"通过 stdin 给命令喂 JSON payload"的词汇表(见 @deepseek-ai/dsh-shell )。这个插件以 纯外部插件 形式补上这块空白,设计对齐官方预留接口: - pre-tool hook:匹配的工具执行 前 运行;命令非零退出 → 阻止 该工具调用(等价 Claude Code PreToolUse 返回 error); - post-tool hook:工具结果落地后运行;退出码只记录,不改变工具结果。 配置 JSON 配置,来源二选一或叠加: 1. 文件 (默认 $DSH HOME/hooks.json ): 2. 内联 (挂载 config,追加在文件 hooks 之后): 字段: id (必填、唯一)、 event ( pre-tool post-tool )、 tools (可选,默认全部)、 command (必填)、 timeoutMs (可选)、 enabled (默认 true)。 安装 挂载: Hook 命令收到的数据 命令通过 stdin 收到一行 JSON payload: 环境变量: CLAUDE PROJECT DIR (会话 cwd)、 DSH HOOK EVENT 、 DSH HOOK ID 、 DSH SESSION ID 。 pre-tool payload 无 result / durationMs 字段。 命令 - /hooks — 列出已配置 hooks + 最近 20 次运行记录(含退出码/错误摘要) - /hooks-reload — 重新读配置文件,热加载,无需重启 设计说明 - 通过 ctx.on("tools/pre-execute" "tools/post-execute") 接入 Cordis waterfall; pre-tool 非零退出时返回 { kind:"deny", reason } 阻断调用(与 dsh-tools 的 deny 决策契约一致,见 prepareExecution )。 - 钩子命令经 ctx.shell.run 执行(自动套用沙箱策略与超时),payload 走 stdin、cwd 走 env —— 与 DSH 为 hooks bridges 预留的 shell 词汇表一致。 - 配置解析/匹配/payload 构…
在 GitHub 查看完整 README →