Skip to content

扩展地图 ​

Keel 只有两种扩展哲学,适用哪一种取决于你要改的是什么类型的东西:

  1. 协议/原语级变更(新的执行原语、新传输、新事件 kind、新 loop 实现)属于仓内、规格先行的 工作:触及内核或协议包,必须走仓库的 OpenSpec 流程。
  2. 装配/策略级变更(用哪个 provider、哪些工具、哪些服务、哪个外部 backend)属于配置与服务图 工作,不改账本。

选接缝之前,先记住可见性规则:运行时包全部在 internal/ 下,因此只能被本模块内的代码 import。 「嵌入 runtime」因此意味着在本仓检出(或 fork)里工作——见嵌入 runtime。

决策表 ​

我想……接缝页面
在自己的进程/二进制里跑核心internal/servicehost.Boot + 内核窄接缝,或 fork 里新增 cmd/嵌入 runtime
增加或替换一个服务(provider、投影、压缩、遥测……)servicegraph.ServiceDescriptor + loadout.Config.Provide写一个服务描述符
替换 agent loopagentloop.Loop 契约 + 钉住的 PI conformance manifest(fail-closed)写一个服务描述符
对接外部 agent runtime(自己拥有会话状态的 sidecar)外部网关上的 AgentBackend(external.backends)接外部 backend
暴露外部工具服务ToolProvider(external.tools)接外部 backend
加模型 provider 或换协议provider.StreamFn + provider.ResolveProvider写 provider 适配器
给模型加一个工具agenttool.ToolRegistry(内核侧)或宿主 registry(受 tools.allow 过滤)嵌入 runtime
加产品能力(插件、hook、触发器、子代理、审批)Harness 扩展面(当前实现 internal/agentext;插件标准在 Harness 主线)Harness 插件
加新事件 kind仓内变更:kindRegistry + internal/store 常量 + 转录/SSE/R1 规则同步移动事件与协议
改存储或加表仓内变更:internal/store/schema.sql 或带编号的内核迁移存储与运行
做 UIHarness API + SSE(版本化 /v1,能力探测)AgentAPI 参考

两条硬规则 ​

服务可以换,但服务不能改账本。 服务拿到的是窄接缝(kernel.Committer、kernel.Reader、 kernel.LeaseManager、kernel.ExternalSessions,internal/kernel/seams.go)并提交提案;内核决定什么 成为事实。如果你的变更需要写 events、分配 seq、调整提交顺序或绕过租户/租约校验,那你改的是内核—— 那意味着规格、迁移编号与 R1 差分门,而不是插件。

Conformance 门是 fail-closed 的。 任何提供 ctx.loop 的服务都必须给出 PI conformance manifest, 其规范哈希与其 pin 相等;缺声明即拒绝,而不是「默认通过」。替换 loop 就要跑通测试套件并显式声明 (internal/loadout/conformance.go:55、internal/loadout/conformance.go:18)。

改动落在哪里 ​

变更你动的文件必须跑的门
新服务描述符internal/loadout/*、你的工厂、测试go test -race ./internal/loadout ./internal/servicegraph ./internal/servicehost;默认装配变了还要跑 scripts/acceptance-all.sh
新 loopinternal/agentloop 实现 + 声明PI conformance 套件 + R1 差分 + loop conformance 门
外部 backend租户文档(external.backends)+ 一个 provider 进程go test -race ./internal/gateway ./internal/externalgw + scripts/external-gateway-smoke.sh
provider 适配器internal/provider + 注册表条目provider 流测试;有凭据则跑真模型 E2E
新事件 kindkindRegistry、store 常量、转录/SSE/R1 规则R1 差分(白名单之外零差异)+ 完整 acceptance-all.sh

这些门本身见测试与验收。

Apache-2.0(自 pigo 搬运的文件保留 MIT 声明)