跳到主内容

dsh-clawrouter

19Star1Fork2Issue0Watching

给 DeepSeek Harness 智能体加一个"第二大脑":用更强的模型在危险命令执行前先审一遍,并把 60+ 模型通过钱包签名(x402/USDC)接入到 DSH,无需 API Key。

机审证据4/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
ai-agentsblockruncode-reviewdeepseek-harnessdshdsh-pluginllm-routerx402

安装

命令web profile
$ dsh plugin --profile web add dsh-clawrouter

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 BlockRunAI/dsh-clawrouter:先查看仓库 https://github.com/BlockRunAI/dsh-clawrouter 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

给 DeepSeek Harness 智能体配一个"第二大脑":在智能体准备执行危险操作前,让一个更强的模型先读一遍这条命令再放行;同时把 BlockRun 的 60+ 模型通过钱包签名接入到 DSH,无需 API Key、没有账号、按次以 USDC 结算。

核心能力

  • 在工具执行前自动审查危险命令:递归删除、原始磁盘写入、curl | sh、强制推送、sudo、访问 ~/.ssh 或 /etc/passwd、以及会在"以后被执行"的文件写入(git hook、CI workflow、postinstall、shell 启动文件),由更强的模型判断"放行 / 拒绝 / 升级给人类"
  • 注册 BlockRun 这条模型路由:用 EVM 钱包签名代替 API Key,按次通过 x402 用 USDC 支付;一个钱包即用 Claude / GPT / Gemini / Grok / Kimi 等 60+ 模型
  • 提供 /spend 命令,查询当前会话已产生的请求次数、输入/输出 token 与按模型分组的费用
  • 提供 /review 命令,把任意 diff / 方案 / 结论交给审查模型做一次性人工触发评审
  • 提供 /gate 命令查看闸门是否真正启用并加载了哪些规则,/gate drill 可在不执行任何工具的前提下用真实审查模型做一次端到端演练
  • 为路线内模型支持视觉输入与推理强度(high / max)选择,且默认仅对实际验证过的视觉模型开放图像能力

技术实现

  • 语言: TypeScript(tsup 打包 ESM,主入口 lib/index.js,类型声明 lib/index.d.ts)
  • 关键依赖: @blockrun/llm(x402 钱包签名客户端)、@deepseek-ai/schemastery(运行时配置 schema)、@deepseek-ai/cordis(DSH 插件运行时与 inject: ['llm','tools','commands'] 注入点)
  • 架构模式: 双 Bundle 插件——cordis.patch.yml 在 profile 中合成 blockrun-llm(provider route 注册)与 blockrun-review(tools/pre-execute 监听器 + /review /gate 命令);审查逻辑在执行前事件中匹配规则,被命中时异步调用更强的模型并以 safe / dangerous / uncertain 三档裁决,闸门只能"收紧"不能"放行"
  • 入口文件: src/index.ts(provider 路由 + /spend 命令)、src/review.ts(闸门 + /review /gate 命令)、src/adapter.ts(BlockRun LLM 适配器,封装钱包签名与流式响应)

适用场景

当你在 DSH 中担心"Full Access 太宽松,逐条审批太繁琐"的两难时,本插件提供第三选项:默认放行一切日常操作(读 / 编辑 / 构建 / 提交),只在智能体准备执行破坏性或越权操作时让更强的模型先看一眼,被拒则给出原因给智能体去修正。同时如果你想从 DeepSeek 之外借力——例如用 Claude 做审查、用 Gemini 看图、用 GPT 验证方案——本插件提供一条无需注册账号、无需 API Key 的通道,按次付费。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness>=0.1.0-rc.6peerDependencies 列出 dsh-attachment / dsh-commands / dsh-credentials / dsh-launch-environment / dsh-llm / dsh-tools 六个宿主包均要求 >=0.1.0-rc.6;dsh-attachment 在 peerDependenciesMeta 标为 optional,仅视觉能力需要
Node.js>=22.19 或 >=24package.json#engines.node 显式声明 `^22.19
Cordis>=4.0.1peerDependencies."@deepseek-ai/cordis": ">=4.0.1",DSH 内部提供
Base 链 USDC≥ 数美元钱包密钥通过 EIP-3009 授权签名按次扣款;典型闸门审查约 $0.0057,$5 USDC 大约够 2500 次审查或 5 次 100K token 的 Opus 调用
平台跨平台无 os / cpu 限制,无 node-pty、node:sqlite 等原生模块依赖

