MCP 能力插件
上级:capabilities
本页是能力平面——StandMeet 作为 MCP 宿主(参见 confusables)。指 agent 的外部工具/技能(retrieval、booker、summarize、ask_visitor,加上所有者注册的 ext-mcp)。已经是插件形态——两条插件轴线之一(另一条是 connector-plugins;两条轴线只在 connector-deps 处相交)。
- 沙箱化:每个能力都跑在一个 bubblewrap 命名空间里,
--unshare-net(网络隔离),只能通过每个能力一条的窄 unix socket(/run/standmeet/<cap>.sock)触达宿主。ask_visitor干脆没有 socket——完全离线。(cmd/server/axiscap/register.go负责注册;internal/capabilities/sandbox/是 bwrap 运行器;内建 manifest 是纯数据,放在backend/capabilities/<id>/manifest.yaml,由backend/capabilities/loader.go加载。) - 内建等同第三方:内建能力是静态二进制文件,走的是与第三方插件完全相同的 sandbox_stdio 路径加载;约束契约是一份 manifest 加 MCP 协议,而不是 Go 的 import。
- Manifest 的
Requires:一个能力声明自己的依赖项(calendar.book→requires: [calendar],mail.send→[smtp]);宿主在启动时校验这些依赖(axiscap/register.go:97),若某个依赖未连接就收紧暴露范围——这正是 prompt-injection-is-buffer-overflow 里的 Android-manifest 模型。第二层按工具的VisitorToolRequires(工具 → 带动作限定的依赖,如calendar:events.insert,F-B-8)只隐藏那条连接做不到的那个工具,而不是整个能力。
类视图
Transport.Kind 选择传输方式(stdio 子进程 / http / 进程内);Sandbox.HostOps 按名字点出 capsocket 回连通道要提供的 host op(固定词表在 routes/hostdesk)——socket 的路径由宿主从插件 id 推导,从不在 manifest 里声明(hostdesk 落地时从 HostSockets 改名,2026-08-01,5cb8d8464);Requires 是 connector-deps 的输入;PromptFragmentID 是 prompt-hash 回归测试的输入。
一个能力如何在不让 LLM 能够伪造的前提下拿到本次会话的可信作用域 → trusted-identity-via-meta。