dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
DSH 对话问题索引:列出会话中你提过的所有问题,支持搜索、分页与一键定位。
DSH(DeepSeek Harness)Web 界面插件:对话问题索引。在输入框右侧加一个 ☰ 按钮,点开就能看到当前会话里你提过的所有问题,点击任意一条,对话直接滚动定位到那条消息并高亮。
解决长对话的痛点:几十上百轮之后,翻找"我之前问过什么、那条讨论在哪"很痛苦。dsh-indexbookmark 把这个问题变成一次点击。
user/message,按时间顺序带全局序号命中数/总数‹ 1/3 › 翻页,全局编号--dsw-alias-*),亮暗色自动适配# 前提:全局 dsh 与 pnpm(`dsh plugin` 依赖 pnpm)
dsh plugin --profile web add github:cuhaitiang0405-collab/dsh-indexbookmark
dsh plugin 会:
lib/client.js 已随仓库发布,无需构建);dsh.bundle,自动加入 dsh.profile.bundles;cordis.patch.yml。安装完成后重启网页版生效:
# 停掉当前 dsh web,然后
dsh web
cd dsh-indexbookmark # 插件源码目录的父目录
dsh plugin --profile web add ./dsh-indexbookmark
软链方式下,修改 src/client.tsx → node build.mjs → 浏览器硬刷新(Ctrl+Shift+R)即可,无需重新安装。
dsh plugin --profile web remove dsh-indexbookmark
Esc 收起。dsh-indexbookmark/
├── package.json # 插件清单:dsh.bundle + dsh.client 声明
├── cordis.patch.yml # bundle 补丁层(插入插件行)
├── build.mjs # esbuild 构建脚本(JSX → 加载器格式 bundle)
├── lib/
│ ├── index.js # host 端(最小实现,让 Loader 挂载)
│ └── client.js # 浏览器端 bundle(构建产物,随仓库发布)
└── src/
└── client.tsx # 浏览器端源码(唯一需要手写的部分)
# 环境:Node.js 24+,pnpm(dsh plugin 用)
cd dsh-indexbookmark
# 首次:安装构建工具
& "C:\Program Files\nodejs\npm.cmd" install --save-dev esbuild
& "C:\Program Files\nodejs\npm.cmd" approve-scripts esbuild # npm 新版需批准安装脚本
# 构建(产出 lib/client.js)
node build.mjs # 或 npm run build
开发循环:改 src/client.tsx → node build.mjs → 浏览器硬刷新。
Windows 提示:若
npm命令无效,可能是被系统残留的 0 字节假文件遮蔽,请用完整路径C:\Program Files\nodejs\npm.cmd。
window.__ModuleLoader__.load({id, factory}),模块导出 {name, inject, apply};conversation.input.right(输入框右侧工具位,避免与侧边栏插件挤占);api.sessions.history({sessionId, beforeSeq?, maxMessages?}),过滤 user/message(仅 surfaceOp === 'append');Map,只存提取后的问题,尾页 TTL 60s + 按 seq 增量合并,LRU 5 会话。surfaceOp: append)的问题——与对话实际渲染一致,保证每条都可跳转;