Skip to content

feat(knowledge): v3.3 UI 重构 + v2 后端存储与 FTS5 检索管线#9

Merged
wynxing merged 5 commits into
mainfrom
docs/quality-improvement
Jun 20, 2026
Merged

feat(knowledge): v3.3 UI 重构 + v2 后端存储与 FTS5 检索管线#9
wynxing merged 5 commits into
mainfrom
docs/quality-improvement

Conversation

@wynxing

@wynxing wynxing commented Jun 20, 2026

Copy link
Copy Markdown
Owner

概述

知识工作空间 v3.3 UI 重构 + v2 后端存储与 FTS5 检索管线 + 文档完善。本 PR 合并 docs/quality-improvement 分支相对 main 的全部积压工作(6 个提交)。

包含的提交

  1. 377a0da fix(wallpaper): 优化 wallpaper 表现
  2. 0126b1e feat(knowledge): v3.3 本地知识工作空间架构转型
  3. d53f4bf docs: 综合文档质量提升
  4. 03e0f22 docs: docs/ 文件翻译为中文
  5. cbb7582 feat(knowledge): v3.3 知识工作空间 UI 重构与文档更新
  6. bf6e6d3 feat(knowledge): v2 知识库后端存储与 FTS5 检索管线 + 前端 API 接入

主要变更

