module/file.py:function_nameknowhub/docs/decisions.md 另行记录PostgreSQL (阿里云 AnalyticDB for PostgreSQL)。所有向量字段为 float4[](1536维),使用余弦距离(<=>)检索。
Embedding 模型:google/gemini-2.5-flash-lite(通过 OpenRouter)。实现:knowhub/embeddings.py。
数据库名:knowhub
tool_provider 仅提供工具可用性索引 requirement ──── requirement_strategy ──── strategy
╱ ╲ ╲ ╱ │ ╲
capability_ids knowledge_ids resource_ids capability │ knowledge / resource
╱ ╲ ╲ compose
capability knowledge ← knowledge_resource → resource
│ ╲ ╱ ╲ ↑
│ tool_ids knowledge_ids knowledge_relation │
│ ╲ ╱ (知识间关系) │
│ tool ... ← capability_resource ┤
capability_resource ← requirement_resource
← strategy_resource
tool_provider (执行层索引)
所有 *_knowledge / knowledge_relation / strategy_capability / strategy_knowledge 边带 relation_type 语义标签:
source — 知识/资料是该实体的构建来源case — 知识是该实体的应用实例compose — 组合关系(strategy → capability)related — 默认/未分类基础层。用例、方法、经验、评论都是 knowledge。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR PK | "knowledge-{timestamp}-{random}" |
task_embedding |
float4[] | task 的向量 |
content_embedding |
float4[] | content 的向量 |
message_id |
VARCHAR | 来源 Agent 消息 ID |
task |
VARCHAR | 任务场景描述 |
content |
TEXT | 知识正文 |
types |
TEXT[] | 知识类型:tool / strategy / case / experience / definition |
tags |
JSONB | 标签键值对 |
tag_keys |
TEXT[] | tags 中的键列表(用于过滤) |
scopes |
TEXT[] | 作用域,如 ["org:cybertogether"] |
owner |
VARCHAR | 所有者 |
source |
JSONB | 来源信息(agent_id, category, urls, submitted_by, timestamp) |
eval |
JSONB | 评估(score, helpful, harmful, confidence) |
created_at |
BIGINT | 创建时间戳(秒) |
updated_at |
BIGINT | 更新时间戳(秒) |
status |
VARCHAR | pending → approved / rejected / checked |
关联(通过关联表,API 返回时聚合为 {entity}_ids 扁平列表 + {entity}_links 带 relation_type):
requirement_ids / requirement_links ← requirement_knowledgecapability_ids / capability_links ← capability_knowledgetool_ids / tool_links ← tool_knowledgeresource_ids ← knowledge_resourcerelations ← knowledge_relation知识的原始来源。文档、代码、凭证等。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | 路径格式,如 "tools/selenium/login" |
title |
TEXT | 标题 |
body |
TEXT | 公开内容 |
secure_body |
TEXT | 敏感内容(AES-256-GCM 加密) |
content_type |
TEXT | text / code / credential / cookie |
metadata |
JSONB | 附加元数据 |
sort_order |
INTEGER | 同级排序 |
submitted_by |
TEXT | 提交者 |
created_at |
BIGINT | 创建时间戳 |
updated_at |
BIGINT | 更新时间戳 |
业务目标。分解为能力的组合,以保持稳定性。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR PK | "REQ_XXX" |
description |
TEXT | 需求描述 |
source_nodes |
JSONB | 来源节点 [{node_name, posts}] |
status |
VARCHAR | 已满足 / 未满足 |
match_result |
TEXT | 满足方案描述(提炼结果) |
embedding |
float4[] | description 的向量 |
关联:
capability_ids ← requirement_capabilityknowledge_ids / knowledge_links ← requirement_knowledgeresource_ids ← requirement_resourcestrategy_ids ← requirement_strategy(满足该需求的 strategy)需求的稳定分解锚点。从知识中提炼,连接需求与工具。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR PK | "CAP-XXX" |
name |
VARCHAR | 能力名称 |
criterion |
TEXT | 评估标准(提炼结果) |
description |
TEXT | 能力描述(提炼结果) |
embedding |
float4[] | name + description 的向量 |
关联:
requirement_ids ← requirement_capabilitytool_ids ← capability_toolknowledge_ids / knowledge_links ← capability_knowledgeresource_ids ← capability_resource具体的技术/模型/软件。工具库和知识库共用同一套 ID。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR PK | 路径格式,如 "tools/image_gen/controlnet_openpose" |
name |
VARCHAR | 工具名称 |
version |
VARCHAR | 版本号 |
introduction |
TEXT | 功能介绍 |
tutorial |
TEXT | 使用指南 |
input |
JSONB | 输入规格 |
output |
JSONB | 输出规格 |
updated_time |
BIGINT | 更新时间戳 |
status |
VARCHAR | 未接入 / 可用 / 异常 |
embedding |
float4[] | name + introduction 的向量 |
关联:
capability_ids ← capability_toolknowledge_ids / knowledge_links ← tool_knowledgeprovider_ids ← tool_provider一组原子 capability 的组合,附带自身的可执行 body(如工作流脚本、流程描述)与 source 知识。strategy 设计用来满足 requirement。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
VARCHAR PK | "strategy-{...}" |
name |
VARCHAR | 策略名称 |
description |
TEXT | 策略描述 |
body |
TEXT | 可执行正文(工作流/脚本/流程步骤) |
status |
VARCHAR | draft / approved / deprecated 等 |
created_at |
BIGINT | 创建时间戳(秒) |
updated_at |
BIGINT | 更新时间戳(秒) |
embedding |
float4[] | name + description 的向量 |
关联:
requirement_ids ← requirement_strategy(这个 strategy 被设计用来满足哪些 requirement)capability_ids / capability_links ← strategy_capability(compose 组合)knowledge_ids / knowledge_links ← strategy_knowledge(source / case 等)resource_ids ← strategy_resource(直接原始素材)requirement_capability — 需求分解为能力
| 字段 | 类型 | 说明 |
|---|---|---|
requirement_id |
VARCHAR | → requirement.id |
capability_id |
VARCHAR | → capability.id |
PK: (requirement_id, capability_id)
capability_tool — 能力由工具实现
| 字段 | 类型 | 说明 |
|---|---|---|
capability_id |
VARCHAR | → capability.id |
tool_id |
VARCHAR | → tool.id |
description |
TEXT | 该工具如何实现此能力 |
PK: (capability_id, tool_id)
requirement_strategy — 需求由 strategy 满足
| 字段 | 类型 | 说明 |
|---|---|---|
requirement_id |
VARCHAR | → requirement.id |
strategy_id |
VARCHAR | → strategy.id |
PK: (requirement_id, strategy_id)
所有 *_knowledge 表及 strategy_knowledge 都带 relation_type VARCHAR(32) 列,值 ∈ {source, case, related}。DEFAULT 'related'(历史数据)。
requirement_knowledge — 需求的方案策略、完成方法
| 字段 | 类型 | 说明 |
|---|---|---|
requirement_id |
VARCHAR | → requirement.id |
knowledge_id |
VARCHAR | → knowledge.id |
relation_type |
VARCHAR(32) | source / case / related(默认) |
PK: (requirement_id, knowledge_id)
capability_knowledge — 能力的原理依据、评判来源
| 字段 | 类型 | 说明 |
|---|---|---|
capability_id |
VARCHAR | → capability.id |
knowledge_id |
VARCHAR | → knowledge.id |
relation_type |
VARCHAR(32) | source / case / related(默认) |
PK: (capability_id, knowledge_id)
tool_knowledge — 工具的用法、案例、经验
| 字段 | 类型 | 说明 |
|---|---|---|
tool_id |
VARCHAR | → tool.id |
knowledge_id |
VARCHAR | → knowledge.id |
relation_type |
VARCHAR(32) | source / case / related(默认) |
PK: (tool_id, knowledge_id)
strategy_knowledge — strategy 的知识来源
| 字段 | 类型 | 说明 |
|---|---|---|
strategy_id |
VARCHAR | → strategy.id |
knowledge_id |
VARCHAR | → knowledge.id |
relation_type |
VARCHAR(32) | 默认 source;可为 case 等 |
PK: (strategy_id, knowledge_id)
strategy_capability — strategy 组合哪些原子能力
| 字段 | 类型 | 说明 |
|---|---|---|
strategy_id |
VARCHAR | → strategy.id |
capability_id |
VARCHAR | → capability.id |
relation_type |
VARCHAR(32) | 默认 compose |
PK: (strategy_id, capability_id)
knowledge_resource — 知识的原始来源
| 字段 | 类型 | 说明 |
|---|---|---|
knowledge_id |
VARCHAR | → knowledge.id |
resource_id |
VARCHAR | → resource.id |
PK: (knowledge_id, resource_id)
requirement_resource — 需求直接来自的原始素材(绕过 knowledge 整理层)
PK: (requirement_id, resource_id)
capability_resource — capability 直接来自的原始素材
PK: (capability_id, resource_id)
strategy_resource — strategy 直接来自的原始素材
PK: (strategy_id, resource_id)
*_resource 边无 relation_type——存在本身即"source"语义,不需额外标签。
knowledge_relation — 知识之间的关系(替代、扩展、矛盾等)
| 字段 | 类型 | 说明 |
|---|---|---|
source_id |
VARCHAR | → knowledge.id |
target_id |
VARCHAR | → knowledge.id |
relation_type |
VARCHAR | supersedes / extends / contradicts / ... |
PK: (source_id, target_id, relation_type)
tool_provider — 工具在哪些运行环境可用(供 Craftsman 查询)
| 字段 | 类型 | 说明 |
|---|---|---|
tool_id |
VARCHAR | → tool.id |
provider_id |
VARCHAR | 运行环境标识(如 "comfyui"、"liblib") |
PK: (tool_id, provider_id)
| 表 | 向量字段 | Embedding 内容 |
|---|---|---|
| knowledge | task_embedding |
task |
| knowledge | content_embedding |
content |
| tool | embedding |
name + introduction |
| capability | embedding |
name + description |
| requirement | embedding |
description |
| strategy | embedding |
name + description |