Claude Code 风格生命周期 hooks:工具调用前后自动执行 shell 命令(stdin 收 JSON payload),pre-tool 非零退出即阻断调用。
Claude-Code-style lifecycle hooks: configured shell commands run before/after model tool calls with a JSON payload on stdin; a non-zero pre-tool exit blocks the call.
安装
dsh plugin --profile web add github:truelove-dreamer/dsh-plugin-hooksGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
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-toolhook:匹配的工具执行前运行;命令非零退出 → 阻止该工具调用(等价 Claude Code PreToolUse 返回 error);post-toolhook:工具结果落地后运行;退出码只记录,不改变工具结果。
配置
JSON 配置,来源二选一或叠加:
- 文件(默认
$DSH_HOME/hooks.json):
{
"hooks": [
{
"id": "lint-after-edit",
"event": "post-tool",
"tools": ["edit", "write"],
"command": "npm run lint -- --quiet",
"timeoutMs": 30000
},
{
"id": "guard-prod",
"event": "pre-tool",
"tools": ["bash", "pwsh"],
"command": "node guard.js"
}
]
}
- 内联(挂载 config,追加在文件 hooks 之后):
- id: hooks
name: dsh-plugin-hooks
config:
configFile: C:/path/to/hooks.json # 可选
hooks:
- id: always-deny-db
event: pre-tool
tools: [bash]
command: "node deny-db.js"
字段:id(必填、唯一)、event(pre-tool | post-tool)、tools(可选,默认全部)、command(必填)、timeoutMs(可选)、enabled(默认 true)。
安装
dsh plugin --profile web add dsh-plugin-hooks
挂载:
- insert:
- id: hooks
name: dsh-plugin-hooks
Hook 命令收到的数据
命令通过 stdin 收到一行 JSON payload:
{ "event": "PostToolUse", "hookId": "lint-after-edit", "toolName": "edit",
"args": { "path": "a.js" }, "sessionId": "s_xxx", "cwd": "C:/repo",
"result": { "isError": false, "exitCode": 0, "error": null }, "durationMs": 123 }
环境变量: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 构建全部在
lib/config.js纯函数里,npm test零依赖。 - hook 运行不会递归触发工具事件(shell 是服务调用,不是工具调用)。
诚实边界
- hook 命令是受信任的 host 配置(等同 Claude Code hooks):能读写任何 host 能访问的东西,只在可信 profile 启用。
pre-tool命令会阻塞工具执行(超时/退出码决定放行与否);post-tool命令失败只记录,不影响结果。- v1 只支持工具生命周期事件;Stop / SessionEnd 类 hook 需要会话事件订阅,官方尚未暴露,留待后续。
- 若
ctx.shell未挂载,插件照常加载但 hook 不会运行(启动时在/hooks里提示)。
本地开发
cd plugins/dsh-plugin-hooks
npm test # node --test,零依赖
接线集成测试(真实 Cordis + mock shell,验证 allow/deny 语义与 payload):见仓库根 test-wiring.mjs。
原始 README: https://github.com/truelove-dreamer/dsh-plugin-hooks/blob/main/README.md ↗
同类插件
查看全部 →
deepseek-harness
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。

dsh-plugin
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。

dsh-tongflow
基于 TongFlow 的“片场”插件,用于图片、配音、音乐与视频制作:agent 为每个资产生成 TongFlow 工作流文件(.tongflow.json)并通过 TongFlow 插件执行,内嵌工作流画布,按镜头/角色/take 组织项目,附漫剧模板;以 @tongflow 开头的会话进入 Studio 界面。

helloagents
AI 编码 CLI 的工作流层:技能、项目知识、交付检查、更安全的配置写入与可恢复执行

dsh-ai-novel-writer
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。

rea
用 agent 逆向任何东西:从应用行为到原生二进制