DashClaw

在无人值守 AI Agent 执行破坏性或高成本操作前拦截,并推送远程审批,所有裁决写入可核验的签名账本。

Star 数
★ 313
最近更新
4 天前
License
MIT
主语言
TypeScript

30 秒速览

运行形态
命令行工具自托管服务MCP 服务器
可在哪里用
通用 · 跨平台Codex · Claude CodeClaude.ai · OpenAI API(部分支持)
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
Node.js 20+Python 3.7+PostgreSQL(通过 npx dashclaw up 使用 Docker 或内嵌模式)Shell / 命令行网络访问本地文件系统MCP Server
典型场景
小团队启动 6 小时的夜间编码 Agent 会话,希望在 rm -rf、强制推送或读取 .env 时被拦住并可远程一键拒绝。
不适合
  • 只需要模型调用链追踪与评测看板的团队
  • 期望对任意运行时实现强制拦截的团队(裸 SDK/MCP 仅协商式)
  • 需要抵御同权限进程篡改的高安全场景

这个 Agent 能做什么,适合哪些场景?

DashClaw 是面向无人值守 AI Agent 的审批与治理层,位于 Agent“决定调用工具”与“工具真正执行”之间。它以 Node 20+ 的服务端(PostgreSQL 存储、npx dashclaw up 本地起服务)加 Node/Python SDK、MCP Server、CLI 和 Web 审批台组成,通过 guard 接口按声明式策略给每个动作打分并给出 allow、warn、allow_contained、require_approval、block 五种裁决之一。它提供 Claude Code、Codex、Hermes 的 PreToolUse 钩子插件、OpenClaw 网关插件和 dashclaw_invoke,在这些衔接点上可做到 fail-closed 的实际拦截;而裸 SDK、REST API 与普通 MCP 调用属于“协商式”,由调用方自行遵守裁决。待审批动作可从 /approvals 网页、CLI、移动 PWA、Telegram 或 Discord 一键放行或拒绝,决策、执行声明与结果写入带 Ed25519 收据(在可签发路径上)的账本,可导出并离线核验。项目采用 MIT 许可,可本地自托管或部署到自有云;作者明确说明项目年轻、由 AI 在人类章程约束下维护,不宣称普适的强制执行力。

每个受治理动作先经过 guard 引擎:读取动作类型、命令原文、声明目标与 Agent 自报置信度,匹配 20 类策略(如 Deploy Gate、Risk Threshold、Protected Path、Subagent Constraint),并结合默认开启的提示注入扫描,输出决策格中的一种裁决,block 在账本中不可降级。require_approval 会把动作冻结并送入 /approvals、CLI(dashclaw approvals)、/approve 移动 PWA、Telegram 或 Discord;waitForApproval() 用 SSE 并回退轮询,解析前会重新核对权威状态。SDK 的 runGoverned()/run_governed() 在审批通过后做一次全新策略检查、获得执行声明、调用回调并上报结果,结果进入 pending/completed/partial/failed/lost_confirmation 五态终结机,超时由 cron 扫描标记为 lost_confirmation。决策与结果可通过 POST /api/integrity/verify 在无需 API Key 的情况下核验签名;此外还有针对已安装钩子的活性探针、以你的批准/拒绝反馈校准的中断控制器,以及可配置的外部决策引擎(只能收紧、不能放松本地裁决)。MCP Server 暴露 17 个治理工具和 3 个只读资源,服务端亦在 /api/mcp 提供 Streamable HTTP。

  1. 小团队启动 6 小时的夜间编码 Agent 会话,希望在 rm -rf、强制推送或读取 .env 时被拦住并可远程一键拒绝。
  2. 在 CI 或后台 Agent 集群中运行 LangChain、CrewAI、AutoGen 流程,用 Python SDK 的 run_governed() 把危险操作纳入审批与结果记录。
  3. 已经使用 Claude Code 或 Codex 的开发者,用插件把 PreToolUse 钩子接上,实现 fail-closed 拦截并把每次裁决留档。
  4. 在 OpenClaw 网关上接入插件,使经网关下发的工具调用无需 Agent 主动调用治理工具即可被拦截。
  5. 合规或运维人员需要导出可独立验证的决策证据链,用于事后复盘某次自动化事故。
  6. 把 DashClaw 作为 MCP Server 接入任意 stdio/HTTP MCP 宿主,让 Agent 通过工具调用查询策略与审批。

如何安装或部署这个 Agent?

本地自托管(推荐入门路径):

npx dashclaw up

