~/Jaycee
← 返回作品列表

DeepSeek 侧边栏增强

为 DeepSeek 网页版侧边栏增加对话文件夹管理、拖拽归类与主题跟随的 Edge/Chrome 扩展(Manifest V3)。

GitHub 源码 ↗
DeepSeek 侧边栏增强 的封面图

项目背景

DeepSeek 网页版的对话历史是一条平铺列表,对话数量一多,找回某次会话只能靠肉眼滚动加搜索。这个项目以浏览器扩展(Manifest V3)的形式,为原生侧边栏补上文件夹分类管理能力:对话可以归类、嵌套、拖拽排序,同时保持与原生 UI 完全一致的视觉与交互——看起来就像官方功能的一部分。

项目的三条设计底线:原生融合(视觉与交互不割裂)、隐私优先(数据不出浏览器)、轻量健壮(接口变更时有兜底路径)。

核心功能

  • 文件夹管理:新建、行内重命名、删除(组内对话自动回到「未分类」);展开/折叠状态持久化,刷新不丢
  • 无限层级嵌套:文件夹可拖拽为另一文件夹的子级;删除父文件夹时整棵子树一并删除,确认框会提示其中的子文件夹与对话数量
  • 拖拽归类与排序:对话拖入/拖出文件夹、文件夹跨层拖拽排序;拖拽过程有 ghost 预览与目标高亮脉冲,折叠文件夹悬停 600ms 自动展开
  • 与原生双向同步:点击对话卡片转发原生路由(SPA 导航完整执行);在 DeepSeek 原生界面重命名/删除对话,增强列表实时跟随;删除操作优先复用 DeepSeek 原生确认框
  • 主题跟随:Shadow DOM 内实时提取原生侧边栏的颜色、字体、圆角等设计令牌,DeepSeek 换肤时扩展 UI 即时跟随;提取失败回退内置暖灰色板
  • 全键盘可达:Tab + Enter/Space 完成浏览与操作,菜单支持方向键导航与 Esc 关闭(焦点归还触发按钮)
  • 操作反馈:拖放目标中性高亮、异步操作 pending 态、失败保留原状可重试、Toast 在侧边栏内底部居中

技术实现

  • 数据获取双路径:注入 MAIN world 拦截 fetch/XHR 的会话接口(/api/v0/chat_session/*)为主路径;解析失败时自动降级为 MutationObserver 监听原生 DOM 提取,保证 DeepSeek 接口变更时列表不至于空白
  • UI 完全隔离:Vue 3(<script setup>)+ Pinia 构建侧边栏应用,挂载在 Shadow DOM 内;Tailwind CSS 关闭 preflight 并以 ?inline 模式注入 Shadow Root,与宿主页面零串扰
  • 安全的消息桥:内容脚本与页面拦截器之间通过 postMessage 通信,带来源标识 + 类型白名单校验
  • 主题对齐算法:挂载与主题切换时从原生侧边栏提取基准设计令牌,hover/active 等交互色由基准色 color-mix 派生,保证任意主题下都有协调的层次
  • 本地持久化:文件夹结构、chatId ↔ folderId 映射、未分类排序均存储于 chrome.storage.local,去抖写入 + 变更订阅,多标签页自动同步
  • 工程化构建:Vite 5 + @crxjs/vite-plugin,TypeScript 全量类型覆盖,图标采用统一描边规范的 lucide 线条体系

隐私与权限

权限最小化申请,不收集、不上传任何数据,全部数据仅存于本机浏览器:

权限用途
storage将文件夹结构与归类关系保存到 chrome.storage.local(仅本机)
*://chat.deepseek.com/*仅在 DeepSeek 网页版注入内容脚本,替换侧边栏对话列表

透明化说明:扩展会拦截页面自身的会话接口响应用于解析对话列表(数据全程留在页面内存);登录 Token 仅在你主动执行删除/重命名/分享时代发官方请求使用,只存在于内存、不写入存储、不离开浏览器;不存储任何对话内容,卸载即彻底清除;默认不向控制台输出任何日志。

本项目为非官方第三方工具,基于 MIT 协议开源;依赖 DeepSeek 当前的接口与页面结构,官方更新可能导致功能失效。