能力(Capabilities)——图表覆盖(组装侧 vs 消费侧)

更新于 · 在 sijie.xyz 查看原条目 ↗

与 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(散文形式) ☐ 无类图

相关笔记