能力(Capabilities)——图表覆盖(组装侧 vs 消费侧)
与 connector-diagram-coverage 采用同样的双侧切法:组装侧(能力如何按会话注册并暴露出来)与消费侧(loop 实际持有什么)。插件加载相关的类型放在 mcp-capability-plugins;skills runner 的类型放在 skills-progressive-disclosure;前端卡片类型放在 ui-cards。
1 · 组装侧——注册表、门控、会话上下文
classDiagram
class Capability {
<<interface - capreg>>
+ID() string
+Shape() Shape
+VisitorBinding(ctx, *AssembleInput) (*Binding, error)
+OwnerMCPBindings() []*MCPBinding
+SystemPromptFragment(ctx, *AssembleInput) string
+SystemPromptFragmentID(ctx, *AssembleInput) string
}
class Registry {
-caps []Capability - deterministic order, prompt hash depends on it
-seen map[string]bool
-origin map[string]Origin
-gate EnableGate
-depReg *DepRegistry
-alwaysGranted []string
-mu sync.RWMutex
+SetEnableGate(g)
}
class AssembleInput {
RoleSnapshot *access.RoleSnapshot
OwnerID, Mode string
Subject Subject
Visitor access.VisitorProfile
ConversationID string
}
class EnableGate {
<<func type>>
func(ctx, ownerID) map[string]bool
the LIVE global layer
}
Registry o-- Capability : fixed order
Capability ..> AssembleInput : per session
Registry ..> EnableGate : exposure
AssembleInput 是一项能力(capability)所能看到的完整会话上下文——它携带冻结的 RoleSnapshot,因此每一次绑定决策,都是针对这份冻结快照做出的;EnableGate(那一层实时的全局层)是唯一的实时输入。(成员已于 2026-09-07 对照 internal/capabilities/capreg/types.go / registry.go 核实:原来的 CodeID / MaxBookings 字段已不存在——code 身份现在以 Subject 传递,预约上限是能力自己 manifest 里的一个配置键(backend/capabilities/calendar.book/manifest.yaml 的 max_bookings)。)
2 · 消费侧——一次会话实际持有什么
classDiagram
class Binding {
Close func()
ClaimGate *ClaimGate
Tools []BindingTool
State CapabilityState
}
class CapabilityState {
ID, Title string
PolicySummary string
Enabled bool
QuotaRemaining *int32
Extra json.RawMessage
}
class VisitorAgent {
<<agentcore - the loop-facing product>>
Labels map[string]string
ReturnDirectly map[string]bool
SystemPrompt string
Tools []tool.BaseTool
}
Binding *-- CapabilityState
VisitorAgent o-- Binding : assembled tools
覆盖清单(防遗漏关卡)
| 类型 / 区域 | 绘制位置 | 已验证 |
|---|---|---|
| Capability, Registry, AssembleInput, EnableGate | 本页 §1 | ✓ 代码 |
| Binding, CapabilityState, VisitorAgent | 本页 §2 | ✓ 代码 |
| Manifest / Transport / Sandbox / PluginSpec | mcp-capability-plugins | ✓ 代码 |
| skillRunnerCapability + tool inputs/outputs | skills-progressive-disclosure | ✓ 代码 |
| cardKindFor / McpAppCard / GenericDumpCard | ui-cards | ✓ 代码 |
| mcpclient transports(http / in-process / stdio) | ☐ 尚未绘图 | — |
capsocket server + hostdesk 的 op 收集(hostop.Op、routes/hostdesk) |
capsocket(散文形式) | ☐ 无类图 |