目的是帮助改进,不是批评。
现象:所有实体间关系都存为 JSONB 数组(capabilities: ["CAP-001", "CAP-002"]),同一关系在两张表各存一份,由应用层维护双向一致性。
问题:
@> 匹配应该怎么做:多对多关系用关联表(junction table),关系只存一份,用外键约束和 ON DELETE CASCADE。这是关系型数据库的基本功。
已解决:迁移到新库 knowhub,所有关系改为关联表(8 张 junction table)。详见 schema.md 和 schema-migration-plan.md。
现象:
atomicssupport_capability(单数)source_knowledgetool_knowledge / case_knowledge / process_knowledge问题:
atomics 不知道它指向哪张表,必须查文档support_capability vs capabilities)原则:字段名应该自解释指向什么。如果需要一个额外的"关联到"列来解释每个字段指向哪张表,说明命名有问题。
已解决:统一为 {entity}_ids 命名(capability_ids, tool_ids, knowledge_ids),Tool 的三个 knowledge 字段合并为一个 knowledge_ids。详见 schema.md。
现象:
knowhub/README.md 描述的是 SQLite + LIKE 搜索的老架构,实际代码是 PostgreSQL + pgvectorknowhub/docs/knowledge-management.md 写着"Milvus Lite 单一存储架构",实际没有 Milvus问题:新人看文档会被误导,基于错误理解做设计决策。文档不如没有——错误的文档比没有文档更有害。
应该怎么做:
*-plan.md 后缀标识未实现的方案)现象:knowhub_db/ 目录下 28 个 .py 文件,其中 5 个是核心 store,16 个是已跑完的一次性迁移脚本,7 个是调试脚本。
问题:打开目录看到 28 个文件,完全不知道哪些是重要的、哪些是垃圾。新人会花时间去读 fix_embedding_migration.py 试图理解系统,结果那只是修了一个一次性的 bug。
应该怎么做:
migrations/、scripts/)已整理:核心 5 个 store 留根目录,迁移脚本移到 migrations/,调试脚本移到 scripts/。
现象:Librarian Agent 的 prompt 中包含大量实现细节和无关信息:
问题:
应该怎么做:
规范已建立:agent/docs/prompt-guidelines.md
现象:文档和 prompt 中多处使用"知识图谱"一词。
问题:知识图谱(Knowledge Graph)通常指实体-关系-实体的三元组结构,通过图数据库存储和图遍历查询。KnowHub 是关系型数据库 + 向量检索,实体间通过 ID 列表关联。这不是图结构。
在 prompt 中用"知识图谱"会误导 LLM 去做图推理相关的行为(比如试图做多跳遍历),实际系统不支持。
应该怎么做:使用准确的术语。KnowHub 是"分层分类索引"或直接叫"知识库"。
现象:Librarian Agent prompt 中描述实体关系为"需求 → 拆解为能力 → 由工具实现 → 产生知识"的单向链。
问题:
应该怎么做:各实体独立描述来源和用途,不要用暗示因果关系的箭头链。
值得肯定: