跳到正文

Khorsheed/dsh-ankh-guard

30最近提交 2026年8月15日

dsh-ankh-guard DSH 插件

dsh-ankh-guard 是一个 DSH 守护插件,在 agent 发起的重启前强制执行基于凭证的闸门。它要求 agent 先证明代码改动通过构建和测试,然后记录一个绑定当前 git commit 的凭证。插件还提供 watchdog 监督重启系统,支持检查点/回滚、金丝雀检查以及向 agent 自动报告重启上下文。

如何安装 dsh-ankh-guard DSH 插件

dsh plugin --profile web add @khorsheed/dsh-ankh-guard

复制不会执行命令。安装 dsh-ankh-guard DSH 插件前请核对仓库和版本。

dsh-ankh-guard DSH 插件数据来源

dsh-ankh-guard DSH 插件快照日期:2026年8月16日

discovered

dsh-ankh-guard DSH 插件能做什么

  • 在允许重启前验证构建和测试凭证;凭证缺失、过期或 HEAD 不匹配则拒绝
  • 构建和测试通过后记录凭证,绑定当前 git commit,可配置 maxAgeMinutes
  • 提供检查点(快照整个工作树)和回滚功能
  • 重启后执行金丝雀检查,确认新实例健康
  • Watchdog 监督:独立进程监听端口,自动重启实例,失败时回滚
  • 通过 agent.followup 或 step 报告重启上下文,确保 agent 知道重启结果
  • 支持手动重启和 schedule-exit 配合 detached watchdog 实现无人值守恢复
  • 可配置状态目录、仓库目录、凭证新鲜窗口、报告模式和后备宽限期

dsh-ankh-guard DSH 插件适合哪些场景

  • Agent 修改自身代码后想重启宿主,插件确保修改安全后再重启
  • 开发者想让 agent 具备自我修复能力,自动修改 bug 后重启,无需人工干预
  • 部署基于 DSH 的服务,需要允许自我修改且失败时能回滚
  • 重启后执行金丝雀测试,尽早发现回归问题
  • 与 systemd/launchd 集成实现分层监督:watchdog 监督实例,外部监督者监督 watchdog

dsh-ankh-guard DSH 插件适合谁

  • 使用 DSH 开发能运行时修改自身代码的 agent 的用户
  • 希望允许 agent 自我修改重启但需要安全保证的 DSH web 实例运维人员

dsh-ankh-guard DSH 插件的限制

  • 闸门仅在 restart/supervise 命令中强制,launcher 尚未实现;手动 kill/启动可绕过
  • Watchdog 需要一个比实例活得久的监督者;detached 模式必须在退出前采用
  • 检查点包含整个工作树,可能带上无关的未提交改动
  • restart/supervise 通过 lsof 发现监听者(macOS/带 lsof 的 Linux);其他平台需 --pid
  • A/B 分区切换不在本包范围;生产环境的槽位切换机制是独立的后续项

dsh-ankh-guard DSH 插件的仓库 README 摘录

以下文字摘自 dsh-ankh-guard DSH 插件的上游仓库 Khorsheed/dsh-ankh-guard 的 README,版权归原作者,仅作引用。

让 agent 自己改代码、自己重启,还不把服务搞挂。 agent 改完代码想重启的时候,这个插件会先问一句:这次改动,构建和测试都过了吗?过了才放行,没过就拦下来——免得改坏的代码把整个服务、连同正在进行的对话一起带走。 ![重启闭环演示](assets/restart-loop-demo.png) 一次真实的自我重启:agent 重启前先告知验证计划(1);宿主退出,进行中的 tool call 被安全中断并落盘(2);watchdog 在 10 秒内拉回实例,ankh-guard 把重启上下文注入原会话(3)——agent 醒来后继续执行重启前宣布的验证,用户全程无感知。 ## 工作原理 核心就一条规则:**先证明代码是好的,才允许重启。** 构建和测试全绿后,插件记录一个凭证,绑定当时的 git commit,并带 10 分钟有效期(`maxAgeMinutes`)。要重启时检查三点: 1. 有没有凭证; 2. 凭证超没超过 `maxAgeMinutes`; 3. 当前 HEAD 和记录凭证时的 commit 一不一致——记录之后任何改动都会让凭证失效。 这条规则能拦住一整类事故:改坏了构建、漏注册配置、导错模块——这些全都会让构建/类型检查失败,于是没有凭证,重启在造成伤害之前就被拒绝。 重启本身交给 watchdog 托管:独立的监督进程,宿主死了自动拉起来,起不来就回滚到检查点,连续四次失败停在崩溃页等人工处理。`checkpoint` 在批次前把整个工作树提交为回滚点,`reset` 硬重置回该点,`canary` 在重启后复检。检查点与凭证存在状态文件里,重启后依然存活,所以 canary 可以在新实例起来之后运行。 ## 安装与加载 本包是 dsh 插件:守护运行中的 dsh web 实例,防止坏掉的自我修改重启。不自带宿主——先准备 dsh 宿主(`npx @deepseek-ai/dsh web`)。宿主兼容性:dsh `0.0.1-rc.5+` 或 `0.1.0-rc.5+`(npm 上任何当前版本均可)。 一条命令安装到 profile 并作为补丁层激活(本包声明了 `dsh.bundle`,add 会同时写入依赖并挂载插件;重复执行安全,按包名去重): ```sh dsh plugin --profile web add @khorsheed/dsh-ankh-guard ``` 或从 GitHub 安装(安装时经 `prepare` 自动构建): ```sh dsh plugin --profile web add github:Khorsheed/dsh-ankh-guard ``` 装完重启宿主。注意:如果你的 profile 已经通过其他 bundle 组合了 ankh-guard,请不要

阅读完整 README仓库许可: MIT

dsh-ankh-guard DSH 插件常见问题

如何安装 dsh-ankh-guard?

使用 DSH 插件命令安装:`dsh plugin --profile web add @khorsheed/dsh-ankh-guard`,或从 GitHub 安装:`dsh plugin --profile web add github:Khorsheed/dsh-ankh-guard`。确保已运行 DSH 宿主(例如 `npx @deepseek-ai/dsh web`)。插件需要 dsh `0.0.1-rc.5+` 或 `0.1.0-rc.5+` 版本。

如果构建或测试失败会怎样?

插件不会记录凭证。当 agent 尝试重启时,`verify` 命令会因为缺少有效凭证而失败,重启被拒绝,防止坏代码导致服务崩溃。agent 必须修复构建或测试,重新记录凭证,然后才能重启。

插件是否支持 Windows?

插件依赖 `lsof` 来发现监听者(macOS/Linux)。对于其他平台,使用 `restart` 或 `supervise` 时需要显式指定 PID(`--pid`)。核心功能在任何支持 Node.js 和 bash 的平台都应可用,但 Windows 未正式测试。

如何配置凭证新鲜窗口?

在插件配置中设置 `maxAgeMinutes`,默认 10 分钟。例如,在自定义 profile YAML 中:`- id: ankh-guard name: '@khorsheed/dsh-ankh-guard' config: maxAgeMinutes: 30`。这决定了记录的凭证在过期前保持有效的时间。

restart 和 schedule-exit 有什么区别?

`restart` 在单个 CLI 进程中完成整个重启循环(kill、start、probe、canary),适合不需要 detached watchdog 的场景。`schedule-exit` 写入重启标记并派生一个 detached 退出代理,触发 watchdog 重启实例。当你想实现无人值守恢复,让 watchdog 处理重启(包括金丝雀检查和失败回滚)时,使用 `schedule-exit`。