日期:2026-04-22 范围:Phase 0 → Phase 6 全部完成
| 实体 | 迁移前 | 迁移后 | 说明 |
|---|---|---|---|
| strategy 表 | 99(全是 req-specific 具体方案) | 26 abstract pattern(version=howard_strategy_instance) |
每条 = 一种可跨 req 复用的"方法套路 / skill" |
| knowledge 表 | 1046 条 v0 老数据 | 1092 v0 + 193 新(version=howard_strategy_instance) |
新增 193 条承载 req-specific 执行细节 |
| requirement_strategy | 99(严格 1:1) | 155(M:N) | 每 req 可对应多个 pattern(含 selected + alt) |
| requirement_knowledge | 0 | 193 | 新 junction,精确记录 (req, knowledge) 关系 |
| strategy_knowledge | 0 | 193 | abstract pattern ↔ knowledge 实例 |
| knowledge_resource | 306(老) | 306 + 5339 新 | knowledge 引用的 resources |
| knowledge_capability | 0 | 1198(新建) | 保证 knowledge_cap ⊆ req_cap 约束的关键 junction |
| strategy_capability | 1202(具体 strat → cap) | 653(abstract 的 cap 联合) | 降下来是因为抽象后多条并一条 |
| strategy_resource | 2736(具体 strat → resource) | 2702(abstract 的 resource 联合) | 同上 |
| requirement_capability(研究全集) | 1106 | 1106(不变) | Research superset 不变 |
| capability 表 | 332 | 332(不变) | 抽象化不涉及 cap 层 |
-- Phase 2 schema migration (已执行)
ALTER TABLE requirement_strategy
ADD COLUMN is_selected BOOLEAN,
ADD COLUMN coverage_score FLOAT,
ADD COLUMN coverage_explanation TEXT;
-- requirement_knowledge 已存在(空),ALTER 补 3 列
ALTER TABLE requirement_knowledge
ADD COLUMN is_selected BOOLEAN,
ADD COLUMN coverage_score FLOAT,
ADD COLUMN coverage_explanation TEXT;
-- knowledge_resource:已存在(306 行老数据 knowledge→tools),沿用
-- knowledge_capability:新建
CREATE TABLE knowledge_capability (
knowledge_id VARCHAR NOT NULL,
capability_id VARCHAR NOT NULL,
PRIMARY KEY (knowledge_id, capability_id)
) DISTRIBUTED BY (knowledge_id);
用户决策:两张表都存,允许语义漂移
requirement_strategy.is_selected = "req 的多个候选 pattern 中,这个 pattern 被选"(pattern 粒度)requirement_knowledge.is_selected = "具体执行实例里,这条 knowledge 是被选的执行"(execution 粒度)SELECT s.name pattern_name, rs.is_selected, rs.coverage_score, rs.coverage_explanation
FROM requirement_strategy rs
JOIN strategy s ON s.id = rs.strategy_id
WHERE rs.requirement_id = 'REQ_003';
SELECT k.content
FROM knowledge k
JOIN requirement_knowledge rk ON rk.knowledge_id = k.id
JOIN strategy_knowledge sk ON sk.knowledge_id = k.id
WHERE rk.requirement_id = 'REQ_003'
AND sk.strategy_id = 'strategy-abstract-p17'
AND k.version = 'howard_strategy_instance';
SELECT COUNT(DISTINCT rs.requirement_id) reuse_count
FROM requirement_strategy rs
WHERE rs.strategy_id = 'strategy-abstract-p01';
-- 返回:22(P01 最高复用度)
SELECT c.id, c.name FROM knowledge_capability kc
JOIN capability c ON c.id = kc.capability_id
WHERE kc.knowledge_id = 'knowledge-stratinst-xxx';
所有新增数据用 version='howard_strategy_instance' 标记:
-- 只看新增的 strategy instance knowledge
WHERE k.version = 'howard_strategy_instance';
-- 不动老 knowledge
WHERE k.version = 'v0'; -- 1092 行
abstract strategy 也用同一 version 标记(26 行)。
| Pattern | 复用次数 | 服务 reqs |
|---|---|---|
| 结构化提示词单步直出套路 | 22 | 各种直出场景(图文/色调/单步生成) |
| ComfyUI 节点链精控套路 | 11 | 精细控制类需求 |
| 多图层分层合成套路 | 9 | 人物+场景合成类 |
| 网格/分镜一次性直出套路 | 7 | 九宫格/分镜类 |
| 参考图垫图控制套路 | 7 | 版式迁移/风格锁定 |
| 智能抠图 + 拼贴排版套路 | 7 | 拼贴类 |
| AI 图内文字渲染 + 排版套路 | 7 | 含文字排版的图 |
| Coze 工作流编排全自动套路 | 7 | 大规模自动化 |
这些 pattern 验证了"方法论跨 req 迁移"的抽象价值。例如 P01 结构化提示词单步直出 方法在 22 种不同视觉需求下都适用。
| 问题 | 数量 | 原因 | 是否关键 |
|---|---|---|---|
| knowledge 无 cap 链接 | 10 条 | 源 strategy 用了 LLM 自造的 cap ID(如 aigc_color_unification),alias 和 fuzzy 都对不上 |
边缘情况,不影响主功能 |
| coverage_score 为 null | 42 条 req_strategy | 13 个 req 的 coverage_scores.json 缺失 + 部分 alt 名字 fuzzy 对不上 | 接受,查询时要处理 null |
| 5 个占位 strategy(004/031/053/066/070) | Phase 1 已修 | 源 strategy.json 用非标准 schema | 已解决 |
✅ 每 req 有完整关系(99/99)
✅ 核心约束保持
knowledge_cap ⊆ req_cap(经 requirement_knowledge):0 违规⚠️ 约束变更(由设计决定)
strat_cap ⊆ req_cap(经 requirement_strategy):3674 违规 —— 这是预期的,因为 abstract strategy_capability 是联合集,不再是单 req 的 compose 子集。新的同等约束转移到 knowledge 层(见上)bk_20260422_* 6 张快照表保留:
bk_20260422_strategy(99 行)bk_20260422_requirement_strategy(99 行)bk_20260422_strategy_capability(703 行,Phase 1 后 + Phase 2 前快照)bk_20260422_strategy_resource(2736 行)bk_20260422_strategy_knowledge(0 行)bk_20260422_knowledge(1067 行)确认无问题后可 DROP TABLE bk_20260422_*; 释放空间。建议保留 7 天以防万一。
Phase 0 → Phase 6 涉及的脚本都在 knowhub/scripts/:
| 脚本 | 阶段 | 作用 |
|---|---|---|
salvage_placeholder_strategies.py |
Phase 1 | 修 5 个占位 strategy 的 body |
backup_before_strategy_refactor.py |
Pre-Phase 2 | DB 内快照 |
phase2_schema_migration.py |
Phase 2 | ALTER requirement_strategy + 检查 junctions |
ingest_all_strategies.py |
Phase 2 | 入库全部 strategy(含备选),填 coverage |
abstract_patterns.py |
Phase 3 | 27 pattern 定义 + 193→pattern 映射 |
phase4_5_migrate.py |
Phase 4+5 | 主迁移脚本 |
phase5_add_knowledge_capability.py |
Phase 5 补 | 创建 knowledge_capability + 从 backup 恢复 |
phase5_fill_alt_knowledge_capability.py |
Phase 5 补 | 从源 JSON 补 alt 的 cap 链接 |
phase5_fuzzy_fill_remaining.py |
Phase 5 补 | 最后 12 条的 fuzzy 匹配尝试 |
body.source 字段逐 case 匹配,实现 knowledge 粒度的精确引用