dsh-hooks-plugin

DSH PLUGIN模型与账号接入

仓库 KYinCode/dsh-hooks-plugin · npm dsh-hooks-plugin

模型与账号接入 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 提供 Claude Code 风格的 hooks,通过 .dsh/hooks.json 在智能体与工具生命周期事件上运行 shell 命令,支持热重载与子代理触发。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 3 复刻 0 · 未关闭 issue 0
最近更新 2026-08-19 创建于 2026-08-18
README 10.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add [email protected]
兼容 DSH 版本0.2.0-rc.2 等 12 个版本版本不匹配时安装会报错
Node.js 要求>=20来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@^4.0.1、@deepseek-ai/dsh-shell@^0.1.0-rc.6 等 4 个需要同时安装的同级依赖
npm 包名dsh-hooks-plugin可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-hooks-plugin:DeepSeek Harness 的 Claude Code 风格 hooks 插件

  • 四层配置合并
  • CC 兼容协议
  • 事件驱动执行
  • 热重载与热升级
  • 日志轮转持久化

适用场景

终端命令

上游标签

claude-codedeepseek-harnessdshdsh-pluginhookhooksplugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

模型与账号接入
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方KYinCode仓库 dsh-hooks-plugin · 默认分支 main
分类模型与账号接入ai
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue3 / 0 / 0收录时的数值,非实时
创建 / 更新2026-08-18 · 2026-08-19最后推送 2026-08-19
本站收录2026-08-19首次进入本站目录的时间

README 全文

10.3 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-hooks-plugin

中文 | English

为 DeepSeek Harness 提供 Claude Code 风格的 hooks:在智能体 / 工具生命周期事件上运行 shell 命令,配置来自 .dsh/hooks.json(与 Claude Code hooks 兼容的 JSON 结构)。

> 产品名是 dsh-hooks;npm / GitHub 包名是 dsh-hooks-plugin(dsh-hooks 已被占用)。运行时 API 与日志路径沿用 dsh-hooks 名:~/.dsh/logs/dsh-hooks/dsh-hooks.log 与 GET /dsh-hooks/recent(见下)。

目录

特性(v1)

  • 四层配置:全局 ~/.dsh/hooks.json → 预设 /hooks.json → 项目 <项目根>/.dsh/hooks.json → 项目本地 .dsh/hooks.local.json。
  • CC 兼容 schema 与协议:matcher[] + hooks[] 结构、stdin JSON 输入 / stdout JSON 决策输出,可复用现有 Claude Code hook 脚本。
  • 去重规则对齐 CC 2.1.88 hookDedupKey:command = shell+command+if、http = url+if、prompt/agent = prompt+if;同一 key 跨层只执行一次,最后合并层胜出;callback/function 不去重。
  • matcher 语义对齐 CC matchesPattern:* 全匹配、A|B 管道精确匹配、其余按正则;if 条件支持权限规则语法(Bash(git *)、Read(*.ts))。
  • 事件:PreToolUse / PostToolUse / PostToolUseFailure / UserPromptSubmit / SessionStart / SessionEnd / Stop / SubagentEnd。
  • PreToolUse 决策 deny → 官方工具失败卡片(模型看到 Error:)。
  • 子代理:默认触发,输入载荷携带 agent_id / agent_type / delegation_depth;可用 subagents: false 关闭;命令在触发者自己的沙箱上下文执行。
  • 热重载:项目配置改动自动重新加载(fs.watchFile),无需重启。
  • 免重启热升级:安装 dsh-hot-installer 后,dsh plugin --profile web add <包>@<新版本> 当场生效,无需重启。
  • 浮动控制台按会话隔离:shell.overlay 上的 🔌 Hooks 浮动控制台只显示当前正在查看的会话的 hooks(含该会话子代理触发的记录,带 subagent·dN 角标,行内显示触发工具名);切换会话即随之更新,头部显示 会话·<标题>。
  • 最近记录持久化:每条 hook 记录写入 recent.jsonl(限 200 条,DSH_HOOKS_RECENT_MAX 可调),插件热升级/进程重启后自动回填——控制台不丢最近历史。
  • 日志轮转:~/.dsh/logs/dsh-hooks/dsh-hooks.log 超过 1 MiB(可用 DSH_HOOKS_MAX_LOG_BYTES 调整)自动滚动为 .1 并续写新文件,不会无限增长。
  • 交付形态:profile bundle(cordis.patch.yml 自动插行),用 dsh plugin --profile add 安装。
  • 随包自带手册:docs/CONFIGURATION.md(配置 / 协议 / 边界全讲清)随 npm 包装入——装完的 agent 可直接 read 它,不必翻源码猜协议。
  • 自动注册作者技能:apply() 把包内 skills/dsh-hooks-authoring 注册进技能注册表(global 层),任意 agent 装完即在其 skill 目录看到 dsh-hooks-authoring;加载即得「四条钉死事实 + 配置/决策 JSON + Windows/沙箱边界」索引,深度问题读随包手册。

安装

# 从 npm 安装(当前 latest 0.2.14)
dsh plugin --profile web add dsh-hooks-plugin

# 或本地打包
npm pack
dsh plugin --profile web add ./dsh-hooks-plugin-0.2.14.tgz

安装后新会话自动生效;已有(存活)会话也会生效——插件 apply() 会遍历 agents 注册表为已存活会话补线,因此同进程热装/热升级后无需新建会话;进程重启后继续旧会话同样随 agent 重建自动重新接线(agent/created)。已断开的会话不存在的场合只有一种:进程重启后未重新打开旧会话。

> 给 agent / 写 hook 的人:装完先 skill dsh-hooks-authoring(自动注册,加载即得作者指南),深度看安装包内 docs/CONFIGURATION.md——两者都随包分发,不用碰源码。

配置示例

<项目根>/.dsh/hooks.json:

{
"PreToolUse": [
{
"matcher": "Read|Write|Edit",
"hooks": [
{
"type": "command",
"command": "echo hook triggered",
"timeout": 5
}
]
},
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "node -e \"process.stdout.write(JSON.stringify({hookSpecificOutput:{hookEventName:'PreToolUse',permissionDecision:'deny',permissionDecisionReason:'blocked'}}))\"",
"if": "Read(*private*)",
"timeout": 5
}
]
}
]
}

hook 字段 schema

每条 hook 是一个对象,type 决定判别联合(对齐 CC 2.1.88 schemas/hooks.ts)。

command / prompt / agent / http 公共字段

字段 类型 默认 说明
type "command" \| "http" \| "prompt" \| "agent" — hook 类型。v1 实现 command 与 http;prompt/agent 依赖外部 LLM/子代理,v1 不做(parseHookConfig 会拒绝未知类型)
if string 无 权限规则语法过滤器(如 Bash(git *)、Read(*.ts)),仅工具类事件生效;在 spawn 之前匹配 tool_name + tool_input,不匹配则不启动进程
timeout number(>0) 60 本命令/请求的超时秒数
statusMessage string 无 纯展示文案:hook 运行时在 spinner/列表里显示的自定义状态消息;有则取代 command/url/prompt 作为 hook 显示名,不参与去重键、不改变执行与决策
once boolean false 为 true 时执行一次后从运行期集合移除

type: "command" 专用

字段 类型 默认 说明
command string(必填) — 要执行的 shell 命令
shell "bash" \| "powershell" bash shell 解释器;bash 用 $SHELL(bash/zsh/sh),powershell 用 pwsh。是去重键的一部分
async boolean false 为 true 时后台运行、不阻塞主流程
asyncRewake boolean false 后台运行,且退出码为 2 时唤醒模型并注入阻塞错误;隐含 async

type: "http" 专用

字段 类型 默认 说明
url string(必填,URL) — 向其 POST hook 输入 JSON 的地址
headers object 无 附加请求头;值可用 $VAR_NAME / ${VAR_NAME} 引用环境变量
allowedEnvVars string[] 无 允许在 header 值里插值的环境变量名白名单;只列出的变量会被解析,其余 $VAR 引用留空

type: "prompt" / type: "agent" 专用(v1 不做,schema 对齐 CC)

字段 类型 说明
prompt string(必填) 用 LLM 评估的 prompt / 要验证的内容;$ARGUMENTS 占位 = hook 输入 JSON
model string 指定模型(如 claude-sonnet-4-6);缺省用小模型 / Haiku

matcher 结构

{
"": [
{ "matcher": "<模式>", "hooks": [ , ... ] },
...
]
}
字段 类型 说明
matcher string 事件匹配模式:*(或空)全匹配;A\|B 管道精确匹配;其余按正则。DSH 工具名小写,精确匹配大小写不敏感
hooks hook[] 该 matcher 命中时串行执行的 hook 列表

事件 key 限 CC 27 事件名;v1 实际接线:PreToolUse / PostToolUse / PostToolUseFailure / UserPromptSubmit / SessionStart / SessionEnd / Stop / SubagentEnd。

CC 兼容边界

与 Claude Code 的兼容只停留在"配置结构延续 CC 形状 + 协议能自洽表达决策";不搬运 CC 专属协议面:

  • ✅ 配置结构(matcher[] + hooks[]、if、shell、timeout、statusMessage、once)、stdin JSON 输入 / stdout JSON 决策输出、去重键语义 —— 延用,方便理解与迁移。
  • ❌ 不注入 CC 专属环境变量(CLAUDE_PROJECT_DIR、CLAUDE_PLUGIN_ROOT 等)——项目根已在输入 JSON 的 cwd 字段,且 DSH 没有插件/技能目录可指向。
  • ❌ 不做 ${CLAUDE_PLUGIN_ROOT} 字符串替换、CLAUDE_PLUGIN_OPTION_*、CLAUDE_ENV_FILE 等插件体系机制。
  • DSH 内部决策直接消费 waterfall 返回值,stdout JSON 只是让命令 hook 自己表达决策(如 deny)的协议手段,不是"按 CC 输出解析"。

stdin / stdout 协议(CC 兼容)

输入(命令 stdin 单行 JSON):

{
"session_id": "...",
"cwd": "F:\\project",
"hook_event_name": "PreToolUse",
"tool_name": "read",
"tool_input": { "path": "..." },
"tool_use_id": "...",
"agent_id": "<仅子代理>",
"agent_type": "<仅子代理>",
"delegation_depth": 0
}

输出(stdout JSON 决策):

{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow | deny | ask",
"permissionDecisionReason": "denied by ...",
"additionalContext": "..."
}
}

开发 / 验证

  • 纯函数单测:node --test test/
  • 热装验证(免重启):dsh-hot-installer 已安装时,dsh plugin --profile web add <包>@<新版本> 当场生效。
  • 文件日志:~/.dsh/logs/dsh-hooks/dsh-hooks.log;最近记录:GET /dsh-hooks/recent。

明确不做(边界)

不实现卸载生命周期、悬空行提醒、会话级配置档、PreCompact/PostCompact、prompt/agent 型 hook、设置页。配置的生命周期 = 它所在目录的生命周期;若某预设报 Cannot find package,通常是该插件包已卸载而预设行仍在,请手动移除对应行或删除预设目录。

License

MIT

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-hooks-plugin 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add [email protected]` 即可。对应的 npm 包名是 `dsh-hooks-plugin`。

dsh-hooks-plugin 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-hooks-plugin 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-hooks-plugin 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2、0.1.3-alpha.2。版本较多,只列出前 8 个。

dsh-hooks-plugin 需要什么运行环境?

Node.js >=20;需要同时安装 @deepseek-ai/cordis@^4.0.1、@deepseek-ai/dsh-shell@^0.1.0-rc.6、@deepseek-ai/dsh-subprocess@^0.1.0-rc.6、react@^18.2.0。环境不满足时安装会失败,建议先确认本机版本。

dsh-hooks-plugin 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-hooks-plugin 有哪些功能?

四层配置合并、CC 兼容协议、事件驱动执行、热重载与热升级、日志轮转持久化。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

模型与账号接入
按星标排序,可作替代方案

archify

archify

从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。

L4 · 沙盒安装通过 8.0 万 星

nocobase

nocobase

L3 · 安装规范通过 2.5 万 星

dsh-our-free-model

dsh-our-free-model

为 DeepSeek Harness 挂载免登录、免 API Key 的免费前沿模型通道,装完即用,并附用量看板与 OpenAI 兼容本地转

未标注验证等级 8,064 星

dsh-purge

dsh-purge

dsh-purge 是一款 DeepSeek Harness 设置插件,可修改默认副本、权限策略和工具限制,并添加规则卡片以分组应用补丁,支

L5 · 运行验证通过 4,573 星

KYinCode 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。