非官方社区插件,由社区成员独立开发和维护。
Important
AI 生成声明:本项目基本由 AI 生成。 作者负责提出需求、实际试用和验收,并进行了简单测试。目前未发现恶性 Bug,但不代表已经过完整测试,欢迎通过 GitHub Issues 反馈 Bug。
把 AI 的长回答变成可以原地追问、层层展开、随时回看的学习页面。
- Node.js
^22.19.0或>=24 - pnpm
- DeepSeek Harness Web
- 当前版本基于
@deepseek-ai/dsh0.1.1-rc.2开发和测试
安装仓库的最新版本:
dsh plugin --profile web add github:Chen-chy/dsh-inline-study仓库已经提交预构建的 lib/ 产物,GitHub 安装不需要执行构建脚本,也不需要修改 profile 的 allowBuilds 设置。
克隆或下载仓库后,在项目目录中运行:
pnpm install
pnpm run build
dsh plugin --profile web add .重新启动 Web 服务:
dsh web如果服务已经运行,请先按 Ctrl+C 停止,再重新启动,并在浏览器中执行一次硬刷新。
检查插件是否已经挂载:
dsh plugin --profile web list卸载:
dsh plugin --profile web remove dsh-inline-studyAI 已经可以帮助我们学习几乎任何知识。真正的问题往往不再是“AI 能不能回答”,而是它一次性给出的内容太多:一个概念、一行公式或一个证明步骤没看懂,如果直接在主对话里继续追问,局部疑惑就会不断写入主时间线,占用原会话上下文,也打断原本连续的学习过程。
dsh-inline-study 因此而生。它为 DeepSeek Harness Web 增加了一套类似论坛“楼中楼”的行内学习批注:选中不理解的内容,问题就在原处发起,回答也在原处展开;还可以继续选中批注回答中的句子,建立下一层问题。主对话保持干净,知识探索则形成一棵可以收起、展开和回看的问题树。
插件不仅能处理普通文本,也能识别跨行选择、富文本、行内公式与独立行间公式。选中内容后,五种学习动作会直接出现在原文附近:
面对英文材料时,工具栏、批注回答与疑问导航会自动使用英文。已经建立的问题会保留高亮,并集中显示在右侧导航中:
工具栏会跟随选中材料的语言,而不是机械地跟随网页界面语言:
传统 AI 对话只有一条不断向下延伸的时间线。局部问题、补充解释、公式推导和正确性检查混在一起后,用户很难重新找到“当时究竟卡在哪里”,主会话也会越来越偏离原来的主题。
这个插件把 AI 回答转换成一份可交互的学习材料:
- 主回答负责维持完整叙事;
- 行内批注负责处理局部疑惑;
- 楼中楼负责继续拆解批注回答中的新问题;
- 疑问导航负责集中检索、回跳和复习。
它尤其适合数学证明、物理公式、论文阅读、代码讲解、技术文档学习,以及备考时整理易错点和知识盲区。
选中 AI 已完成回答中的句子、段落、代码、证明步骤或公式,浮动工具栏会立即出现。生成的回答附着在原文附近,不进入主对话时间线。
支持单行选择、跨段选择、富文本、行内 KaTeX 公式、独立行间公式,以及跨越“文字 → 公式 → 文字”的连续选择。
| 操作 | 核心意图 | 行为 |
|---|---|---|
| 提问 | 自由问题 | 打开输入框,针对选中内容提出自己的问题 |
| 提示 | 帮助迈出下一步 | 定位障碍并给出最小有效提示,尽量不提前揭示答案 |
| 解释 | 理解含义与结构 | 说明概念、术语、句子、论证、代码、数据或公式的含义,以及它在上下文中的作用 |
| 推导 | 从前提走到结论 | 从最近的已知条件开始,逐步写出运算、公式与依据 |
| 检查 | 判断是否正确或缺条件 | 给出结论,检查假设、定义域、符号、系数、约定与遗漏条件 |
“解释”并不是“简化推导”:它面向任何类型的知识材料,优先讲清核心意思、组成部分、相互关系和局部语境;只有在理解含义确实需要时,才引用少量推导。每个动作都使用完整的模式协议,而不是一句简单指令。相同批注里的后续提问会继续遵守原模式,例如“继续提示”只给更强的一步提示,“继续解释”继续澄清含义,“继续推导”只修补或延伸当前推导链。
批注回答本身也可以再次选中并提问,从而形成树状结构:
Q1 → A1
│
├─ 选中 A1 的句子 a
│ └─ Q2 → A2
│ └─ 选中 A2 的句子 b
│ └─ Q3 → A3
│
└─ 选中 A1 的另一句 c
└─ Q4 → A4
每个节点都能独立展开、收起和关闭。收起父节点会暂时隐藏它的子树;关闭父节点会删除整棵可见子树及其高亮。
这是插件最重要的设计之一。
| 操作 | 会话行为 | 是否写入主对话 |
|---|---|---|
| 在原回答中选中文字提问 | 创建新的独立批注会话 | 否 |
| 在批注回答中创建楼中楼 | 再创建一个新的独立批注会话 | 否 |
| 点击同一批注的“继续提问” | 沿用该批注自己的会话 | 否 |
新批注只会把选中内容和用户指定的上下文快照复制到新的 Prompt 中,不继承或修改父会话的隐藏历史。只有同一批注内部的“继续提问”会累积该批注自己的上下文。
因此,用户可以深入研究一个局部问题,而不用担心主对话被大量支线问题占满。
flowchart LR
M["主对话:保持原有连续性"] -->|"复制选中内容与上下文"| Q1["独立批注 Q1 → A1"]
Q1 -->|"同一批注继续提问"| F1["沿用 Q1 的独立会话"]
Q1 -->|"选中 A1 中的新片段"| Q2["新的独立批注 Q2 → A2"]
创建批注后,原文会保留琥珀色高亮。插件会保存文本引用、前后文、块索引、可见文本偏移和归一化指纹,用于刷新页面后恢复定位。
- 支持跨多个语义块的高亮;
- 支持 KaTeX 可见文本与隐藏无障碍文本并存的结构;
- 支持嵌套批注回答中的高亮;
- 如果原文已经变化且无法安全定位,插件宁可停止附着,也不会跳到错误位置。
所有批注会按问题树顺序集中到侧边栏中,形成一份自动生成的“疑问清单”。
- 点击摘要或“跳回原文”,快速回到对应高亮;
- 跳转到楼中楼时,自动展开被收起的祖先节点;
- 在侧边栏直接展开对照;
- 同时查看选中内容、所在段落和最新回答;
- 回答继续使用 Markdown 与 KaTeX 渲染,方便核对公式。
- 桌面端侧栏会为正文让出空间,并可拖动左边缘调整宽度;设置会保存在当前浏览器中。
对于备考场景,这个侧边栏可以充当随学习过程自动积累的错题本和知识盲区索引:复习时不必重新翻阅整段 AI 对话,只需要依次检查曾经产生过疑问的位置。
每次操作都可以选择模型看到的范围:
- 附近内容:前一个语义块、选中内容和后一个语义块;
- 当前回答:当前完整 AI 回答;
- 完整对话:Harness 当前已经加载的父会话窗口。
默认情况下,提问、提示、解释和检查使用“附近内容”,推导使用“当前回答”。
插件不会再把“用户界面语言”当成回答语言。划词工具栏优先识别选中内容的语言;自由提问和继续提问则以用户实际输入的问题语言为准。提示、解释、推导和检查没有自由输入时,以选中内容的主要自然语言为准。纯公式或代码无法判断语言时,会先参考所在段落,最后才回退到界面语言。
模型请求末尾也会加入相同规则的强制约束,确保标题、结论和正文保持一致,同时原样保留公式、代码、引用和必要的专有名词。例如,在中文界面中选中英文教材内容,工具栏和回答都会使用英文;如果随后用中文继续提问,新的回答则切换为中文。
批注内容、树结构、状态和高亮锚点按会话保存在浏览器 localStorage 中。刷新页面或重新打开会话后,插件会从根节点到子节点依次恢复批注与高亮。
- 打开一个已经完成生成的 AI 回答。
- 选中希望进一步学习的文字、代码或公式。
- 点击 提问、提示、解释、推导 或 检查。
- 在原文下方阅读回答,必要时点击“继续提问”。
- 继续选中批注回答中的内容,创建楼中楼问题。
- 打开右侧“疑问导航”,统一查看、回跳和展开对照。
快捷键:
Enter:提交自由问题;Shift + Enter:输入换行;Escape:取消输入或关闭划词工具栏。
- 可见批注数据保存在当前浏览器本地;
- 批注不会修改主对话历史;
- 每个新批注拥有独立的 Harness 推理会话;
- 删除批注会清除本地批注、高亮和树关系;
- Harness 当前没有可靠的持久会话删除 API,因此已经归档的底层推理会话可能仍保留在 Harness 存储中。
- DeepSeek Harness 仍处于开发者预览阶段,后续 DOM 或客户端 API 变化可能影响兼容性;
- 只能在 AI 回答或批注回答完成生成后创建新批注,流式生成中的文字暂不可批注;
- “完整对话”只包含当前浏览器已经加载的事件窗口;
- 当前 MVP 不包含云同步、移动端专项布局、语义数学解析、工具调用和自定义动作。
pnpm run typecheck
pnpm test
pnpm run build当前测试覆盖动作与 Prompt、上下文隔离、楼中楼树结构、持久化、文本锚定、多块高亮、KaTeX 行间公式识别和侧边栏排序。
更多实现细节请参阅 IMPLEMENTATION_PLAN.md。



