安全边界与日志记录

每一次代理写入共用的那些出口、校验和锁,以及每一次动作留下的那条痕迹。

以 Markdown 查看

代理不是进入工作站的第二条路。每一次调用都落在那些页面所调的同一段代码里,受同样的锁约束,也留下和操作员动作一样的痕迹。

每一次写入共用的安全边界

  • 和界面共用同样的出口。 配置类的写入走的是和那些页面一样的下发与用例服务,实时写入搭的是那唯一一条逻辑队列,而运行控制搭的是 Process 的生命周期。不存在一条平行的通路,能让代理绕开校验、锁或者日志记录。
  • 和编辑器一个级别的校验。 upsert 类工具把传进来的参数合并到已有的声明之上,再用编辑器所用的同一批规则去校验合并之后的草稿。一次被拒绝的 upsert 不会留下任何做了一半的东西。
  • 工程锁定同样生效。 有一个 Process 单元在运行期间,配置类改动会被拒绝,返回一个结构化的“有单元在运行时,配置被锁定”结果,并点名要先结束什么,和那些页面拒绝它们的方式一模一样。
  • 运行时停止时是只读的。 工作站运行时停止时,只有查看、状态、列表、报告导出、备份快照和界面定位(ui_stateui_navigateui_screenshotui_scroll)还能用;每一次会改动东西的调用都答 Runtime stopped,哪怕它那个范围的开关是开着的。将来新加的工具在被有意归类为只读之前,一律按拒绝处理。
  • 破坏性的工具被标出来。 那些会给设备下命令或者毁掉数据的工具(tag_writeaction_runprocess_recipe_applyprocess_startprocess_resume、各种删除、server_stop,等等)带着 MCP 的破坏性标志,所以即使是那些会自动批准安全工具的客户端,遇到这些也还是会先问一声。

代理的动作怎样记进日志

代理做的每一件事,都在你本来就会去看的那些地方,留下和操作员动作一样的痕迹:

  • 端点的生命周期、代理那一侧的每一次配置改动,以及每一次被拒绝的浏览器探测,都记在事件控制台的代理区域下面(logs_read 可以直接按它筛选)。
  • 逻辑队列上的实时操作(变量写入、点位写入、动作运行、报警确认)以来源 MCP 记进日志,和从界面上做的同样那些操作并排。
  • 代理启动、停止、中止或者加了备注的那些运行,在运行记录文件里和历史里都把代理记为执行者,这样绝不会把某个人的名字安在他没做过的事情上。
  • 那份常驻的事件历史对代理来说只能追加:event_history_read 既清不掉也删不掉任何东西。