跳转至

No-WeCom MVP Demo:无企微端到端闭环

定位

这个 demo 验证在企业微信接口尚未接入时,当前本地 runtime 是否已经能跑通 MVP 主链路:

text 用户问题 -> docs/vault 搜索 -> knowledge gap -> Ask Router 选择 owner -> OntologyToolGateway -> pending knowledge card -> Connector Callback Ledger -> callback Evidence Registry / raw snapshot -> 本地 reply-text / ask-feedback-events.json -> 下一轮路由纠错 -> 补充回复 -> review -> promote -> reindex queue -> OntologyToolGateway -> Knowledge Card Tool Gateway reindex/search

运行命令:

bash python scripts/no_wecom_mvp_demo.py --write-report

当前结果

指标 结果
通过 yes
失败数 0
初始 owner finance-owner
ask ontology action allow
ask registry event count 2
Context Router baseline library org_directory
Context Router corrected library project_orgreorg_knowledge
Context Router feedback applied count 2
callback ledger recorded count 1
callback ledger duplicate count 1
callback ledger rejected count 1
callback ledger safe output leak count 0
callback Evidence source count 1
callback Evidence registry error count 0
callback Evidence feedback event count 1
callback Evidence card ref count 1
feedback event 数 1
纠错后 owner crm-owner
review 状态 reviewed
review ontology action allow
promote ontology action allow
knowledge card registry event count 6
reindex queue status ready_for_reindex
reindex queue ontology action allow
reindex queue registry event count 8
reindex queue indexed count 1
reindex queue search hit count 1
reindex queue safe output leak count 0
indexed count 1
search hit count 1
gateway action allow
governance probe count 5
blocked probe hit count 0
restricted team hit count 0
restricted privileged hit count 1
restricted denied action deny
restricted leak marker count 0

阶段结果

阶段 期望 实际
初始主动询问 finance-owner finance-owner
ask ontology gate allow allow
ask registry event_count >= 2 2
Context Router baseline org_directory org_directory
Context Router 反馈纠错 project_orgreorg_knowledge project_orgreorg_knowledge
Context Router feedback trace applied_count >= 2 2
Connector Callback Ledger recorded=1, duplicate=1, rejected=1, leak=0 recorded=1, duplicate=1, rejected=1, leak=0
callback Evidence Registry source_count=1, error_count=0 source_count=1, error_count=0
callback Evidence -> AskFeedbackEvent event_count >= 1 1
callback Evidence -> Knowledge Card card_ref_count >= 1 1
问错人反馈持久化 event_count >= 1 1
下一轮路由纠错 crm-owner crm-owner
人工 review reviewed reviewed
review ontology gate allow allow
promote ontology gate allow allow
knowledge card registry event_count >= 4 6
promote vault/20-wiki 下 Markdown pass
reindex queue 入队 ready_for_reindex ready_for_reindex
ontology gate allow allow
ontology registry event_count >= 3 8
reindex queue 处理 indexed_count >= 1 1
reindex queue 搜索 hit_count >= 1 1
reindex queue safe output 不泄漏路径、owner、内容 marker leak_count=0
知识外挂搜索 hit_count >= 1 1
治理反例 pending/rejected/needs_changes/expired 不可检索 hit_count=0
restricted 权限 team 用户不可见,restricted 用户可见 team_hit=0, restricted_hit=1
restricted 越权请求 team 用户请求 restricted scope 被拒绝 deny

暴露并修复的问题

端到端 smoke 暴露过一个真实边界:第二轮检索会把第一轮 pending card 也搜到,导致 gap wording 变化,原来只按 gap_hash 匹配的反馈事件无法生效。

修正后,同一 task_id 的反馈优先复用;跨任务反馈才依赖 gap_hash 匹配。这更符合真实 loop:同一任务在执行过程中,缺口描述会随着新证据进入而变化,但问错人反馈不应失效。

当前结论

  1. 无企微条件下,当前本地 runtime 已经能跑通一条完整的主动收集和知识外挂链路。
  2. 本地 reply-text 现在先经过 Connector Callback Ledger:有效回调被记录,重复回调被幂等抑制,无效签名被拒绝,safe output 不泄露源系统对象。
  3. 被采信的本地 reply callback 已先生成受限 Evidence source 和 raw snapshot,再投影成 AskFeedbackEvent,并把 Evidence source id 写回 pending knowledge card 审计字段。
  4. ask-feedback-events.json 可以作为真实企微消息回调前的本地事件流替身。
  5. Context Router 人工纠错事件已经并入主链路:同一问题可从 org_directory 纠正到 project_orgreorg_knowledge,并在 trace 中记录 feedback applied count。
  6. Ask Router route、review/promote 和 reindex queue 已先经过 OntologyToolGateway,并把 person/task、pending/reviewed/promoted、ready/indexed lifecycle 写入 ontology registry;safe output 只暴露状态和计数,为真实 worker / adapter 留出可恢复边界。
  7. route / review / promote / reindex / search 已经进入 Ask Router、Knowledge Card Tool Gateway 和 OntologyToolGateway,避免本地 demo 绕过未来工具边界。
  8. pending、rejected、needs_changes 和 expired knowledge card 不会进入索引;restricted card 不会向 team 用户泄漏。
  9. owner registry 已统一为显式组织目录优先、Domain Topology fallback;当前 demo 仍用本地目录模拟真实企微通讯录,但同一 contract 已能在目录缺失时从 topology 派生 owner。

下一步

  1. 继续把真实团队问题样例加入端到端 demo,但保持合成数据和真实私域数据分离。
  2. 扩展 permission probe 到对象存在性、owner、路径和 source_uri 的泄漏检查。
  3. 把本地 JSON reindex queue 替换为可恢复 worker / Postgres table,验证 retry、幂等、延迟和 adapter 失败恢复。
  4. 后续企微 adapter 接入时,只替换 owner registry 来源、delivery / callback 来源,保留同一 Ask Router guarded route、Evidence Registry、Connector Callback Ledger、knowledge card、feedback event、reindex queue 和 gateway contract。

原始输出见 vault/50-outputs/no-wecom-mvp-demo-analysis.md