接入外部 AI 客户端时,备份升级这类高危操作为什么要单独开关

接入外部 AI 客户端时,备份、升级、多站点这类全站级操作要单独设开关,原因是调用方从「坐在后台的人」变成了「按意图自主编排的客户端」,一旦能力被一次性全部暴露,一条错误指令的影响面就不再是单篇内容,而是整站数据。AnQiCMS 内置的 MCP Server 按意图域设置暴露范围,高危域默认关闭、需要显式开启,再配合回合级操作审批,把「能调用」和「能落地」分成两道门。

为什么不能把所有能力一次性开放

人在后台操作时,风险被界面本身挡住了:删除入口藏在二级页,全站替换要先选范围,升级按钮背后有确认弹窗。这些拦截依赖的是「有人在看屏幕」。

外部 AI 客户端接管后,这个前提消失了。客户端会根据可用能力的描述自行决定下一步调用什么,它在一次任务里可能连调好几个接口。如果所有能力都在同一个暴露面上,任务里任何一步的理解偏差都会直接落到生产数据上,而且中间没有人可以再拦一次。

单独开关的意义在于把决策权留在站点这边:哪些域对外可见由运维决定,而不是由客户端的任务描述决定。

默认关闭的高危域有哪些

按影响范围划分,全站级操作默认关闭(DefaultOff),包括数据备份与恢复、系统升级、多站点管理这类改动全局状态的能力。内容域的读取类能力默认开放,比如文档列表与详情、分类与标签的查询,这些在接口文档里都有对应的 API 调用说明,属于低风险只读面。

判断某个域该不该默认关闭,看两点就够:一是失败后能不能自行恢复,二是影响的是单条数据还是全站。备份与升级两条都不满足——恢复要靠已有备份文件,影响的是整库,所以归到高危域;上传图片属于单条资产写入,出错的后果可以定点修。

回合级审批改变了什么

即便高危域被显式开启,也不等于写操作会立刻执行。MCP 支持回合级操作审批:一个回合里客户端产生的写操作会被合并成一次确认,由人批准后再落库,意图目录负责把这些操作按域归类、统一描述。

这带来三个实际变化:批量写入不会拆成十几次单独确认,人看的是一个汇总动作;确认时能看到操作的完整范围,包括会影响多少条文档;被拒绝的操作不会半途执行,回合整体回退。

配合 Bearer 鉴权,接入面还多一层控制:不同客户端可以发不同凭证,出现异常调用时能定位到具体接入方,而不是所有请求共享一个入口。

接入前的权限盘点清单

开启外部客户端接入前,建议按这份清单过一遍:

先列任务。把希望客户端完成的事写下来,比如按关键词检索文章、批量补标签、生成栏目页文案。任务列表决定需要开放的域,列不出任务的能力就不开。

再分读写。同一域里的查询与写入分开看,只读需求不要顺手开写权限,客户端拿到写权限就可能主动去改。

然后试跑。先在测试实例上按清单跑一轮真实任务,观察客户端实际调用了哪些能力,把清单外被调用的能力关掉。

最后留痕。确认每次操作的审批记录能查到发起方与时间,出问题时需要能回答「这条改动是谁在哪个回合批准的」。

暴露范围对照表

操作类型 默认状态 开启后仍需
文档列表与详情查询 开放 无
分类、标签读取 开放 无
文章写入与批量改标签 按域控制 回合级审批
数据备份与恢复 关闭 显式开启加审批
系统升级 关闭 显式开启加审批
多站点管理 关闭 显式开启加审批

常见问题

全部关闭高危域,客户端还能干活吗? 能。日常内容任务落在读取与单条写入面上就够,高危域关闭不影响发文、检索和标签维护。

已经开启的域能不能临时关掉? 可以。暴露范围按域调整,临时窗口结束后收回,比长期开放安全。

审批会不会拖慢批量任务? 一个回合合并成一次确认,批量操作只确认一次,主要耗时在确认前的范围核对。

接入方换了客户端要不要重新发凭证? 建议轮换。旧客户端持有的访问凭证撤销后重新签发,避免历史接入方还能继续调用。