Skip to content

feat(sqlite): scope PR #131 to vector search only, plan full AI support #134

@hrygo

Description

@hrygo

背景

PR #131 ("feat(ai): add full AI support for SQLite") 是一个大型 PR (32 commits, 5000+ 行),旨在为 SQLite 添加完整的 AI 功能支持。

在审查和 rebase 过程中发现,该 PR 使用了过时的 APIAIMessage/AIConversation),而 main 分支已经迁移到新的 AIBlock API。

问题分析

1. API 不兼容

PR #131 实现了以下功能的 SQLite 版本:

  • AIConversation / AIMessage - 旧的对话持久化 API
  • EpisodicMemory - 情景记忆
  • UserPreferences - 用户偏好
  • AgentMetrics / ToolMetrics - 性能指标

但这些实现使用的是已被废弃的 API。main 分支已经使用 AIBlock 统一模型。

2. Rebase 复杂度

PR #131 落后 main 分支 32 个 commits,包含:

  • AI 架构重构(UniversalParrot、Unified Block Model)
  • 路由层优化(三层意图分类)
  • 性能优化(缓存、并发)

每次 rebase 都需要解决大量冲突,增加维护成本。


✅ 解决方案:分阶段完成

阶段 1:缩小 PR #131 范围(已完成)

将 PR #131 限定为向量搜索功能

  • ✅ 保留 memo_embedding 表和向量搜索逻辑
  • ✅ 保留 sqlite-vec 静态链接集成
  • ❌ 移除 AIConversation / AIMessage 相关代码
  • ❌ 移除 EpisodicMemory / UserPreferences / AgentMetrics

理由:向量搜索是独立功能,与对话 API 解耦。

阶段 2:后续 PR 计划

PR 功能 优先级 复杂度 状态
#131 (当前) 向量搜索 + sqlite-vec P0 ✅ 审查中
#132 AIBlock SQLite 支持 P0 🚧 待创建
#133 EpisodicMemory SQLite 支持 P1 🚧 待创建
#134 UserPreferences SQLite 支持 P1 🚧 待创建

💡 建议:频繁 Rebase

为避免大型 PR 的 rebase 痛苦,建议:

  1. 小步快跑:每个 PR 专注于单一功能
  2. 频繁 rebase:每周至少 rebase 一次 main 分支
  3. 及时合并:代码审查通过后立即合并,不要堆积
理想流程:
feature branch ──▶ small PR ──▶ review ──▶ merge ──▶ delete branch

避免:
feature branch ──▶ large PR ──▶ 32 commits behind ──▶ painful rebase

🚧 依赖变更说明

SQLite 驱动切换

⚠️ 重大变更: 从 modernc.org/sqlite 切换到 mattn/go-sqlite3

驱动 CGO 扩展支持 用途
modernc.org/sqlite ❌ 否 默认模式(纯 Go)
mattn/go-sqlite3 ✅ 是 AI 模式(sqlite-vec)

影响:

  • 启用 sqlite-vec 需要 CGO_ENABLED=1
  • 交叉编译需要相应工具链
  • 不启用 AI 功能时,仍可使用纯 Go 构建

📝 破坏性变更说明

此 PR 删除了 ai_conversationai_message 表定义,因为它们使用了已废弃的 API。

对于现有 SQLite 用户:


任务清单

当前 PR #131

  • 移除 AIConversation / AIMessage 相关代码
  • 移除 EpisodicMemory / UserPreferences / AgentMetrics
  • 简化迁移文件(仅保留 memo_embedding
  • 更新文档说明限制
  • 添加 DROP TABLE 语句清理旧表
  • 添加驱动切换说明

后续 PR


相关链接


标签: sqlite, ai, refactor, good first issue

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Metadata

Metadata

Assignees

Labels

aibackendBackend related changes

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions