msradam/xanthe-incident-agent

GitHub: msradam/xanthe-incident-agent

一个基于状态机门控的事件响应 Agent 框架,通过约束 AI 操作顺序来确保事件处置流程合规且全程可审计。

Stars: 0 | Forks: 0

# Xanthe 事件 Agent 一个在**既定轨道上**驱动 runbook 的事件响应 Agent。流程是一个普通的 [XState](https://stately.ai/docs/xstate) 状态机,作为 MCP server 由 [Xanthe](https://github.com/msradam/xanthe) 挂载,而 Agent 只能执行状态机 允许的操作。分工如下: - **状态机**拥有流程(你不能在诊断前进行缓解,在恢复验证前解决,或者在撰写事后复盘之前关闭事件), - **Agent**提供判断(假设、根本原因、缓解措施), - **账本**是审计跟踪(每一步和每一个被拒绝的步骤,通过哈希链串联)。 ![Claude 在既定轨道上驱动 runbook](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b0d99ec0ef093058.gif) 过早的 `resolve` 会被服务器拒绝,而不是听凭模型的判断,并且该拒绝会被记录下来。当事件被 `closed` 时,状态机的上下文就是一份完整的 事后复盘,这是作为强制执行正确顺序的副作用而生成的。 ## 运行它 ``` npm install ``` ### 离线(确定性策略,无需 API key) ``` npm start ``` 脚本化策略会遍历相同的门控 runbook 直至解决,并验证账本。 ### 配合 Claude ``` npm run agent # or: MODEL=claude-opus-4-8 npm run agent ``` 使用 [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/overview), 通过你现有的 Claude Code 登录进行身份验证(无需 API key)。Xanthe 服务器被 注册为 MCP server,因此 Claude 只能通过门控的 `step` / `state` 工具进行操作:它读取状态,描述每一步操作,从拒绝中恢复,并撰写事后复盘。 它始终受到 runbook 的约束。 ## 运行效果 ``` gate check: resolve before mitigating -> refused (legal here: triage) driving the runbook: detected triage -> triaged triaged page_oncall -> engaged engaged form_hypothesis -> investigating ... resolved write_postmortem -> closed final state: "closed" (terminal: true) postmortem assembled by being forced through the runbook: { ...severity, rootCause, ... } ledger: intact (10 entries, including the refused gate check) ``` ## 运行手册 `machine/incident-runbook.ts` 是普通的 XState。你可以编辑它,或者将 Agent 指向你自己的 runbook。Xanthe 在挂载时会对其进行验证,并拒绝会自动推进的机器,因此它始终是一个 由 Agent 逐个决策驱动的门控流程。 ## License Apache-2.0。
标签:AI智能体, MITM代理, 库, 应急响应, 状态机, 自动化攻击, 自动化运维