Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Agent → 浏览器 push 合同

“push 合同” 指的是:一个能驱动浏览器的 agent (chrome-mcp、playwright-mcp、或任何能在页面里执行 JS 的工具) 通过共享的 window.aegis.* 命名空间把数据推进 /ops/*, 而页面拿到数据之后做什么 —— 这两端的契约。

目前有两份合同。两份合同走同一条传输路径 (evaluate_scriptwindow.aegis.<method>(payload) → localStorage → 自定义事件 → 页面重新渲染), 负载形状不同、落点不同。

资产复盘 (maker-stats)Plugin Push
Push 方法window.aegis.importMakerStats(snapshot)window.aegis.publishPlugin(pkg) + activate / deactivate / rollback
负载MakerStatsSnapshot —— 6 字段的本周汇总SignedPluginPackage —— manifest + 摘要
localStorage keyaegis.maker-stats.snapshotaegis.plugins.registry
事件aegis:maker-stats:updatedaegis:plugins:updated
落点/ops/funnel-review/ops/plugins
agent 在产出什么espctl deposit list --json 的本周资产汇总把刚编译好的 WASM 插件推进 registry
频率每次进 /ops/* 都推一遍每编出一个新插件 / 每次 lifecycle 动作

两个落点都是 浏览器本地 —— 数据只在这个浏览器的 localStorage 里,服务端没有账本,没有上传,没有跨用户可见性。


共用底座 —— window.aegis.*

应用启动时挂载,幂等,任何路由下都能用:

// maker-stats 合同
window.aegis.importMakerStats(snapshotJson | snapshotObject)
window.aegis.getMakerStats()
window.aegis.clearMakerStats()

// plugin 合同
await window.aegis.publishPlugin(signedPluginPackage, actor?)
window.aegis.activatePlugin(pluginId, version, options?)
window.aegis.deactivatePlugin(pluginId, version, actor?)
window.aegis.rollbackPlugin(pluginId, version, actor?)
window.aegis.getPluginSnapshot()
window.aegis.clearPluginRegistry()

两个 push 方法都对输入做严格校验,负载不合法直接拒绝并 返回 { ok: false, error: '<reason>' }。写入成功后会派发 对应的 aegis:*:updated 自定义事件,/ops 页面实时重渲染。


共用信任模型

  • 同源限定。一次 window.aegis.* 调用只会写入 这个 源的 localStorage。agent 驱动到别的源,就是另一个沙箱。
  • agent 即发布者。没有公钥签名,没有 CA。 对插件路径做 crypto.subtle.digest('SHA-256', ...) 摘要校验 证明的是完整性而非身份 —— 在 “发布者就是 maker 自己的 自动化” 的前提下,这种强度刚好够用。
  • 不共享 registry。同一台机器上两个浏览器各自独立的快照、 独立的 plugin registry。

agent 维护契约 —— 每次访问都刷新

这条规则对 两份合同 都适用。把 localStorage 当成刚被清空过来对待: 缓存可能被浏览器在压力下回收、用户可能手动清过站点数据、 也可能是同一份链接在另一个浏览器里被打开。 在读 /ops/* 任何内容之前,先用对应的 window.aegis.* 方法 把新鲜状态推进去。

完整协议 (maker-stats 版本) 见 每周资产复盘 —— Agent maintenance contract。 plugin-push 版本对称 —— 同样的 evaluate_script 流程, 不同的负载 + 不同的 window.aegis.* 方法。


该用哪份合同

  • 想推这周的资产汇总,让 /ops/funnel-review 渲染工作周报 Markdown?资产复盘 (maker-stats)
  • 想把刚编出来的 WASM 插件推上去,让接下来的 ESPCTL MCP / Build Lab 编译会加载它?Plugin Push

两页内容自洽,根据当下任务挑一份读,互不依赖。