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

capsocket

capsocket — one narrow socket per capabilitycapsocket——一个能力一条窄 socket

Parent: capabilities

沙箱化的内置插件(summarize / retrieval / booker / mail-sender;ask-visitor 同样在沙箱里,但没有声明任何 host op,所以根本没有 socket)在网络隔离(--unshare-net)下运行,通过每个能力一条 unix socket/run/standmeet/<id>.sock,由 hostop.SocketPath 推导——internal/infra/hostop/op.go)触达宿主数据,走 newline-JSON 线协议(internal/capabilities/capsocket/server.go)。要点在于:每个能力只看得见自己那一小片 API 面,而不是一个通用后端——被攻破插件的爆炸半径就是一条 socket 上的那几个动词。对比:通用 HTTP 回环会把整个管理面拱手交给每个插件。

自 2026-08-01(5cb8d8464)起,动词不再按能力手工接线:manifest 从一份固定词表里按名字点单(host_ops,如 conversation.readconnector.invokecapstore.*),入站收口点 internal/routes/hostdesk 按这份声明为每条 socket 提供服务——不认识的名字在启动时就失败,而不是等 owner 点到才失败。

Cross-links: sandbox-js-hardening, mcp-capability-plugins.

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

capsocket