该命令会准备 PostgreSQL(Docker 或内嵌)、生成密钥、签发 API Key、执行迁移并在 :3000 启动,还会提示写入 Claude Code 钩子并打开已登录的浏览器。非交互环境(例如由 AI 代为安装)请用:

npx dashclaw up --yes --no-browser

API Key 写入 ~/.dashclaw/instance.json,可用以下命令自检:

npx dashclaw doctor
curl http://localhost:3000/api/health

部署到自有云时,用 README 中的 Vercel 按钮并配置 .env 中的 DATABASE_URL、DASHCLAW_API_KEY、ENCRYPTION_KEY、NEXTAUTH_SECRET、NEXTAUTH_URL、CRON_SECRET、DASHCLAW_LOCAL_ADMIN_PASSWORD(详见 .env.example),Vercel 构建会先执行 schema 迁移。

安装 SDK 与 CLI:

npm install dashclaw
pip install dashclaw
npm i -g @dashclaw/cli

接入 Agent 钩子:

dashclaw install claude
dashclaw install codex --project /path/to/repo
dashclaw install openclaw
bash scripts/install-hermes-plugin.sh

也可在 Claude Code 内直接添加插件市场:

/plugin marketplace add ucsandman/DashClaw
/plugin install dashclaw@dashclaw

如何使用这个 Agent?

最小可用调用(Node SDK,把真实副作用放进回调内):

import { DashClaw } from 'dashclaw';
const claw = new DashClaw({ baseUrl: process.env.DASHCLAW_BASE_URL, apiKey: process.env.DASHCLAW_API_KEY, agentId: 'nightly-agent' });

await claw.runGoverned(
  { kind: 'shell', command: 'git push --force origin main' },
  { action_type: 'shell', declared_goal: 'Force-push the rebased branch' },
  async () => run(),
);

Python 对应 run_governed()。在任何 HTTP 客户端中接入 MCP Server:

{ "mcpServers": { "dashclaw": { "command": "npx", "args": ["@dashclaw/mcp-server"],
  "env": { "DASHCLAW_URL": "https://your-dashclaw.vercel.app", "DASHCLAW_API_KEY": "oc_live_xxx" } } } }

审批与排障命令:

dashclaw approvals
dashclaw approve <id>
dashclaw install telegram

验证钩子确实生效(Claude Code):

echo '{"tool_name":"Bash","tool_input":{"command":"echo hello"},"tool_use_id":"t1","session_id":"smoke"}' | python .claude/hooks/dashclaw_pretool.py

注意升级顺序:先部署匹配的 schema 与服务端,再升级使用执行声明协议的 SDK helper;服务端升级后可设 DASHCLAW_REQUIRE_EXECUTION_CLAIMS=1 拒绝旧协议响应。

这个 Agent 有哪些优点和局限?

优点
  • 明确区分“机械强制”与“协商式”治理,逐个运行时列出钩子、网关、invoke 三类真实可拦截的接缝,不夸大为普适强制。
  • 审批体验完整:/approvals、CLI、移动 PWA、Telegram、Discord 五条远程通道,配合“允许,不再询问”的目标级可撤销授权。
  • 证据链可核验:Ed25519 收据、签名哈希链导出,且 POST /api/integrity/verify 无需 API Key 即可复核。
  • 默认策略刻意收窄为灾难包,避免高频打断导致策略被整体关闭(有 18 天关闭事故作为设计依据)。
  • 提供活性探针按实际执行而非账本判定强制是否生效,能识别 stale/broken 等钩子失效状态。
局限
  • 裸 SDK、REST API 与普通 MCP 调用只是协商式,调用方不遵守裁决时不会产生拦截。
  • 钩子运行在 Agent 自身权限下,同一权限的进程可篡改,真正隔离依赖容器、独立用户或只读钩子路径等部署手段。
  • API 分层为 43 稳定 / 18 beta / 75 experimental,实验接口随时可能变更,升级需先迁 schema 再升 SDK。
  • 需要 PostgreSQL 与密钥配置,属多步骤部署,非一键零依赖。
  • 项目自称首提交于 2026 年 2 月、缺少大规模外部生产验证,不宜当作成熟基础设施依赖。

这个 Agent 与同类方案有什么区别?

