DeepSeek Harness
Timeline 现已支持 DeepSeek Harness。如果你在用 DeepSeek Harness,可以安装原生插件 dsh-timeline —— 时间轴、收藏文件夹、提示词库、对话导出、公式复制,熟悉的功能都在,主题跟随、开箱即用。
仓库地址:https://github.com/houyanchao/dsh-timeline
Timeline是什么?
Timeline 是专为 ChatGPT、Gemini、DeepSeek 等 AI 对话页面打造的浏览器提效插件。它不改平台原有界面,只在页面里补上长对话真正缺的能力:时间轴导航、收藏整理、提示词库、对话导出、公式复制和数据备份。
和 AI 聊得越久,翻找就越费劲:
- 想回看某次提问,只能一路往上滚。
- 有价值的结论散落在不同会话里,事后很难再找到。
- 公式、代码、图表不好带走,复制粘贴也费事。
- 各平台输入习惯不一样,常用提示词和追问流程要反复操作。
- 插件数据困在单个浏览器里,换设备或换浏览器不好迁移。
安装
推荐通过浏览器官方商店安装:
安装后打开受支持的 AI 对话页面即可使用。大多数功能默认开启,也可以在扩展设置面板中按平台或功能关闭。
功能
| 分类 |
说明 |
| 对话导航 |
在页面右侧生成时间轴,每个节点对应一次用户提问,支持点击跳转、键盘导航、回到底部和提问时间标签。 |
| 问题列表 |
将当前会话中的问题集中展示,支持跳转、收藏和标记重点,适合按问题维度回顾长对话。 |
| 收藏与归档 |
支持收藏单条问答或整页会话,并使用文件夹、备注和搜索进行管理。部分平台支持在原生侧边栏中展示收藏入口。 |
| 输入增强 |
支持提示词库、快捷追问、智能 Enter 行为、输入框动画和常用设置入口。 |
| 阅读与复制 |
支持文本高亮、LaTeX / MathML 公式复制、Mermaid 图表预览和代码块辅助操作。 |
| 代码运行 |
支持 JavaScript、TypeScript、SQL、HTML、JSON、Markdown 等常见代码块的运行或预览。 |
| 数据管理 |
支持 JSON 导入导出、Google Drive 备份与恢复,用于数据迁移和多设备同步。 |
| 个性化设置 |
支持时间轴主题色、对话宽度调整、多语言界面和细粒度功能开关。 |
支持平台
| 平台 |
时间轴 |
高亮 |
智能输入 |
输入动画 |
快捷追问 |
提问时间 |
侧边栏收藏 |
回到底部 |
| ChatGPT |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| Gemini |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
| DeepSeek |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| Claude |
支持 |
支持 |
支持 |
- |
支持 |
- |
支持 |
- |
| Kimi |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| 豆包 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| 通义千问 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| Qwen 国际版 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
| Grok |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
- |
- |
| Perplexity |
支持 |
支持 |
支持 |
- |
支持 |
- |
- |
- |
| 腾讯元宝 |
支持 |
支持 |
支持 |
支持 |
支持 |
- |
- |
- |
| 文心一言 |
支持 |
支持 |
- |
- |
支持 |
- |
- |
- |
| NotebookLM |
- |
支持 |
支持 |
- |
支持 |
- |
- |
- |
公式复制、代码运行和 Mermaid 图表能力不依赖特定 AI 平台。只要页面中存在可识别内容,扩展会尽量提供对应操作。
数据与隐私
Timeline 的核心数据默认保存在浏览器本地,包括收藏、文件夹、提示词、设置项、时间标签和笔记内容。
可选的 Google Drive 同步只会在用户主动授权后使用,并用于备份和恢复扩展数据。扩展不会收集、上传或分享用户的对话内容和个人信息。
本项目已开源,所有数据处理逻辑都可以在仓库中审查。
权限说明
| 权限 |
用途 |
storage |
保存收藏、文件夹、提示词、功能设置和本地数据。 |
unlimitedStorage |
避免长对话收藏、笔记和备份数据受浏览器默认配额影响。 |
identity |
用于 Google Drive 授权备份和恢复。 |
activeTab |
在用户当前打开的 AI 页面中启用扩展功能。 |
多语言
当前内置 19 个语言包:
| 语言 |
代码 |
| English |
en |
| English (US) |
en_US |
| English (GB) |
en_GB |
| 简体中文 |
zh_CN |
| 繁體中文 |
zh_TW |
| 繁體中文(香港) |
zh_HK |
| 日本語 |
ja |
| 한국어 |
ko |
| Deutsch |
de |
| Français |
fr |
| Español |
es |
| Italiano |
it |
| Português |
pt_PT |
| Русский |
ru |
| Polski |
pl |
| हिन्दी |
hi |
| ไทย |
th |
| Tiếng Việt |
vi |
| Bahasa Indonesia |
id |
本地开发
本仓库是浏览器扩展项目,构建不需要安装依赖。开发时,在项目根目录启动监听模式:
node scripts/build-content.js --watch
启动时会先生成一次,之后保存资源清单引用的 JavaScript 源码或修改清单,会自动重新生成按需加载资源。保持终端运行,按 Ctrl+C 结束监听。生成失败会提示错误并继续监听,修正后保存即可重试。
资源清单在 scripts/content-bundles.config.json,js/content/bundles/ 和 js/content/config.js 为生成文件,请修改原始源码。只想生成一次时,运行 node scripts/build-content.js;Chrome、Firefox 打包命令也会自动生成这些资源。
然后加载源码目录:
- 打开 Chrome 或 Edge 的扩展管理页面。
- 启用开发者模式。
- 选择“加载已解压的扩展程序”。
- 选择本仓库根目录。
- 修改代码并保存,等待终端提示生成成功,再在扩展管理页面点击重新加载,并刷新目标 AI 平台页面。监听模式不会自动重新加载扩展或刷新网页;CSS 样式直接使用源码,无需重新生成。
Firefox 调试可使用 about:debugging 临时加载扩展。
按需加载与新增模块
manifest.json 为 GPT、Claude 保留 MAIN 世界的 document_start 早期脚本,用于 API 捕获和滚动保护。所有网页先加载轻量入口,识别为内置平台、已保存的镜像站或启用的自定义站点后,再加载 core。用户主动打开插件设置或进行站点适配时,也会加载所需功能。
普通网页保留轻量的公式发现和划词入口。出现公式、用户划词,或本站已有高亮标注时,加载独立的 common 包恢复公式复制、高亮和标注,不会因此初始化 AI 平台功能。同源标注会预先启用共享功能,以支持 SPA 切换页面后自动恢复标注。公式发现只查询新增子树及相关属性变动;共享包成功加载后会移除这些轻量入口。
代码加载与平台启动分别管理:AITContentLoader.load() 只加载代码和样式;activate() 确认当前站点受支持后加载 core 并启动平台功能。各平台入口通过 AITPlatformFeatures.register('功能名', initialize, { delay: 500 }) 注册,只有确认站点后才执行;delay 可省略。重复或并发启动复用同一功能的任务,失败的入口允许后续重试。因此普通网页先打开设置、随后识别为镜像站时,也能正常启动时间轴和提示词等功能。
未知域名通过内置平台的提问节点 DOM 选择器识别镜像,只有唯一平台命中才保存域名映射,并在当前页面触发 core 补加载。首次观察 30 秒,有 DOM 变化时每秒最多检查一次,结束前补查;未识别则断开 DOM 观察。切回页面或操作输入框时可再开启 10 秒观察,后台页面暂停检测,命中后移除检测监听。选择器由平台适配器构建生成;修改观察策略的源码是 js/mirrorSiteDetector/mirror-site-detector.js。
| 功能包 |
加载时机与职责 |
common |
AI 核心的共享依赖;普通网页使用公式或高亮功能时也可独立加载 |
core |
识别到支持的站点后加载,提供时间轴、提示词按钮等自动生效的功能及共享组件 |
panel |
首次打开设置或相关设置弹窗时加载 |
runner-ui |
首次点击运行代码时加载 |
export-ui |
首次打开对话导出时加载 |
支持构造样式表时,每个功能包并行读取 CSS 文本,再按 styles 清单顺序应用,全部完成后才执行 JS;属性存在但访问或应用失败时也会切换到 <link> 回退,回退保留串行加载顺序。同一页面的并发调用会共用加载任务,成功后重复调用会复用结果。共享界面所需的样式应随共享功能加载。例如,输入框提示词菜单在打开设置前就会使用,因此它的样式必须放在 core,不能只放在 panel。生成配置和自定义站点配置统一从 globalThis 读取,兼容 Firefox 内容脚本中 window 与 globalThis 不同的情况。
新增模块时,维护 scripts/content-bundles.config.json:
- 已有功能的辅助文件加入对应包的
scripts;数组顺序就是执行顺序,基础类和依赖应放在使用者之前。新增文件不会自动纳入功能包。
- AI 页面自动工作的功能放入
core,启动函数通过 AITPlatformFeatures.register() 注册,避免随代码加载直接启动。跨站共享功能放入 common;点击才使用的独立功能可新增包,在入口 await window.AITContentLoader.load('包名') 后再调用其界面。core 依赖 common,其他包默认依赖 core;可通过 dependencies 数组显式指定依赖,common 使用空数组以便独立加载。
- 不同包各自具有独立作用域。其他包需要使用的顶层类、常量或函数应加入所属包的
exports;构建后会将它们暴露到扩展的隔离环境。
- CSS 加入所属包的
styles,同时检查 manifest.json 的 web_accessible_resources 是否覆盖新增 CSS、图片等资源。功能包 JS 已由 js/content/bundles/*.js 覆盖。
- 保存清单后,监听模式会更新被监听的源文件并重新生成。首次点击功能的验证应从刷新后的页面开始,尤其检查尚未打开设置时,共享按钮和弹窗的样式是否正常。
普通新增功能维护 bundles 即可;固定注入入口和早期脚本仍由 manifest.json 管理。node scripts/build-content.js --check 可以检查生成资源是否与源码、清单一致。
反馈
欢迎通过以下方式反馈问题或提出需求:
提交问题时建议包含浏览器版本、扩展版本、目标 AI 平台、复现步骤、预期行为、实际行为和截图。
致谢
本项目基于 chatgpt-conversation-timeline 继续开发,感谢原作者的开源贡献。
Gemini 图片去水印功能(js/watermark/engine/)移植自 GargantuaX/gemini-watermark-remover(MIT),其反向 Alpha 混合算法与校准蒙版源自 allenk/GeminiWatermarkTool(MIT,© 2024 AllenK / Kwyshell)。完整许可证见 js/watermark/engine/LICENSE。
许可证
本项目基于 GPL-3.0 许可证开源。
如果 Timeline 对你有帮助,欢迎给一个 Star。
评论