页面之外
同一个业务页面分成三个工作区:Todo 本体、协议检查器,以及公网 Surface。Codex、Claude、Hermes Agent 或 WorkBuddy 通过 HTTPS MCP 接入,记录、审批与业务处理仍留在页面内。
pnpm dev:examples源码 examples/demos/external-agent-surface/页面 https://plingjs.dev/demos/external-agent-surface/?lang=zh直接打开 案例 05 线上页面。页面分成三个工作区:
describe / invoke,观察外部客户端实际收到什么。这个案例不再挂页面聊天助手。它要展示的是第三方 Agent 如何进入同一组业务能力,而不是页面内助手的对话体验。
公开案例当前把页面会话和 Agent token 的最长有效期都设为 24 小时。页面关闭、刷新、主动撤销或到期后,token 会立即失去对当前页面的操作能力。
这里没有“线上页面 + 本机 WebSocket”的写法:浏览器会拦截公网 HTTPS 页面访问本机回环端口,报 ERR_BLOCKED_BY_LOCAL_NETWORK_ACCESS_CHECKS。线上案例走公网网关,本地开发才使用回环桥。
页面里的四个标签页分别给出 Codex、Claude、Hermes Agent、WorkBuddy 的接入方式。它们连的是同一个 HTTPS MCP 端点,也共享当前页面的六项能力。
export PLING_AGENT_TOKEN='页面上的 token'
codex mcp remove pling-todo 2>/dev/null || true
codex mcp add pling-todo \
--url https://surface.hunger-valley.com/mcp \
--bearer-token-env-var PLING_AGENT_TOKEN
codex --no-daemoncodex --no-daemon,避免连接到之前启动、没有这枚 token 的共享 daemon。pling_surface_describe,再调用返回的能力。例如:先描述当前 Todo 页面,然后新增“准备客户演示”,再把第一条未完成事项标记为完成。
export PLING_AGENT_TOKEN='页面上的 token'
claude mcp remove pling-todo >/dev/null 2>&1 || true
claude mcp add --transport http pling-todo \
https://surface.hunger-valley.com/mcp \
--header "Authorization: Bearer $PLING_AGENT_TOKEN"
claude如果你的 Claude 版本使用 Connectors 界面,选择远程 MCP,填入同一个 URL 与 Authorization 请求头即可。
在客户端的 MCP / 连接器设置里新增远程 HTTP(也可能叫 Remote MCP 或 Streamable HTTP)服务,名称为 pling-todo,填入页面上的 URL 与 Authorization: Bearer <token>。如果客户端接受 mcpServers JSON,页面也提供了可直接复制的配置。
不同客户端的菜单名称与版本有关,MCP 端点、请求头和权限边界相同。
如果要使用 Codex 桌面版的 /mcp 面板,先完全退出 Codex,再执行 codex app-server daemon stop,然后从已经设置 token 的终端重新启动。 --no-daemon 的 CLI 路径是验证接入最可靠的方式。
这是公开案例的便捷模式:token 会出现在页面 DOM 中,页面脚本、浏览器扩展或截图工具都可能读到它。生产环境应改用 OAuth 或设备授权,不要把长期凭证留在页面里。网关仍然不向 Agent 暴露 DOM、脚本执行、Cookie 或模型密钥。
@plingjs/surface 负责能力投影、describe、invoke、会话与审批边界。services/surface-gateway 负责公网传输、页面会话、Agent token、撤销与审计。click(selector)、脚本执行或代审批工具。