2 Commits

Author SHA1 Message Date
lili
c6d6d39a2a feat(cfg): W-CFG-KB K3 知识包治理接线——knowledge 配置块+激活发布 Nacos+worker 订阅热物化(复用阶段二三·默认关)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
把切片一知识件外置接进受治理配置集,一条「改知识件→定版→激活→worker 物化生效」链,复用配置控制面阶段二/三治理机器零重造:

game-cloud:knowledge 作 content_json 第四内容块(仿 readiness),与 routeA/routeB/readiness 互斥、sanity(packageId/
  activeVersion 非空);走向相反=真下发(readiness 进程内空载荷,knowledge 跨进程),激活编成一条路 B 载荷
  {knowledge.packageId,knowledge.activeVersion}、经 KNOWLEDGE 档独立 dataId gen-hot-params-knowledge publish 给 worker;
  pathA=null→dispatch/reconcile 只走路 B、激活编排一行未改。加 AigcConfigTierEnum.KNOWLEDGE+KnowledgeConfigKeys+NO_ROUTE 文案。

worker:kb_store 加进程级激活版本源槽+attach/detach(对称 genconfig),resolve_active_version 取值链改为治理源(Nacos)>
  env 钉版>最新 committed;新 kb_nacos.py(KbActiveVersionSource 订阅 dataId、按 packageId 匹配、激活变更即重物化)+
  setup_knowledge_activation() 启动物化+(Nacos 启用时)attach,cheap_service_app 紧接 genconfig 热源挂它。复用 genconfig_nacos 启用旗+代理旁路。

默认关字节不变(TIER2_KB_ROOT 未配→不物化不订阅、read_file 回落仓根;无源→resolve 回落 env/最新);缺文件显式失败沿用
(materialize_active 照抛保留 kb_root、kb_nacos 只在 best-effort 边界接住不咬生成);全 best-effort。admin 本轮做前端契约点
sanity.ts,富编辑视图=紧接下一片(与 readiness 一致)。

主控终审:git 完整(HEAD 未动·无破坏操作)+11 文件精确+读码坐实互斥/routeB载荷/取值链/best-effort/默认关/缺文件失败没削弱
+亲跑 Java codec 34+activation 21(BUILD SUCCESS)+Python test_kb_externalize 21 全绿。真 Nacos 激活端到端排窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 22:50:10 -07:00
lili
21b5320f3f feat(cheap): W-CFG-KB 知识件外置切片一——知识包存储(复用 ASSET-SRC 范式)+ 物化 + read_file shadow(路乙 MinIO·默认关)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
知识件(喂 agent 学怎么生成的设计范式:skills/黄金脚手架/few-shot/tier2 RAG)原散在 worker repo 检出、
read_file 按硬编码路径自取,改一条范式得重部署。本切片(K1 路乙 MinIO,创始人拍)外置成可热换知识包:

- kb_store.py:KnowledgePackageStore(LocalFs/Backend)存 MinIO + manifest 落 MySQL(专用表
  cheap_knowledge_package_version + 专用桶 cheap-kb,与 ASSET-SRC 正交不合表);复用 store.py 纯工具
  (_canonical_content_hash/derive_version_id/_is_safe_rel_path,store.py 零改动)+ manifest-first 半落库
  (pending→put→committed、fetch 只返 committed、缺源标 missingContent 不静默)。
- materialize_active:按激活版取回→staging 逐文件 sha256 校验(K2 寻址断言)→原子换入知识根(旧挪 .prev);
  缺文件/取不到/指纹不匹配【显式失败】(类比 ASSET-SRC 缺源),kb_root 不动=回落上一份完整包。落点
  TIER2_KB_ROOT 在 git 检出之外(deploy-safe,防 reset --hard 抹)。
- cheap_run.py read_file shadow:先查知识根同相对路径(热换即生效)、回落仓根(api.d.ts 等代码不外置);
  TIER2_KB_ROOT 未配时短路、read_file 字节不变(默认关);两根守只读+200KB+路径不逃逸、越界即拒。
  cheap_roles.py 硬编码路径不改(shadow 在解析层处理)。

K3(yudao 治理+激活推送+admin)= 后续切片,留接缝点(resolve_active_version/materialize_active/default_kb_store)。
主控终审:store.py 零改动 + read_file 默认关字节不变 + 缺文件显式失败/原子回落读码坐实 + 独立表桶 +
亲跑 test_kb_externalize 14 + read_file 回归 18 全绿。真 MinIO 物化闭环排窗口(cheap venv 无 pymysql/minio)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 21:37:50 -07:00