> 本模块随 Harness Research Studio 统一发布。安装、迁移和构建请以[根目录说明](../../README.md)为准。 # 本地会话地图 · Local Map 为 **DeepSeek Harness Web 0.1.5-rc.2** 独立编写的本机会话树插件,版本 **0.2.2**。与数学实验室 0.2.0 配合使用。 从已完成节点继续提问,每次建立一个独立的原生子会话,并把相关分支显示在一棵树上: ```text 轮次 1:共同问题 ├─ 轮次 2:方向 A │ └─ 轮次 3:沿 A 深入 └─ 轮次 2:方向 B ``` ## 会话模式与侧栏 地图顶部仅保留紧凑工具栏,展开阅读与新会话按钮同筛选项排列。有图表时阅读区默认左正文、右图表,图表占 55%;拖动分隔线或滑块可调至 25%–75%,支持上下排列并记住选择。窄区域自动上下显示。 选中轮次的公开思考、过程说明和工具记录单独显示。运行中和完成后都默认收起,手动展开可查看完整过程;思考首次完成后自动收起,之后可再次展开查看;切换节点严格按所属会话和轮次读取。工具详情留在地图内,不跳出到普通对话。只呈现 DSH 已提供给界面的可见记录。 权限申请和交互问题直接出现在地图阅读区:显示执行会话、工具、理由、命令或路径等目标,可允许本次、拒绝或填写答案。同一会话树其他分支有待处理请求时提供跳转入口;归档不会隐藏仍待处理的请求,也不会自动批准。每次决定校验请求 ID 与所属会话。 普通会话的标题栏,以及归集侧栏每个会话右侧,都提供“启用会话地图模式”入口。选择后,该会话家族以紫色标记,以后通过会话地图浏览和追问;此模式不提供切回普通对话的开关。已有分支归入主会话,展开后显示各分支第一条独立追问。 地图中的单击和双击都只选择节点,不再把历史节点打开成可向尾部追加消息的普通对话。从地图发送问题也会启用地图模式。工作区下未选择地图模式的其他普通会话保持原有使用方式。 工作区标题右侧的“原生列表 / 归集列表”可在同一位置双向切换,折叠侧栏时也可使用底部切换按钮。归集列表中,点击工作区名称右侧的“⋯”可删除工作区;浏览器确认后调用 DSH 原生删除接口,仅移除工作区登记,文件夹、会话记录和归档状态保留,会话显示在“未归集工作区”下。删除正在筛选的工作区时,地图自动切回全部工作区。 “归集侧栏 / 原生列表”只切换列表组织方式,不解除已启用的地图模式。原生列表仍可用于重命名、归档、移动和工作区管理;已固定的会话打开后仍显示地图。模式标记保存为原生会话事件,浏览器仅缓存会话 ID 以加快恢复。卸载插件不会删除会话数据;展示约束只在装有本插件的 Web 客户端内生效。 ## 分支、文件与设置 - 输入区明确显示“从轮次 N 追问 → 轮次 N+1”。新追问只继承到所选轮次的结束事件,不包含其后的排队消息或其他分支。 - 在地图右侧直接选择文件、模型、推理等级及访问模式,并查看当前所属工作区。文件先留在当前节点的页面草稿里,发送时先创建正确的子会话,再向该子会话上传并提交,文件回执不会跨会话误用。 - 每个起点保存各自的页面草稿、附件和提交进度。准备或上传失败可复用原子会话继续重试;如果发送结果尚未确认,保留原请求标识与原内容,避免改变内容后重复提交。 - 上传或提交阶段可以取消;生成阶段可以停止。权限审批和问题请求在地图输入区处理。 - 字体大小可在 12–24 px 调整,阅读区支持拖动分隔条或展开为完整宽度,再恢复地图。选择的节点、字号、阅读宽度、地图位置和折叠状态会记住。 - 引用选中文字可加入当前节点草稿;拖动背景平移,Ctrl 加滚轮缩放,拖动卡片顶栏定位,支持折叠与自动整理。 访问权限的具体可选项来自当前 DSH,不由插件创建更宽的权限预设;工作目录仍通过 DSH 的工作区管理调整。模型调用仍遵循 DSH 的配置与服务端规则。未发送草稿、附件对象只保存在页面内存,刷新页面会丢失;发送成功的内容由 DSH 保存。 ## 图表结果与归档 安装数学实验室 0.2.0 后,地图右侧的回答下方直接展示该轮的交互图表和实验卡片,不必展开工具轨迹。结果按实际所属会话和原生轮次读取,切换分支不会混入另一分支的图;普通地图页和已固定的地图模式均支持。卡片可打开完整实验室,训练与模拟仍由用户启动。没有安装数学插件时,此结果区为空,不影响地图阅读。 侧栏的普通会话、会话家族、各条分支以及右侧阅读区均提供“归档”菜单。可以明确选择整组、当前分支及后续,或仅当前会话。侧栏与地图顶部的“已归档”入口可阅读和恢复,恢复保留原工作区位置与父子关系。归档不会删除记录,也不会停止已经运行的任务;已归档会话需恢复后才能在地图继续追问。批量操作失败会显示已完成的部分,不将部分成功冒充全部完成。 目标 DSH 版本公开归档接口但尚未公开恢复接口。本插件的恢复命令复用该版本工作区注册器的串行写入队列和持久化状态方法,仅移除选定 ID 的归档标记;不直接改写工作区文件或官方程序。此适配限定已验证的 rc.2 接口形状,接口不符时报告错误。 ## 分叉与附件边界 目标版本 Web 的原生分叉控制器,会将截断点扩展到下一次 `turn/start` 之前。如果用户在两个轮次之间上传并发送文件,附件消息的 `agent/inbox/spliced` 事件可能落在这个区间内。它已在原会话被消费,但在新分支里消费事件没有被继承,因此会重新执行旧消息,让本次问题变成下一轮。 本版通过已有的人工命令通道调用公开 Agent / Session 服务,精确复制到所选 `turn/end`,继承数量必须等于结束事件序号加一。不会修改官方 DSH 安装文件,也不会改写旧对话。若所选结束位置本身仍有未处理队列,会明确拒绝创建,避免自动执行不属于本次追问的消息。 **旧版已经生成的重复节点会保留。** 它们记录了实际发生过的对话,不能通过重编号把使用过旧上下文的回答冒充为独立分支。更新后重新从目标节点追问,会创建正确的新方向。 ## 数学排版 Markdown 表格支持列对齐、单元格内公式与代码;窄阅读栏可横向滚动。转义竖线、代码或公式中的竖线不会被当成列分隔。 右侧支持 Markdown 的常用标题、列表、代码围栏、引用,以及本地 **KaTeX 0.18.7**。可显示矩阵、分段函数、aligned 多行推导、积分、偏导、求和及嵌套分数;支持 `$…$`、`\(…\)`、`$$…$$`、`\[…\]`。代码和普通金额不会被错误转换。 全部脚本、CSS 和 20 个 WOFF2 字体内嵌,公式排版无需 CDN。KaTeX 使用 `trust:false`、复杂度限制和独立宏作用域;回答中的 HTML、远程图片和脚本不会被执行。交互函数图、数据图表、训练与模拟由侧栏的独立“数学实验室”提供。 ## 实现与限制 插件独立编写,没有使用 dsh-synapse 的代码或安装包。服务端注册谱系、单向模式、分叉请求结果投影,以及用于模式启用和精确分叉的人工命令;客户端复用 DSH 已有的认证、上传、模型目录、工作区、权限及会话接口,不新增端口、认证方式、后台任务或统计上报。 一次地图最多读取 120 个相关会话、布局 600 个节点,过大时提示范围限制;侧栏可继续展开更多分支。列表按原生父子关系归集,不以相同标题合并。缺失或移出的父会话不会导致可见子会话消失。 正文呈现所选轮次的最后一段助手文字;完整模型内部轨迹不是地图节点正文。新增附件与模型功能不改变数据离开本机的规则:使用在线模型时,由 DSH 发送本次分支所需的上下文。 ## 重建与验证 ```powershell npm ci --ignore-scripts --no-audit --no-fund node scripts/build.mjs npm test npm run package ``` 设置 `DSH_PACKAGE_JSON` 为本机官方 DSH 的 `package.json` 绝对路径后,可执行含官方接口的测试。测试使用合成会话,覆盖 Web 分叉导致的旧附件重放、精确边界、兄弟节点、冷恢复、上传和重试状态、持久化模式、阅读布局、数学排版,以及原有归集和订阅逻辑。浏览器交互在独立测试 DSH 中核对,不把测试内容写入用户会话。 `src/host.mjs` 和 `src/fork.mjs` 生成服务端 `index.js`;其余源码生成未混淆的浏览器 `client.js`。运行时只复用宿主 React,KaTeX 在构建时内嵌。完整 MIT 和字体 SIL OFL 许可证位于 `LICENSE`。 参考:[官方目标版本](https://github.com/deepseek-ai/DeepSeek-Harness/tree/dsh-v0.1.5-rc.2)、[KaTeX 安全说明](https://katex.org/docs/security)。