Extend agentctl SQLite with catalog tables, CJK FTS5 recall, hard/soft overlap gates, fail-open embeddings, backfill, and MCP/skills hooks so cross-conversation designs cannot silently conflict.
2.0 KiB
2.0 KiB
治理目录库与跨对话需求重叠检测(方案)
修订 ID:governance-catalog-2026-09-24-r1
state:proposed → 实施后随合入升 active
owner:Cursor
工具能力:schema/CRUD/门禁 enforced(落地后);向量层 fail-open
任务:short-term
问题
跨对话新设计与既有功能/需求重叠时,现有 agentctl 仅做路径级 overlaps() 互斥,无需求语义比对。CURRENT/ISSUES/test-reports 为 Markdown 台账,机器无法强制开工前探测。
方案摘要
在既有 .locks/state.sqlite(与业务 PG 物理隔离)上 additive 扩展 Catalog 表:
| 表 | 用途 |
|---|---|
catalog_requirements |
R-ID 需求条目 |
catalog_features |
对齐 FEATURE-MATRIX record_id |
catalog_req_text |
FTS5 CJK 逐字索引(禁用 trigram) |
catalog_overlaps / catalog_decisions |
检测结果与裁决留痕 |
catalog_issues / catalog_tests / catalog_releases |
缺陷/测试/发布投影 |
catalog_embeddings |
可降级向量增强 |
分级门禁
- L1 结构化:
same_mutex/same_feature/same_scope/same_req_id→ hard deny - L2 语义:FTS5 bm25 软门,须
catalog overlap ack显式裁决后才可编码 - L3 向量:读
EMBEDDING_*;401/超时/缺钥 →vector_layer=degraded,不阻断
策略
catalog_gate / catalog_vector 为可选键(不得加入 shared_docs 等集合相等校验字段)。
权威关系
.doc Markdown 仍为事实来源;Catalog 为可检索投影 + 门禁依据;冲突时 catalog drift 告警,不自动改文档。
边界
不新建第二库/容器;不读写业务 PostgreSQL;不改 overlaps() 既有语义;不做跨机权威。
CLI / MCP
agentctl catalog {add,list,show,search,overlap,ack,status,drift};MCP:catalog_requirement_add / catalog_overlap_probe / catalog_overlap_ack / catalog_search / catalog_status。