核心问题

如何设计一个从Cursor对话记录中自动提取用户提问并存入MySQL的个人知识库系统?


项目背景

在日常开发中,Cursor 等 AI 编程助手的对话记录蕴含了大量技术提问和思考,但这些记录散落在本地文件夹中,难以系统化地沉淀为个人知识库。为此,我们规划了一个个人知识库采集系统,专门从 Cursor 的 agent-transcripts 对话记录中自动提取用户提问,存入本地 MySQL 数据库,作为知识沉淀的基础。后期可接入 LLM 进行总结、写文等衍生应用。

该系统与圆圈网(circler)业务代码独立部署,保持轻量和专注。

核心功能

1. Cursor 对话采集

系统通过读取 agent-transcripts 目录下的 {uuid}/{uuid}.jsonl 文件,筛选 role=user 的消息,并从 <user_query> 标签中解析出纯文本提问。

  • 跳过 subagents/ 子目录,只处理主对话记录;
  • 每次运行都会记录处理进度,支持增量读取。

2. 去重与增量

为保证知识纯净并避免重复存入,系统设计了多层去重机制:

  • 文件级增量:记录每个文件已处理的行号,再次运行时跳过已处理部分;
  • 内容级精确去重:对提取的提问文本计算 SHA256 hash,若已存在则不再入库;
  • 未来可选:基于文本相似度(如编辑距离)的模糊去重。

这样系统可以每天重复运行,自动累积历史提问。

3. 交互式工具与扩展

主程序 main.py 采用菜单式交互,方便手动触发采集和查看状态。架构上预留了「最新资讯采集」等扩展位,后续可添加新闻采集或网页抓取模块。

数据库设计

使用 MySQL 数据库 knowledge_base,MVP 阶段只建立三张表:

表名 用途
kb_source_file 记录每个源文件的扫描进度(已处理行号),实现增量读取
kb_question 核心表,存储用户提问内容、hash值、来源文件等
kb_import_log 记录每次采集的运行日志(开始/结束时间、处理统计等)

第二阶段会引入 kb_answer 和 kb_news 表,用于存储模型回答或采集的资讯内容。

项目结构

项目目录规划如下,保持模块清晰:

knowledge_base/
├── main.py              # 交互入口,菜单控制
├── config.ini           # 数据库连接信息 + transcripts 路径配置
├── db/                  # 数据库相关
│   ├── schema.sql       # 建表语句
│   └── connection.py    # 数据库连接工具
├── collectors/          # 采集器模块
│   ├── cursor_collector.py   # Cursor 对话采集
│   └── news_collector.py     # 新闻采集(暂为空壳)
└── utils/               # 工具函数
    ├── text_cleaner.py  # 文本清洗(去掉标签、空白等)
    └── dedup.py         # 去重逻辑(hash计算、增量检查)

配置文件 config.ini 让数据库地址和 transcript 路径可自由调整,方便在不同工作区或电脑间迁移。

实施路线

MVP 版本预计 2.5 天 内完成,分阶段推进:

  • Phase 1:创建数据库和表结构,编写 config.ini 解析与数据库连接模块;
  • Phase 2:实现 cursor_collector.py,包含文件扫描、用户提问提取、去重逻辑与增量记录;
  • Phase 3:编写主程序 main.py,整合菜单交互与采集流程联调;
  • Phase 4:预留 news_collector.py 空壳,为后续扩展占位。

后续迭代(Phase 5–7)将加入 LLM 总结、自动写文、Web 界面等功能,逐渐扩展为完整的知识管理工具。

关键设计细节

路径可配置化

对话记录路径不硬编码,必须通过 config.ini 指定。这样换电脑或切换工作区时只需修改配置,无需改动代码。

三层去重策略

  1. 文件增量:记录行号,跳过已处理部分;
  2. 内容 hash 去重:SHA256 精确比对;
  3. 预留相似度去重:可后续加入 Jaccard 或 MinHash 等方法。

运维与安全

  • 敏感信息脱敏:可在提取后对邮箱、API key 等做模式替换;
  • 定期备份:MySQL 数据定期 dump,防止丢失;
  • 日志规范:采集运行日志存入 kb_import_log,便于追踪问题。

小结

这个个人知识库采集系统专注于轻量、可增量、易扩展,以 Cursor 对话为起点,通过结构化存储和多层去重,将零散的提问转化为可长期沉淀的知识资产。规划文档已清晰定义边界与阶段目标,后续即可按图索骥进入编码实现。