Files
DevFlow/docs/03-模块文档/df-knowledge-知识库-2026-06-14.md
绝尘 04032a2a8d 重构: 文档汇总+进度看板+孤儿任务清理脚本+gitignore 噪音排除
- docs/02 架构设计: 新增 aichat审查/异步审批构想/流式渲染调研/generating状态机/密钥迁移健壮性/工作流脚本执行边界/条件表达式引擎/F-07 trait下沉/Agent架构说明/任务推进构想/功能创意池;更新功能决策记录+归档/对抗论证/文档记录规范/经验记录
- docs/03 模块文档: 新增 AI对话引擎/DAG引擎详解;更新 df-knowledge/df-nodes/df-storage/df-workflow/df-ai
- docs/05 代码审查: 新增 全栈审查/全局review/架构审查/近期改动审查/工作区多角度走查/自研memo流式渲染审查
- docs/09 问题排查: 新增 aichat-apikey-401
- docs/INDEX+README 索引同步;docs/todo 待办看板(2026-06-15 汇总)
- PROGRESS.md Sprint 22-25;URGENT.md 加急清单快照(5 项 P0 已全修)
- scripts/cleanup_orphan_tasks.{py,sh} 孤儿任务清理工具
- .gitignore 补 *.broken.bak + tmp/ 噪音排除
2026-06-15 05:14:21 +08:00

4.9 KiB
Raw Blame History

知识库模块

创建: 2026-06-13 | 阶段: Tier 1 已实现


概述

知识库是 DevFlow 的"共享记忆层",被动积累 AI 对话中产生的可复用经验供后续对话注入使用。外部工具Claude Code / CodeX / Cursor可通过相同 IPC 接口读写,内外零差异。


实现状态

功能 状态
candidate→published 状态机 Tier 1
手动录入Knowledge.vue Tier 1
AI 自动提炼(对话完成后) Tier 1
LIKE 关键词检索 + 注入 system prompt Tier 1
审核收件箱(人工门控) Tier 1
向量 embedding + 混合检索 Phase 5.5(开关控制,默认关)
ai_node prompt 注入 Tier 2
MCP 对外 API Tier 2

状态机

candidate ──→ pending_review ──→ published ──→ archived
    │                │               │
    └────────────────┴───────────────┘
                (可直接到 archived)
  • AI 提炼只产 candidate,绝不自动 published人工门控
  • knowledge_archive软删除status=archived不物理删除

知识类型KnowledgeKind

7 种:pitfall(踩坑)/ review_rule(审查规则)/ prompt_templatePrompt 模板)/ architecture_pattern(架构模式)/ diagnosis(诊断知识)/ deployment_note(部署经验)/ workflow_optimization(工作流优化)


IPC 命令11 个)

Command 说明
knowledge_list(status?) 全量列表,默认排除 archived
knowledge_get(id) 单条查询
knowledge_search(query, kind?, limit?) LIKE 检索top-N≤3
knowledge_create(input) 创建status=candidate
knowledge_update_status(id, status) 状态转换(含合法矩阵校验)
knowledge_record_reuse(id) reuse_count +1
knowledge_list_candidates() 审核收件箱(按 confidence 排序)
knowledge_archive(id) 软删除
knowledge_get_config() 读取 KnowledgeConfig
knowledge_save_config(config) 保存 KnowledgeConfig
knowledge_extract_now() 手动触发提炼ManualOnly 模式)

KnowledgeConfig

pub struct KnowledgeConfig {
    pub auto_extract: bool,            // 提炼总开关,默认 true
    pub trigger_mode: ExtractTrigger,  // on_complete | on_idle | manual_only
    pub min_messages: u32,             // 守卫:最少消息数,默认 4
    pub idle_timeout_ms: u64,          // 闲置触发超时,默认 30000
    pub auto_inject: bool,             // 聊天注入开关,默认 true
    pub vector_enabled: bool,          // 向量检索开关,默认 false
    pub embedding_provider_id: Option<String>,  // 仅 openai_compat 类型
    pub embedding_model: Option<String>,
}

存储:AppState.knowledge_config: Arc<Mutex<KnowledgeConfig>>(内存,重启恢复默认值)。


检索与注入

LIKE 检索(默认)

search(query, kind, limit=3)WHERE title LIKE ? OR content LIKE ?ORDER BY reuse_count DESC

混合检索vector_enabled=true

三层降级链:

  1. 开关关 → 纯 LIKE
  2. embed 调用失败 → 纯 LIKE
  3. 正常 → 双信号排序(同时命中 LIKE+向量 cos≥0.3 > 仅 LIKE > 仅向量 cos≥0.3

嵌入时机:知识发布时(不在 candidate 阶段浪费 embed 调用),spawn_embedding_for_knowledge fire-and-forget。

注入位置

system prompt 头部([知识库上下文] --- [技能指令] --- [原始 system prompt]),仅 auto_inject=true 时生效。


AI 自动提炼流程

  1. run_agentic_loop 正常退出 → maybe_spawn_extraction() 守卫检查
  2. 守卫:auto_extract=true + messages.len() >= min_messages
  3. tauri::async_runtime::spawn 后台执行,不 await不阻断聊天
  4. 取最后 6 条 user/assistant 消息 → 构造 JSON schema prompt → LLM complete()
  5. serde_json::from_str<Vec<ExtractedItem>> 解析失败整批丢弃warn 不报错)
  6. 逐条写 knowledgesstatus=candidatesource_ref="conv:{id}"

矛盾知识处理

不做结构层消歧,在内容和 tags 中自述限制范围。检索时两条知识都可能返回,由 LLM 上下文理解取舍。


外部工具访问(规划)

Tier 1+ 目标MCP Shell 封装(mcp-server 转发 IPC外部工具使用逻辑与内部零差异

  • 外部写入:走 candidate → 人工审核流程
  • 外部读取:knowledge_search / knowledge_listpublished

相关文档