2026-09-23·by Sijie Wang#standmeet#architecture#design

mcp-capability-plugins

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.bookrequires: [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);Requiresconnector-deps 的输入;PromptFragmentID 是 prompt-hash 回归测试的输入。

一个能力如何在不让 LLM 能够伪造的前提下拿到本次会话的可信作用域 → trusted-identity-via-meta

mcp-capability-plugins