其他
完整应用
deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DSH Web 插件:右侧「对话跳转」竖线条 —— 和 DeepSeek 网页版右侧的跳转条一样,平时完全不打扰:
dsh.bundle.patch 补丁层 + dsh.client 客户端声明,通过 dsh plugin 管理生命周期。dsh plugin --profile web add github:X9wd09ncc/dsh-x9-talkjump
安装完成后重启 Web 界面(重新运行 dsh web,或刷新已打开的页面)。
在插件目录里直接安装本地副本(dsh plugin 会把相对路径锚定到当前目录):
cd dsh-x9-talkjump
dsh plugin --profile web add .
dsh web
改动 client.js / index.js / cordis.patch.yml 后重启 dsh web(或刷新页面)即可生效。
dsh plugin --profile web remove dsh-x9-talkjump
默认状态,只在页面右侧显示横线

鼠标放在横线上显示对话

| 文件 | 作用 |
|---|---|
package.json |
dsh.bundle.patch 指向补丁层;dsh.client.platform: "web" 让 client-modules 扫描本包并服务 /plugins/dsh-x9-talkjump/client.js |
cordis.patch.yml |
补丁层:向 composition 插入一行 dsh-x9-talkjump |
index.js |
host 半边:在 webServer 上注册 GET /api/talk-jump/sessions/<id>/questions,合并 sessionPersistence.readFrom(id, 0) 的持久化全量日志 + 活跃会话内存日志(sessionQuery 兜底),过滤出追加式 user/message 事件并返回 [{seq, time, text}] |
client.js |
浏览器半边:window.__ModuleLoader__.load 工厂,导出 { apply, inject } Cordis 插件;挂载右侧竖线条导航 |
sessionPersistence.readFrom(id, 0)(持久化全量日志,覆盖最早的历史)与活跃会话的内存日志(覆盖最新未落盘的尾巴),按 seq 去重——即使内存日志是被裁剪的窗口(头部被逐出、只保留最近若干轮),最早的提问也不会丢;接口同时保留 sessionQuery 作为最后的兜底。Session.loadOlder()(「加载更早」按钮背后的同一个接口)逐页把整个历史窗口加载出来,线条列表照样完整;接口恢复后自动切回并停止后台加载。打开时拉取一次,之后每 4 秒轮询 + 新提问落地时即时刷新。getSnapshot().hasMore)判断,不会因 React 渲染期间的过期引用而空转;每页之间让出主线程(120ms)保证页面不冻结,40+ 轮的历史几秒内渐进加载完,期间 UI 始终可交互;点击跳转同样按同步快照推进,到目标后直接滚动,不做多余翻页。position: fixed,右侧 10px、垂直居中(top: 50% + translateY(-50%)),最多露出 6 条(max-height),超出部分容器自身滚动(隐藏滚动条,滚轮操作);每问一条线,正常 26×4px,悬停/当前条变长变亮(36px、主题色)。document.body(避免被线条容器的 overflow 裁剪),定位在线条左侧、垂直居中;框内一次渲染全部提问行(单行省略),max-height 只露出 6 行、超出滚轮滚动;鼠标在线条与框之间移动不会误关(180ms 延迟关闭 + 框内进入取消计时),离开后收起。[data-conversation-scroll] 中 [data-chat-anchor-key="…"] 行滚动 + 闪烁;目标尚未加载 → 循环调用 Session.loadOlder()(客户端 sessions 服务 binding 提供的翻页接口,正是「加载更早」按钮背后的同一个能力)直到目标进入窗口,再滚动定位。[data-chat-flow-kind="user"] 消息,按 seq ↔ anchorSeq 映射高亮对应线条;线条滚动条会自动把当前线滚入可视区(用户主动滚动线条后的 1.2 秒内不干预)。sessions/sessionPersistence/sessionQuery/webServer)不存在的 profile 下 host 半边自动变成 no-op,不影响启动;接口读取失败时 client 自动退回「逐页加载完整窗口」的兜底路径。--dsw-alias-*),自动适配浅色/深色主题,不影响全局主题。dsh plugin --profile web add github:… 本质是 pnpm 转发;安装后插件包因声明了 dsh.bundle.patch 而进入 profile 的 dsh.profile.bundles 补丁层列表。ctx.get("webServer") / ctx.get("sessions") / ctx.get("sessionPersistence") / ctx.get("sessionQuery") 读取服务(不带硬 inject,避免服务缺失时整机启动失败),路由注册挂在 ctx.effect 返回的 disposer 上。window.__ModuleLoader__.load({ id, factory }) 注册工厂,require 只能解析平台 seed 词与图内条目;不要 import/require 其它插件的内部实现。ctx.effect / React effect 清理函数上,插件被移除或更新时自动清理。client.js 直接提交到仓库,exports["./client"] 指向它即可。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。