用“文件夹”思想管理 AI 对话——无限分支、常数级检索、随开随关不乱
| 场景 | 时间复杂度(最坏) | 说明 |
|---|---|---|
| 扁平列表全文搜索(遍历所有消息) | O(n^k) | n=单轮平均消息数,k=对话轮数;每深一轮就要把前面所有消息再扫一遍,指数爆炸。 |
| 树形文件夹检索(先定位节点,再读局部) | O(n·k) | n=节点内平均消息数,k=节点深度;最多沿单分支走到底,线性增长。 |
换句话说,当讨论深度从 5 层到 10 层时,全文遍历的搜索量可能 32 倍 于文件夹检索。
这对需要“来回翻旧账、不断分叉”的深入讨论尤为致命——也是市面上聊天工具越聊越卡的原因之一。
| 功能 | 操作入口 | 备注 |
|---|---|---|
| 🔧 字体 / 模型 任意换 | 顶部“设置”图标 | 即时生效;字体大小、行高、AI 后端(OpenAI / Claude / 本地模型)均可下拉切换。 |
| 🌳 无限节点树 | 左侧目录栏 | 2 月原型阶段即支持 无限级 折叠 / 展开,早于已知同类项目。* |
| 🌱 两种“开分支”方式 | ① 右键任意节点 → 新建 / 重命名 / 删除 ② 选中对话文字 → 弹出“用这段文字创建子节点” |
边聊边分叉,灵感不丢失。 |
| 💾 结构全留存 | 自动保存 *.json | 下次打开树形、展开状态、节点顺序 1:1 还原,无需手动导出。 |
* 当时调研到的 Cherry-Studio 仅二级节点,且公开版本时间晚于本 demo。
- 安装
git clone https://github.com/yourname/chat-tree-demo.git cd chat-tree-demo npm i npm run dev - 开分支
- 右键左侧节点 → “新建子节点”
- 或 在右侧消息气泡里划一段文字 → 自动出现“+子节点”按钮
- 换模型 / 字体
右上角 ⚙️ 设置 → 立即生效,无需重启
| 等级 | 描述 |
|---|---|
| 🔴 Demo 级粗糙 | UI 未打磨,设置项只在运行期生效,退出即恢复默认;存在偶发折叠动画错位。 |
| 🟡 曝光不足 | 尚未发布到插件商店 / 应用市场,仅仓库可见。 |
| 🟢 架构已稳 | 树形数据结构 & 自动保存逻辑已跑 3 个月未丢数据,可放心当“草稿纸”。 |
- 设置持久化(localStorage → IndexedDB)
- 节点内全文搜索(仍保持 O(n·k) 的局部搜索)
- 多人在线同棵树(CRDT 冲突解决)
- 发布 VSCode 插件 / 独立 App
MIT © 2025 yifeng xiao
如果你觉得“文件夹式聊天”有道理,请点个 ⭐ 让更多人看见!