知识工作空间 UI(v3.3)

  • 组件重构:拆分为 ProjectBrowser/ProjectWorkspace/KnowledgeNotesPanel/KnowledgeBoardPanel/KnowledgeTasksPanel,新增 BreadcrumbNav/MarkdownPreview/BacklinksPanel/BoardTaskCard/ProjectCard/QuickCreateBar/ThemeToggle
  • 嵌套项目导航、按项目自定义看板列、HTML5 拖拽排序、双向 wiki 链接与 backlinks、全局 light/dark 主题
  • 设置页知识库区接入可配置根目录选择器(knowledgeRootPath

v2 后端检索管线

  • 新增知识实体表(projects/notes/tags/note_tags/board_columns/knowledge_tasks/knowledge_chunks)+ FTS5 虚拟表 knowledge_chunks_fts
  • createKnowledgeStore 同步 CRUD(tags 同步、级联删除、backlinks、moveTask 重排)
  • Markdown-header 分块 + content-hash 去重 + FTS5 BM25 检索(项目范围过滤、按 source 去重、index_status 生命周期)
  • 混合文件镜像:entity ↔ Markdown front-matter/JSONL,Obsidian 友好布局,export/import + root-path 端点(SQLite 权威 + 文件镜像)
  • /api/knowledge/* CRUD + search + index-status + reindex + mirror,sqlite 未加载时降级 503

前端 API 接入

  • useKnowledgeApi:乐观本地缓存(与 mock 同形状 KnowledgeDataSource 接口),写失败回滚+提示,loadAll 失败回退 mock
  • useKnowledgeWorkspace 数据源切换为 api(mock 回退),编排层与 14 个组件零改动
  • KnowledgeView onMounted loadAll + 降级 banner

类型(packages/shared)

知识实体 + IndexMode/KnowledgeIndexState/AiRetrievalMode/ContextLevel/AiAnswer/KnowledgeChunkIndexStatus

测试计划

  • pnpm typecheck 全绿(shared/ai/tts/db/desktop/server-local)
  • pnpm -r test 全绿:desktop 28、server-local 23+5skip、db 9+1skip、ai 2、tts 1
  • 单测覆盖:chunker(10)、knowledge-fs 序列化(6)、mirror 文件往返(2)、useKnowledgeApi 乐观写+回滚(4)
  • 集成测试(sqlite-native 可用时 CI 跑):knowledge store CRUD、indexer FTS5 检索/去重/降级
  • CI:Windows/macOS/Linux 构建
  • 手动:pnpm dev:tauri 跑知识工作空间 CRUD + FTS 搜索(本机无 sqlite-native binding,走 503→mock 降级路径,UI 不变)

后续(已建 issue,不在本 PR)

说明

  • 本机环境 better-sqlite3 原生 binding 未编译(Node 24.14),createDatabase 走 memory fallback;SQLite 专属测试 skipIf,CI 会跑。node:sqlite 迁移为后续 SEA 打包任务(见 ARCHITECTURE.md 6.4)。
  • v1 tasks(open|done) 与 v2 knowledge_tasks(四态) 未统一,knowledge 用独立表,避免影响 v1 pet 面板/focus 行为。

wynxing added 2 commits June 20, 2026 15:42
- 重构知识组件:拆分为 ProjectBrowser/ProjectWorkspace/KnowledgeNotesPanel/
  KnowledgeBoardPanel/KnowledgeTasksPanel,新增 BreadcrumbNav/MarkdownPreview/
  BacklinksPanel/BoardTaskCard/ProjectCard/QuickCreateBar/ThemeToggle
- 删除旧版 BoardCard/BoardPane/KnowledgeTopbar/NoteList/NotePreview/NotesPane/
  ProjectSidebar/TasksPane
- 设置页知识库区接入可配置根目录选择器(knowledgeRootPath)
- 更新 tauri 能力与依赖配置
- 同步更新 ARCHITECTURE/API/PRD/TESTING/GLOSSARY/TODO_INVENTORY/具体能力构思 文档
后端(packages/db + packages/server-local):
- 新增知识实体表(projects/notes/tags/note_tags/board_columns/knowledge_tasks/
  knowledge_chunks)+ FTS5 虚拟表 knowledge_chunks_fts
- createKnowledgeStore 同步 CRUD(tags 同步、级联删除、backlinks、moveTask 重排)
- Markdown-header 分块 + content-hash 去重 + FTS5 BM25 检索
  (项目范围过滤、按 source 去重、index_status 生命周期)
- 混合文件镜像:entity ↔ Markdown front-matter/JSONL,Obsidian 友好布局,
  export/import + root-path 端点(SQLite 权威 + 文件镜像)
- /api/knowledge/* CRUD + search + index-status + reindex + mirror,
  sqlite 未加载时降级 503

前端(apps/desktop):
- useKnowledgeApi:乐观本地缓存(与 mock 同形状 KnowledgeDataSource 接口),
  写失败回滚+提示,loadAll 失败回退 mock
- useKnowledgeWorkspace 数据源切换为 api(mock 回退),编排层与 14 组件零改动
- KnowledgeView onMounted loadAll + 降级 banner
- api.ts 新增知识端点方法

类型(packages/shared):知识实体 + IndexMode/KnowledgeIndexState/
  AiRetrievalMode/ContextLevel/AiAnswer/KnowledgeChunkIndexStatus

测试:desktop 28、server-local 23+5skip、db 9+1skip 全绿;
sqlite-native 不可用时 skipIf(CI 跑)
@fennoai

fennoai Bot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Fenno AI is not enabled for this organization

Fenno AI is currently in internal testing and is not yet open for external organizations.

If you would like to request access, sign in to Fenno AI Console, choose Give Feedback in the lower-left corner, and tell us what you need. We will follow up promptly.

wynxing added 3 commits June 20, 2026 16:18
CI(linux) 跑 indexer 集成测试时,「按项目范围搜索」用例失败:FTS5 默认
unicode61 分词器对中文不分词,"向量" 短语匹配不上「向量检索…」正文。

- knowledge_chunks_fts 改用 tokenize='trigram'(FTS5 内置,SQLite 3.34+,
  对中文做 3-gram 分词)
- sanitizeFtsQuery 改为前缀查询 "term"*,使短词(<3 字符)也能经
  trigram 前缀展开命中
trigram 分词器索引 3-gram,查询词 <3 字符(如「向量」)的 MATCH
前缀查询仍不命中。改为:查询词均 ≥3 字符时走 FTS5 MATCH + BM25 排序;
否则回退 LIKE %term% 子串扫描(保留项目范围过滤),按命中返回。
Phase 3 向量检索将接管语义排序,此 LIKE 路径为短词兜底。
该脚本在 d53f4bf 引入时 git 存为 100644(非可执行),CI checkout 后
'Verify documentation consistency' 步骤 Permission denied (exit 126)。
@wynxing wynxing merged commit 42c1251 into main Jun 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant