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

136 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 知识库模块
> 创建: 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_template`Prompt 模板)/ `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
```rust
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. 逐条写 `knowledges`status=candidatesource_ref="conv:{id}"
---
## 矛盾知识处理
不做结构层消歧,在内容和 tags 中自述限制范围。检索时两条知识都可能返回,由 LLM 上下文理解取舍。
---
## 外部工具访问(规划)
Tier 1+ 目标MCP Shell 封装(`mcp-server` 转发 IPC外部工具使用逻辑与内部零差异
- 外部写入:走 candidate → 人工审核流程
- 外部读取:`knowledge_search` / `knowledge_list`published
---
## 相关文档
- [df-storage 存储层](./df-storage-存储层-2026-06-12.md) — knowledges 表结构 + 向量工具函数
- [df-ai AI 集成模块](./df-ai-AI集成模块-2026-06-12.md) — hybrid_search / generate_embedding / extract
- [功能决策记录](../02-架构设计/功能决策记录-2026-06-14.md) — 检索方案演进决策