安装方式

dsh plugin --profile web add dsh-clawrouter

配置项

插件向 profile 的 cordis.patch.yml 注入两行,分别是 blockrun-llm(模型路由)与 blockrun-review(闸门)。下表"用途"列写人话。

blockrun-llm 路由配置

配置类型用途默认值
provider字符串在 DSH 中这条路由的注册名blockrun
walletKeyEnv字符串持有 EVM 钱包私钥的环境变量名;插件只读取你显式指定的变量,从不扫描磁盘BASE_CHAIN_WALLET_KEY
apiUrl字符串BlockRun API 入口https://blockrun.ai/api
timeoutMs整数单次请求超时300000(5 分钟)
requestFeeUsd数字每次请求的固定费用(用于 /spend 估算)0.002
visionModels字符串数组允许接收图像的模型清单;默认只放实测可用的模型google/gemini-2.5-flash、google/gemini-3.5-flash、google/gemini-3.6-flash、moonshot/kimi-k3
maxOutputCeiling整数默认输出 token 上限;网关按"请求的 max_tokens"结算,因此限制上限可避免默认就被按旗舰模型全输出上限收费8192
auxiliaryModel字符串用于压缩上下文、生成会话标题等"维护性"调用的廉价模型;会话正文不会被改路由关闭

blockrun-review 闸门配置

配置类型用途默认值
enabled布尔是否真的拦截工具执行;关闭时 /review 与 /gate 仍可用false
reviewerProvider字符串审查模型走哪条 provider 路由blockrun
reviewerModel字符串审查模型 id,刻意选比智能体本身更强的anthropic/claude-opus-5
timeoutMs整数单次审查的最大等待时间30000
reviewerMaxTokens整数单次审查请求的最大输出 token;网关按"请求的 max_tokens"结算,因此设限可避免一次审查被按旗舰模型 128K 输出上限收费512
onReviewerFailureask | deny审查模型连不上时是让人审批还是直接拒绝ask
extraRules数组追加自定义规则 {name, pattern, tools?};pattern 为 JS 正则源串,写错会在加载时抛错而不是悄悄跳过[]

常见问题

Q: 安装后提示 ✕ missing peer 是失败了吗?

A: 不是失败。package.json 的 peerDependencies 列出的 6 个宿主包由 Harness 自己在运行时注入——这是所有官方 Bundle 的共同做法;显式依赖会让 profile 出现 cordis 第二份副本,那反而会让 instanceof LlmError 跨副本失败、错误码全部变成 UNKNOWN。验证方式是 dsh --profile web --dump-config,应看到 blockrun-llm 与 blockrun-review 两行都被合成。

Q: 钱包密钥从哪里来?我没有 API Key 啊。

A: BlockRun 用钱包签名替代 API Key。已有 BlockRun 钱包:从 ~/.blockrun/.session 或 ~/.openclaw/blockrun/wallet.key 导出;全新用户运行 npx -y @blockrun/clawrouter 生成新钱包、给地址充少量 Base 链 USDC,再 export BASE_CHAIN_WALLET_KEY=...。插件只读取你通过 walletKeyEnv 显式指定的环境变量,从不自动扫描磁盘——避免你配置的密钥被另一个密钥"暗中覆盖"。

Q: 安装后我默认用的模型变了吗?

A: 没有变化。挂载 blockrun 路由不会改 dsh-base 默认的 deepseek-official;该路由要么由你显式选择,要么被审查闸门调用。审查模型默认是 anthropic/claude-opus-5,按次以 USDC 结算。

Q: 审查闸门会拦截哪些操作?普通 git commit 会被问吗?

A: 不会。规则刻意收窄——只拦截真正不可逆或越权的操作:递归删除、原始磁盘写入、curl … | sh、force push、git reset --hard、chmod 777、sudo、访问 ~/.ssh / ~/.aws / /etc/passwd,以及"以后会被自动执行"的文件写入(git hook、CI workflow、shell 启动文件、.gitconfig、postinstall)。日常读 / 编辑 / 构建 / 提交一律放行;命令行"提到"危险命令(grep -rn "rm -rf" docs/)也不会被误报,因为规则锚定到命令起始位置。

Q: 审查模型挂了怎么办?会被静默放行吗?

A: 不会。默认 onReviewerFailure: ask——连不上时升级为人类审批;需要无人值守自动化的用户可改成 deny,让闸门直接拒绝。deny 才让闸门"闭失败"(不放过),ask 才让闸门"开失败"(让人类把关),两者都不会在网络抖动时让危险命令溜过。

Q: /gate drill 是干嘛的?我装了但没启用闸门也能跑吗?

A: /gate drill 把 rm -rf / --no-preserve-root 送过风险匹配器与真实审查模型,但绝不交给任何工具执行。它用来证明闸门真的在工作——/review 命令即使在闸门关闭时也能注册成功,所以单看 /review 能用无法证明闸门在工作;闸门未启用时 /gate drill 会直接报错("nothing to drill")。

Q: 怎么加自定义审查规则?

A: 在 profile 的 cordis.patch.yml 给 blockrun-review 的 config.extraRules 追加 {name, pattern, tools?},pattern 为 JS 正则源串,对工具渲染后的参数做匹配;tools 为空表示对所有工具生效。规则在加载时校验编译,写错会立刻抛错而不会静默跳过。

Q: 这会让我用 DeepSeek 更便宜吗?

A: 不会,本插件不替换 DeepSeek 官方账单。BlockRun 不支持 DeepSeek 的缓存命中折扣:cache 命中的 turn 在官方直连下约 $0.000056,经过本插件在 22K 输入时约 $0.007。建议主循环继续用 DeepSeek 官方,本插件用于 DeepSeek 做不到的事(更强模型审查、调用 Claude / GPT / Gemini / Grok、x402 微支付)。

上手难度

入门 — 安装即可获得 /spend 与 60+ 模型入口;闸门默认关闭,需要手动在 cordis.patch.yml 把 enabled: true 才会介入执行流,且需要你事先配置好 BASE_CHAIN_WALLET_KEY 或经过凭证服务。

已知问题与限制

  • 图像请求被拒绝而非静默丢弃:未配置 dsh-attachment 时通过本路由发图像会返回 UNSUPPORTED,明确指出"compose @deepseek-ai/dsh-attachment"(src/serialize.ts:128-133 / README.md:288)
  • 对不推理的模型设置推理强度会被本地拒绝:在网关按请求结算的前提下,reasoning_effort 字段先在本地按目录判定,未声明推理能力的模型直接 UNSUPPORTED 而非付费后被拒(src/adapter.ts:156-164 / README.md:213)
  • 已发起但未结束的请求无法被 AbortSignal 中断:@blockrun/llm 暂不支持把信号透传到 socket,本地中止只会停止读取;底层连接在 SDK 自己的超时到达前一直占用(src/adapter.ts:218-225 / README.md:290-291)
  • 本插件不持久化开销到磁盘:Harness session 日志拒绝未知事件类型,外部仓库的插件无法声明其事件可忽略;/spend 给出的只是内存统计,跨进程丢失,账本以钱包余额为准(src/spend.ts:8-21 / README.md:292)
  • 未启用"智能路由"虚拟模型:网关存在 blockrun/auto 路由器但本插件未接线,因为虚拟模型必须声明一个上下文窗口,声明最大候选会导致较小模型被错误分配长上下文,声明最小候选又会导致每次会话过早压缩(README.md:293)
  • 压缩可能比模型实际能力更早触发:本路由按网关目录声明的窗口汇报容量,未实测扩报以避免静默溢出;某些模型实际窗口大于目录值(README.md:294)
  • 上下文溢出按请求大小而非错误文本判定:网关把上游错误统一改写为 {"message":"API request failed"},常规文本匹配全部失效,因此本插件对返回 400 且请求体超过声明窗口的请求强制判为溢出以触发压缩(src/adapter.ts:51-54 / README.md:295)
  • 前一轮推理内容不回传:DeepSeek 思考模式建议在 tool-call 轮回传 reasoning_content,但本路由同时服务多厂商模型,某厂商的强制字段可能是另一厂商的拒绝字段,因此多步工具调用在推理模型上可能轻微降级(README.md:296)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/BlockRunAI/dsh-clawrouter)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录