Implement shared knowledge retrieval, card mirror switch, and SSE project gate (EXT-8 slice 2) #107

Merged
weichen merged 2 commits from feature/ext8-slice2-shared-retrieval into main 2026-10-08 16:24:19 +00:00
Owner

EXT-8 切片 2 + EXT-12 最小开关(受理依据 Documents #49)

  • 共享检索:GET /api/knowledge/search 追加「他人 owner 且其 ProjectID 经 EXT-8 适配器放行」的全文命中(两方言:FTS/LIKE 谓词化共用 + PG 共享版);本人命中在前、合计截断 topK;未放行零命中不泄露。向量通道共享登记为切片 3 余项。
  • 会话卡镜像开关(EXT-12 取向①):extension.Options.DisableConvCardMirror(零值=现状);true 时会话卡只进本人会话流——不发布即不持久,项目流重放天然不含会话卡;项目级卡不受影响。SurfaceVersion 2.3.0-experimental。
  • SSE 项目订阅门:scope=project 在 owner 自有未命中时咨询适配器(放行才可订阅)。

验证(红→绿)

红(surface 提交):镜像仍双发/授权后检索 0 命中/授权后订阅 404。绿:TestConvCardMirrorSwitch、TestSharedKnowledgeRetrieval、TestProjectSSEScopeGate 全绿;go test ./... 32/32 包 ok。Dev 组合验证与 CI 随 gitlink PR。

## EXT-8 切片 2 + EXT-12 最小开关(受理依据 Documents #49) - **共享检索**:`GET /api/knowledge/search` 追加「他人 owner 且其 ProjectID 经 EXT-8 适配器放行」的全文命中(两方言:FTS/LIKE 谓词化共用 + PG 共享版);本人命中在前、合计截断 topK;未放行零命中不泄露。向量通道共享登记为切片 3 余项。 - **会话卡镜像开关**(EXT-12 取向①):`extension.Options.DisableConvCardMirror`(零值=现状);true 时会话卡只进本人会话流——**不发布即不持久,项目流重放天然不含会话卡**;项目级卡不受影响。SurfaceVersion **2.3.0-experimental**。 - **SSE 项目订阅门**:`scope=project` 在 owner 自有未命中时咨询适配器(放行才可订阅)。 ## 验证(红→绿) 红(surface 提交):镜像仍双发/授权后检索 0 命中/授权后订阅 404。绿:`TestConvCardMirrorSwitch`、`TestSharedKnowledgeRetrieval`、`TestProjectSSEScopeGate` 全绿;`go test ./...` 32/32 包 ok。Dev 组合验证与 CI 随 gitlink PR。
weichen added 2 commits 2026-10-08 16:18:31 +00:00
Why: Knowledge retrieval cross-owner and conversation-card mirroring are the registered EXT-8 slice-2 items; the fields/wiring land with the acceptance reds pinned first.
Evidence: mirror red (project channel still emitted with switch off); shared-retrieval red (grant yields 0 hits); SSE-scope red (grant yields non-200); rows follow on the task card.
Impact: Options.DisableConvCardMirror passthrough (extension/link/app); cardsvc.MirrorConvCards (default true = current behavior); SurfaceVersion 2.3.0-experimental. Behavior unchanged.
Refs: EXT-8/EXT-12 proposals; task card.
Why: The three pinned reds define EXT-8 slice 2 - adapter-granted cross-owner knowledge must be retrievable, conversation cards must stay out of public project streams when the host opts out, and project-stream subscription must honor the authorizer.
Evidence: TestConvCardMirrorSwitch, TestSharedKnowledgeRetrieval, TestProjectSSEScopeGate green; go test ./... 32/32 packages ok; rows follow on the task card.
Impact: store gains predicate-based SearchKnowledgeShared (FTS/LIKE shared variants + PG); searchKnowledge appends adapter-authorized hits; cardsvc emit gate (no publish = no persistence = clean replay); events project scope consults authorizeSharedProject. Default behavior unchanged everywhere.
Refs: EXT-8/EXT-12 proposals; red run at surface commit.
weichen merged commit 8a9a354649 into main 2026-10-08 16:24:19 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-System-Backend#107