# 安全的自动化模式

安全的 AI 自动化都让人留在写入那一刻：助手提议、人确认，默认只读、单账号可写，或 AI 起草脚本、人来执行。

最后校对于 2026-10-10

这页只讲一条边界：你放手让 AI 改多少，以及靠什么拦住「改错了变成故障」。 结论很短——安全的模式都是「写入那一刻人还在环里」的模式。 这件事夜莺在一个入口上是强制的，在另外两个上要靠你自己。

## 三个入口，三种写入姿态[​](#三个入口三种写入姿态 "三个入口，三种写入姿态的直接链接")

| 入口     | 能写吗             | 模型和数据库之间隔着什么                          |
| -------- | ------------------ | ------------------------------------------------- |
| 内置助手 | 能，一小撮         | 每次修改都有服务端的确认卡片；创建缺信息时弹表单  |
| `/mcp`   | 打开写工具之后才能 | 调用时什么都没有——写工具第一次调用就落库          |
| `/a2a`   | 它就是内置助手     | 同样的确认，只是那句确认得由调用方的 Agent 发出来 |

有一条它们共同的性质，值得说明白：**任何地方都没有删除工具。** 助手的工具箱里没有，MCP 的工具清单里也没有。AI 对一条规则、一个仪表盘、 一个用户能干出的最坏的事是把它改了——所以这里「谁改的」比「谁删的」重要得多。

## 模式一——助手提议，你确认[​](#模式一助手提议你确认 "模式一——助手提议，你确认的直接链接")

这是默认，也是首选，因为门开在服务端，不是写在提示词里等人绕过去。

覆盖的是那些修改已有对象的工具——告警规则、仪表盘、屏蔽规则、通知规则、订阅规则—— 再加上 Skill 编写。每一个都分两条腿：

1. **提议。** 工具把改动算出来，用一个一次性的 id 存下，**不落库**。 这一轮以一张列出「会改什么」的卡片结束，文案由工具自己写，模型软化不了它。
2. **确认。** 只有你在**下一轮**回复，改动才会按存下来的内容重放执行。 模型不再被问一次，所以它没法在给你看 diff 和真正写入之间偷偷改掉内容。

提案有三条边界，都是刻意的：

* **30 分钟**过期；
* 只能确认**一次**——再确认一遍就找不到可执行的东西了；
* 提议时会给对象状态按指纹留底，**这期间被别人改过的话，确认会被拒绝**， 而不是把别人的修改盖掉。

创建类的处理方式不同，但用意一样：创建工具缺了不该猜的信息——业务组、团队—— 它不会随便挑一个，而是返回一个下拉，等你选。

## 模式二——默认只读，一个账号能写[​](#模式二默认只读一个账号能写 "模式二——默认只读，一个账号能写的直接链接")

`/mcp` 上没有确认卡片，所以边界得用账号和配置搭出来。有效的做法是：

* 每个客户端一个最小权限账号、一个自己的 Token，出了事能追到具体哪个集成 （[个人 Token 认证](https://n9e.github.io/zh/docs/ai/token-auth.md)）；
* 写工具保持关闭，除非某一个客户端确实需要；即使需要，也把工具集收窄到它真用的那些， 并且把 `users`、`roles` 摘掉（[安全地启用写工具](https://n9e.github.io/zh/docs/ai/write-tools.md)）；
* 账号的业务组归属才是影响面的真正上限，因为它对读和写一视同仁 （[权限继承与 RBAC](https://n9e.github.io/zh/docs/ai/permissions.md)）。

如果你想要的其实是「让 AI 帮我改配置」，注意内置助手已经在做这件事，而且带确认步骤。 为了同一个结果去打开 MCP 写工具，等于把这个确认换掉了。

## 模式三——AI 起草脚本，人来执行[​](#模式三ai-起草脚本人来执行 "模式三——AI 起草脚本，人来执行的直接链接")

告警自愈是最想自动化、也最危险的场景，所以有必要把开源版到底做什么说准。

**助手能读你的自愈脚本，也能把新脚本作为文本写出来。** 它对脚本库有读权限， 并且有一个专门写脚本的内置 Skill：

> 帮我写一个磁盘清理的自愈脚本

> 自愈脚本怎么从 stdin 拿告警字段？

**但它建不了脚本，也跑不了脚本。** 这两件事都没有对应的工具。 把脚本存下来、在机器上执行，完全留在**告警通知 → 告警自愈**里， 按那边既有的管控走——见[用 ibex / webhook 做告警自愈](https://n9e.github.io/zh/docs/events/self-healing.md)。

这个分工就是这个模式本身：模型产出一份你看得懂、审得动的方案，人来落地， 执行链路上从头到尾没有模型。

## 值得刻意设一下的护栏[​](#值得刻意设一下的护栏 "值得刻意设一下的护栏的直接链接")

| 护栏                                              | 在哪                                                                                                                |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `/mcp` 上写工具保持关闭——默认就是关的，别动它     | `[HTTP.A2A]` 下的 `MCPEnableWriteTools`                                                                             |
| 任何要写的客户端都把 `users`、`roles` 摘掉        | `MCPToolsets`                                                                                                       |
| 注册了 SQL 数据源就把 `logs` 摘掉                 | `MCPToolsets`，理由见[权限继承与 RBAC](https://n9e.github.io/zh/docs/ai/permissions.md)                             |
| 宁可拒绝执行 Skill 脚本，也不要在没隔离的情况下跑 | `[Center.Sandbox]` 下的 `RequireIsolation`，见[安装、管理与编写 Skills](https://n9e.github.io/zh/docs/ai/skills.md) |
| 别把 AI 账号放进它不该看的业务组                  | **人员组织 → 团队管理**                                                                                             |
| 永远不要给 AI 账号 `Admin` 角色                   | 它会整个绕过业务组这一层                                                                                            |

## 改了什么怎么查[​](#改了什么怎么查 "改了什么怎么查的直接链接")

三条线索，按费劲程度排：

**对象本身。** 经助手或经 MCP 改过的东西，「更新人」字段里是那个操作账号的名字， 和在界面上改完全一样。列表页就能看到。

**对话本身。** 助手改过的东西，提案卡片和你的那句确认都留在对话记录里， 按用户存着而且不过期——所以「我到底批准了什么」几个月后还答得上来。 见 [Agent 与对话历史](https://n9e.github.io/zh/docs/ai/agents.md)。

**日志。** 每一个 `/mcp` 请求都记了工具名、参数和操作人；每一次 Skill 脚本执行 都记了隔离级别和退出码。细节和可以直接用的 grep 命令在 [安全地启用写工具](https://n9e.github.io/zh/docs/ai/write-tools.md)。

## 它不会自己做的事[​](#它不会自己做的事 "它不会自己做的事的直接链接")

开源版里，**每一个 AI 动作都由某个人在某个对话里发起**。没有定时任务， 没有无人值守的执行，也没有任何工具会在被监控的机器上执行命令。 唯一会跑代码的是 Skill 脚本，它只在你发起的那一轮里被模型调用， 而且你可以直接配置成拒绝执行——还是那句，见[安装、管理与编写 Skills](https://n9e.github.io/zh/docs/ai/skills.md)。

## 下一步[​](#下一步 "下一步的直接链接")

* 确认机制在整体里的位置：[Nightingale AI 概览](https://n9e.github.io/zh/docs/ai/nightingale-ai.md)
* MCP 的写开关：[安全地启用写工具](https://n9e.github.io/zh/docs/ai/write-tools.md)
* 让一轮对话保持只读的提示词：[常见排查工作流](https://n9e.github.io/zh/docs/ai/workflows.md)