README 未点名任何具体竞品,只把自己的定位与本地运行时权限提示、通用追踪/评测产品、通用 Agent 平台区分开:本地权限提示面向坐在键盘前的操作者,而 DashClaw 面向无人值守场景的远程异步审批与共享策略;它也不是模型追踪与评测看板,亦不提供日历、CRM、消息或 RAG 工具套件。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
DashClaw 当前 65 · 存在缺口 命令行工具免费 ★ 313 4 天前 TypeScript Codex · Claude Code
Flow-Like 55 · 缺口较多 桌面应用免费版 + 付费版 ★ 968 今天 Rust —
Heym 46 · 缺口较多 自托管服务免费 + 模型费 ★ 1.3k 今天 Python Codex · Claude.ai
Preloop 84 · 表现良好 — ★ 82 今天 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
65/ 100 五分制 3.3 / 5
信任安全 17/29
可靠稳定 8/14
适用触发 15/18
规范维护 13/18
有效结果 7/13
证据核验 5/8
查看各维度的扣分理由
信任安全17 / 29 · 2.9/5

证据显示项目在最小权限上有实质设计:middleware 默认拒绝 /api/*、公开路由白名单、admin/member 角色门、分离职责(SELF_APPROVAL_FORBIDDEN)、SSRF 的 DNS 固定与私有 IP 拒绝,故 least_privilege 给 2;但 hook 以 agent 自身权限运行、可被同权限进程篡改,README 自认非防篡改,扣分。user_confirmation 给 3:远程审批、fail-closed 拦截、block 不可降级、standing grant 需预览与可撤销,证据充分。data_flow_transparency 给 2:文档说明 guard 决策、DLP 脱敏、act 证据分级,但实际数据流向(如 LLM/第三方调用)仅部分披露。sensitive_data_handling 给 2:有 DLP 扫描、AES-GCM+AAD、掩码、密钥不入 bundle,但历史审计暴露过明文泄露与 CBC 无认证问题,虽已修复仍显示风险面。dependency_security 给 1:package.json 依赖多为 ^ 浮动版本,xlsx 漏洞被“接受风险”而非修复,仅靠 Dependabot/overrides,证据不足以证明持续受控。external_effects 给 2:明确承认外部效果非 exactly-once、需对账,runGoverned 不重复回调,属诚实但非彻底。rollback 给 1:有 observe 模式、env 回滚开关、outcome 不可变与 parent_action_id 恢复,但缺少面向用户的一键回滚/撤销执行证据。source_attribution 给 1:MIT 与作者字段存在,但发布者身份未经验证、无签名发布或来源证明,仅元数据。

可靠稳定8 / 14 · 2.9/5

self_consistency 给 2:README 与 SECURITY 文档对 enforcement 边界、claim 协议、升级顺序描述一致,且多处自我修正(如“不承诺 exactly-once”),但文档极长且含大量日期化历史,存在版本漂移风险。dependency_availability 给 1:依赖 Node 20+、Postgres、可选 Redis/Upstash、Docker 或嵌入式 PG,安装路径多且 CI 需分别安装 cli/mcp-server 依赖,普通用户环境适配证据薄弱。failure_messages 给 2:文档描述 409 outcome already set、SELF_APPROVAL_FORBIDDEN、not_approved/expired/hash_mismatch 等明确错误,但多为断言,未见完整错误目录。

适用触发15 / 18 · 4.2/5

audience_and_scenarios 给 3:明确面向无人值守长时运行的 solo/小团队,场景(夜间跑、CI、后台 fleet)具体。capability_boundaries 给 3:专门设“What DashClaw is not”章节,逐条划清非通用追踪/平台/硬隔离,边界诚实。trigger_precision 给 2:决策格 allow<warn<allow_contained<require_approval<block、join=max、block 绝对,规则清晰;但 prompt-injection 扫描与校准阈值细节仅断言,精度证据有限。environment_fit 给 2:支持 Claude Code/Codex/Hermes/OpenClaw/MCP/Node/Python/REST 多运行时,但机械强制仅限少数 seam,其余为协作式,环境适配不均衡。

规范维护13 / 18 · 3.6/5

information_architecture 给 2:README 结构清晰、有目录锚点、THESIS/MAINTAINER/维护日志分离,但单文件极长且信息密度过高。install_notes 给 2:npx dashclaw up、Vercel 部署、各运行时安装命令齐全,但依赖 Docker/Postgres 与多包安装,步骤偏重。naming_stability 给 1:版本号 5.38.0 且文档含 v2.6/v4.63/v5.20 等大量历史版本引用,命名与 API 面(41/61 方法、136 路由)频繁变动,稳定性证据不足。examples_and_faq 给 2:有 examples/、QUICK-START、各集成指南与代码片段,但 FAQ 式内容分散。known_limitations 给 3:专章列出非通用强制、非防篡改、非大规模验证、外部效果非 exactly-once,限制披露充分。license 给 3:LICENSE 为完整 MIT 文本,package.json 标注 MIT,一致。versioning_changelog 给 2:有 CHANGELOG 引用、维护日志、版本同步检查脚本,但未见完整 changelog 文件内容。maintenance_responsibility 给 2:MAINTAINER.md 章程、AI 维护者+人类持有、维护日志公开,责任路径清晰;但发布者身份未验证,扣分。

有效结果7 / 13 · 2.7/5

output_usability 给 2:审批收件箱、CLI、PWA、Telegram/Discord 多通道,决策记录与签名收据可用;但收据仅证明签名内容而非外部效果,输出可用性受限。marginal_value 给 2:在无人值守场景提供远程审批与审计轨迹,相对本地权限提示有增量价值;但协作式集成需调用方配合,增量被削弱。cost_benefit 给 1:需自托管 Postgres、配置多密钥、维护多运行时 hook,成本较高,而强制仅限少数 seam,收益/成本比证据不足。

证据核验5 / 8 · 3.1/5

claim_traceability 给 2:README 大量声明附有文档链接(enforcement-boundary、durable-execution-finality、维护日志),可追溯;但部分性能/校准声明仅断言。cross_source_corroboration 给 2:README、SECURITY.md、SECURITY_FIXES、CI 工作流相互印证安全修复与测试存在,但均为项目自述,无独立第三方验证。fact_inference_separation 给 2:文档区分“机械强制 vs 协作式”、收据证明范围、client-reported 诊断非 attestation,事实与推断分离较好;但营销性表述(如“catches it before it runs”)仍偏强。

风险与缓解建议
  • hook 以 agent 自身权限运行,同权限进程可篡改或禁用治理;真正的隔离需容器/独立用户/只读 hook 路径,属部署责任。
  • 机械强制仅限 Claude Code/Codex/Hermes hook、OpenClaw 网关与 dashclaw_invoke;裸 SDK/API/MCP 为协作式,调用方不遵守则治理失效。
  • 外部效果非 exactly-once,claim 或完成确认丢失后需人工对账,不能依赖账本幂等保证外部副作用唯一。
  • 依赖使用 ^ 浮动版本,xlsx 漏洞被列为“接受风险”而非修复,需自行运行 npm audit 并评估。
  • 发布者身份未经验证,无签名发布或来源证明,安装前应自行核验来源与完整性。
  • 文档极长且含大量日期化历史与版本引用,存在版本漂移风险,应以当前 revision 的代码为准。
证据充分度:低 评估于 2026年10月29日 审查版本 704824de5f5f
查看完整评分方法 →

常见问题

它能保证彻底阻止 Agent 的危险操作吗?
不能一概而论。只有在 Claude Code、Codex、Hermes 的 PreToolUse 钩子、OpenClaw 网关和 dashclaw_invoke 这些接缝上才是 fail-closed 的机械拦截;裸 SDK、REST API 与普通 MCP 调用是协商式,调用方必须自己遵守裁决。即便在接缝上,钩子也以 Agent 自身权限运行,需要容器、独立用户或只读钩子路径来做真正的隔离。
需要准备哪些基础设施?
本地路径用 npx dashclaw up 自动准备 PostgreSQL(Docker 或内嵌)、生成密钥并签发 API Key;云端路径需要 DATABASE_URL、DASHCLAW_API_KEY、ENCRYPTION_KEY、NEXTAUTH_SECRET、NEXTAUTH_URL、CRON_SECRET 等环境变量,并按 .env.example 配置。
如果审批请求丢失或结果上报超时怎么办?
动作的终结状态分 pending、completed、partial、failed、lost_confirmation 五态,POST /api/actions/[actionId]/outcome 为一次性写入,后续返回 409;超时由 cron 扫描标为 lost_confirmation,含义是完成情况未知而非未发生。执行声明若丢失,helper 不会重放回调,需先与外部系统对账或使用目标系统自身的幂等机制再重试。
模型和厂商有限制吗?
治理层不绑定特定模型供应商:它接的是 Agent 运行时与工具调用,支持 Claude Code、Codex、Hermes、OpenClaw、MCP 宿主、Node/Python SDK 与纯 REST。但不同接入方式的强制力不同,且钩子类和网关类接入需要对应产品存在。
可以只观察不拦截吗?
可以。用 --observe 或 DASHCLAW_HOOK_MODE=observe 让钩子只记录不阻断,此时 /approvals 与 /decisions 会显示红色提示,未强制的裁决在账本中标记为“Logged, not enforced”,并且经 PostToolUse 的 executed_despite 记录实际执行情况。注意用 DASHCLAW_GOVERNED_CATEGORIES 缩小范围会让被排除类别的调用直接不出现在 /decisions 中。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents