跳到主要内容

契约地图设计

# 契约地图设计

修订记录

版本日期修订说明
v0.12026-05-01建立当前设计基线;延续 kunora-wiki 作为 llm-wiki 方案的既有产品封板和工程设计,不推倒重来。

1. 文档目标

本文定义 kunora-wiki 自研模块之间共享契约的地图,包括契约名称、稳定级别、owner、producer、consumer、持久化位置和变更规则。

本文只定义契约关系,不定义字段明细。字段、类型、版本和兼容策略由 03-data-structures.md 统一定义。

2. 契约分类

分类说明典型使用者变更要求
Public Contract对前端、外部 agent、workflow 或运维可见的稳定契约Docusaurus、外部 agent、GitHub workflow、维护者必须版本化;破坏性变更需要迁移方案和兼容窗口。
Internal Contract自研模块之间传递的内部契约ConfigManager、WorkspaceStore、SyncEngine、AgentBridge 等需要 owner 审批和 contract test;producer/consumer 必须同步更新。
Adapter Contract自研系统访问外部产品时的隔离契约GitHub、Docusaurus、RAGFlow、Meilisearch adapter不能泄漏外部 SDK 私有结构;外部变化必须在 adapter 内吸收。

3. 契约生命周期

生命周期规则:

状态进入条件允许使用
Draft只在设计讨论中出现不允许实现依赖。
Proposed已进入本文档,但字段尚未完整定义允许模块设计引用,不允许实现硬依赖。
Design-Stable已在 03-data-structures.md 完成字段定义,owner/producer/consumer 清晰,但 schema/fixture 仍待实现允许作为实现基线和代码生成输入;实现 PR 必须补 schema/fixture 或声明延后原因。
Stable已有字段定义、fixture、contract test 或 golden case允许实现依赖和生产使用。
Deprecated有替代契约,并保留兼容窗口不允许新增依赖。
Removed兼容窗口结束不允许引用。

4. Public Contract 地图

契约OwnerProducerConsumer持久化/入口状态
AnswerRequestAnswer APIDocusaurus / Agent Access API / 外部调用方Answer APIPOST /answer/askDesign-Stable
AnswerResultAnswer APIAnswer APIDocusaurus、Agent Access API、外部 agentHTTP response、audit logDesign-Stable
AnswerSessionAnswer APIAnswer APIAnswer API、调用方session store / short-lived stateDesign-Stable
EditContextWorkspaceStore / DisplayBackend AdapterWorkspaceStore / DisplayBackend AdapterDocusaurus、ReviewBridge、IssueTrackerpage manifest / Docusaurus metadataDesign-Stable
AgentToolRequestAgent Access API外部 agentAgent Access APIPOST /agent/tools/*Design-Stable
AgentToolResultAgent Access APIAgent Access API外部 agentHTTP response、audit logDesign-Stable
ContextPackAgent Access APIAgent Access API外部 agent、AgentBridgeHTTP response / task inputDesign-Stable
FeedbackRequestAgent Access APIAnswer API、Agent Access API、前端Agent Access API FeedbackBridge、IssueTrackerHTTP request / Issue payloadDesign-Stable
ImprovementTaskRequestAgent Access APIAgent Access API、Answer APIIssueTracker、AgentBridgeHTTP request / Issue payloadDesign-Stable
PublishImpactReportDisplayBackend Adapter / ReviewBridgepublish dry-runReviewBridge、维护者state/publish-impact-report.json、PR bodyDesign-Stable
PageManifestWorkspaceStore / DisplayBackend Adapterpublish workflowDocusaurus、Index Adapter、Answer API、Agent Access APIstate/page-manifest.jsonDesign-Stable
PublishManifestDisplayBackend Adapterpublish workflowIndex Adapter、Answer API、Agent Access API、drift checkstate/publish-manifest.jsonDesign-Stable
SiteManifestDisplayBackend AdapterDisplayBackend AdapterReviewBridge、drift check、维护者state/site-manifest.jsonDesign-Stable
IndexManifestIndex AdapterIndex AdapterAnswer API、Agent Access API、drift check、维护者state/index-manifest.jsonDesign-Stable

Public Contract 规则:

  • HTTP 契约必须带 schemaVersion 或等价版本标识。
  • 对外 response 必须包含可追踪字段,例如 requestIdrunId
  • 对外错误必须使用标准错误结构,不能直接暴露底层异常。
  • manifest 必须记录生成它的 Git commit 或 publish run id。

5. Internal Contract 地图

契约OwnerProducerConsumer持久化/入口状态
SourceConfigConfigManagerConfigManagerSyncEngine、WorkspaceStore、ReviewBridgeconfig/sources.yamlDesign-Stable
PublishConfigConfigManagerConfigManagerDisplayBackend Adapter、ReviewBridgeconfig/publish.yamlDesign-Stable
IndexConfigConfigManagerConfigManagerIndex Adapter、Answer API、Agent Access APIconfig/index.yamlDesign-Stable
RagflowConfigConfigManagerConfigManagerIndex Adapter、Answer API、AgentBridgeconfig/ragflow.yamlDesign-Stable
AgentAccessConfigConfigManagerConfigManagerAgent Access API、Answer API、AgentBridgeconfig/agent-access.yamlDesign-Stable
ModelPolicyConfigManagerConfigManagerRAGFlow adapter、Answer API、AgentBridgeconfig/model-policy.yamlDesign-Stable
ConfigBundleConfigManagerConfigManager所有自研模块in-memory / validation reportDesign-Stable
ConfigImpactReportConfigManagerConfigManagerReviewBridge、维护者workflow summary / PR bodyDesign-Stable
DocumentRecordWorkspaceStoreWorkspaceStoreSyncEngine、Display、Index、Answer、AgentBridgein-memory / manifest derivationDesign-Stable
NormalizedPathWorkspaceStoreWorkspaceStore所有处理路径的模块in-memoryDesign-Stable
ContentHashWorkspaceStoreWorkspaceStoreSyncEngine、Index、Display、AgentBridgestate/manifestDesign-Stable
SourceLockSyncEngineSyncEngineSyncEngine、ReviewBridgestate/source-lock.jsonDesign-Stable
SyncChangeSyncEngineSyncEngineReviewBridge、workflow、testsstate/source-changes.jsonDesign-Stable
SourceChangesSyncEngineSyncEngineReviewBridge、维护者state/source-changes.jsonDesign-Stable
ReviewReportReviewBridgeReviewBridgeworkflow、维护者PR body / workflow summaryDesign-Stable
CheckReportReviewBridgeReviewBridgeGitHub checks、维护者workflow summary / checksDesign-Stable
FeedbackBridgeAgent Access APIAgent Access APIIssueTracker、AgentBridge、Answer APIin-memory / Issue payloadDesign-Stable
IndexDocumentIndex AdapterIndex AdapterRagflowClient、SearchIndexClientexternal upsert payloadDesign-Stable
SearchResultIndex Adapter / SearchIndexClientMeilisearch adapterAgent Access API、Docusaurus search UIHTTP response / tool resultDesign-Stable
IterationTaskAgentBridgeAgentBridgeRAGFlow adapter、AgentBridgeIssue payload / workflow inputDesign-Stable
RagflowIterationResultAgentBridgeRAGFlow adapterAgentBridgeworkflow state / reportDesign-Stable
AgentBridgeReportAgentBridgeAgentBridgeReviewBridge、维护者workflow summary / PR bodyDesign-Stable
AuditEventAnswer API / Agent Access API / AgentBridge各调用入口运维、审计、debugservice log / workflow logDesign-Stable

Internal Contract 规则:

  • 每个契约只能有一个 owner。
  • producer 负责输出合法性,consumer 负责输入校验和错误处理。
  • 持久化契约必须有 schema 和 fixture。
  • in-memory 契约也必须有类型定义或等价 schema,不能只靠隐式对象。
  • 契约字段变更必须先更新本文档,再更新数据结构文档和测试夹具。

6. Adapter Contract 地图

契约OwnerProducerConsumer外部产品状态
GitProviderReviewBridge / SyncEngineGit adapterSyncEngine、ReviewBridge、AgentBridgeGitHub / git CLIDesign-Stable
SourceReaderSyncEnginesource adapterSyncEngineGitHub source reposDesign-Stable
ReviewProviderReviewBridgeGitHub adapterReviewBridge、AgentBridgeGitHub Pull Requests / ChecksDesign-Stable
IssueTrackerAgent Access API / AgentBridgeGitHub Issues adapterAgent Access API、AgentBridge、Answer APIGitHub IssuesDesign-Stable
DisplayBackendDisplayBackend AdapterDocusaurus adapterDisplayBackend AdapterDocusaurusDesign-Stable
RagflowClientIndex Adapter / Answer API / AgentBridgeRAGFlow adapterIndex Adapter、Answer API、AgentBridgeRAGFlowDesign-Stable
SearchIndexClientIndex Adapter / Agent Access APIMeilisearch adapterIndex Adapter、Agent Access APIMeilisearchDesign-Stable
ModelClient未启用,需 ADRTBDTBD商业 LLM APIDraft

Adapter Contract 规则:

  • adapter 返回值必须转换为 common 契约,不允许把外部 SDK response 传给上层模块。
  • adapter 错误必须转换为标准错误模型。
  • adapter 必须声明幂等策略、重试策略和超时策略。
  • adapter 不拥有正式内容状态,只拥有外部调用结果和同步报告。

7. 契约依赖图

8. 契约变更规则

变更类型示例要求
Additive新增可选字段更新数据结构文档和 fixture;consumer 不得因未知字段失败。
Tightening可选字段变必填、枚举值收窄视为破坏性变更,需要版本升级和迁移说明。
Rename字段改名视为破坏性变更,必须保留兼容字段或提供迁移。
Semantic Change字段名不变但含义变化视为破坏性变更,必须新增字段或版本。
Removal删除字段或枚举值必须先 deprecated,再移除。
Producer Changeproducer 从 A 模块变成 B 模块必须更新 contract map、边界设计和测试。
Persistence Change从 in-memory 变为持久化,或路径变化必须更新数据结构、路径规则和运维说明。

9. Owner 职责

契约 owner 必须负责:

  • 定义契约字段和语义。
  • 维护 schema 或类型定义。
  • 维护最小 fixture。
  • 明确兼容性规则。
  • 审核破坏性变更。
  • 保证 producer 输出符合契约。

consumer 必须负责:

  • 校验输入契约版本。
  • 对未知可选字段保持兼容。
  • 对缺失必填字段返回标准错误。
  • 不依赖未文档化字段。

10. 持久化契约清单

契约路径写入模块读取模块
SourceConfigconfig/sources.yaml人工 PRConfigManager
PublishConfigconfig/publish.yaml人工 PRConfigManager
IndexConfigconfig/index.yaml人工 PRConfigManager
RagflowConfigconfig/ragflow.yaml人工 PRConfigManager
AgentAccessConfigconfig/agent-access.yaml人工 PRConfigManager
ModelPolicyconfig/model-policy.yaml人工 PRConfigManager
SourceLockstate/source-lock.jsonSyncEngineSyncEngine、ReviewBridge
SourceChangesstate/source-changes.jsonSyncEngineReviewBridge、维护者
PageManifeststate/page-manifest.jsonWorkspaceStore / DisplayBackend AdapterDisplay、Index、Answer、Agent Access、AgentBridge
EditContextstate/page-manifest.json / Docusaurus metadataWorkspaceStore / DisplayBackend AdapterDocusaurus、ReviewBridge、IssueTracker
PublishImpactReportstate/publish-impact-report.jsonpublish dry-runReviewBridge、维护者
PublishManifeststate/publish-manifest.jsonpublish workflowIndex、Answer、Agent Access、drift check
SiteManifeststate/site-manifest.jsonDisplayBackend AdapterReviewBridge、drift check
IndexManifeststate/index-manifest.jsonIndex AdapterAnswer、Agent Access、drift check

持久化契约规则:

  • 路径必须由 common 统一定义,模块不能私自换路径。
  • 持久化文件必须可被 schema 校验。
  • state/manifest 文件必须可重建或可重新生成,不能成为正式内容事实源。
  • 配置文件变更必须走 PR。

11. 契约测试要求

每个 Stable 契约至少需要:

  • 一个最小合法 fixture。
  • 一个包含可选字段的完整 fixture。
  • 一个非法 fixture,用于验证错误处理。
  • producer golden output。
  • consumer contract test。

Public Contract 额外需要:

  • 版本兼容测试。
  • 标准错误响应测试。
  • 未知字段兼容测试。

Adapter Contract 额外需要:

  • 外部服务失败映射测试。
  • 超时和重试测试。
  • 幂等重复调用测试。

12. 实现准入状态

首版 development 文档已经完成 contract map 中核心契约的字段定义,因此这些契约标记为 Design-Stable,可以作为实施基线。

实现阶段必须继续补齐:

  1. schemas/** 中的 JSON/YAML schema。
  2. fixtures/common/** 中的 valid/invalid fixture。
  3. producer/consumer contract test。
  4. adapter mock 和错误映射测试。

未完成 schema/fixture 前,契约可以用于代码结构、CLI、workflow 和 adapter 骨架实现;但不能宣称达到生产稳定状态,也不能跳过实现 PR 中的 contract test 任务。

对此页面有疑问?

问答功能将在后续接入 Answer API。当前可通过页面底部的反馈链接提交问题。

页面来源草稿
来源项目kunora-wiki
分支docs-publish
路径technology/components/kunora-wiki/development/common/02-contract-map.md