deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
简体中文 | English
DeepSeek Harness 的极简提问时间线插件:每条提问一个圆点,挂在界面右侧。点击圆点瞬间跳转到那条提问;悬停查看你当时说了什么、什么时候说的。

零配置、无 host 依赖、不查数据库——数据全部来自浏览器里已有的会话快照。
--dsw-alias-* / --dsw-static-*),跟随浅色 / 深色 / 跟随系统切换,无需重启loadOlder),直到整条对话的每个提问都有圆点,不只显示最近一页HH:MM,昨天及更早显示 MM/DD HH:MMapply,服务端零开销dsh plugin --profile web add github:zhangzheng25/dsh-timeline
重启 DSH,打开任意有提问的会话,右侧即出现时间线。
本地开发安装:
dsh plugin --profile web add link:E:/path/to/dsh-timeline # link: 协议 → junction 链接,改代码 pnpm build 后刷新页面即生效
⚠️ 必须用
link:协议:file:协议在 profile 的 hoisted 模式下是复制目录,改代码不会生效。用link:后node_modules/dsh-timeline是指向本目录的 junction,构建产物直接可见,无需同步、无需重启。
shell.overlay(root 作用域,附加式,点击穿透)
└─ timeline.rail(自声明子槽,session 作用域)
└─ useSession 快照 → chat.order + chat.nodes(kind === 'user')
→ 圆点 → data-chat-anchor-key 行 → scrollIntoView
shell.overlay 席位,自声明会话级子槽 timeline.rail,Overlay 通过框架 SessionProvider 桥接到当前会话。useSession 快照(chat.order / chat.nodes),提问时间在 data.time(epoch 毫秒)——不读会话日志、不查数据库。useCurrentAnchor 监听对话滚动容器,取视口底部之上最后一条用户行的 key——即读者所在的"提问+回答"段落,其圆点亮蓝。data-chat-anchor-key 属性(值即节点 key),点圆点找到该行后 scrollIntoView。position: fixed + pointer-events: none,只有圆点参与点击;圆点列表上限 15 个、内部滚动;列表和页面的滚动条都通过注入 CSS 隐藏。pnpm install
pnpm run typecheck # tsc --noEmit
pnpm run build # tsdown → lib/index.js(host)+ lib/client.js(浏览器)
构建产物(lib/)已提交,最终用户无需构建。改源码后:pnpm run build,重启 DSH(纯 client 改动刷新页面即可)。
远端安装(复制模式)注意:如果插件是通过
dsh plugin add在另一台机器/远端安装的,DSH 加载的是 profile 内的插件副本($DSH_HOME/profiles/web/node_modules/dsh-timeline),不是本目录——本地改代码不会生效。改完代码后执行pnpm run sync:dsh把构建产物同步到副本(默认同步到webprofile,可用DSH_PROFILE环境变量指定其他 profile)。
改代码后生效方式(实测):
| 改了什么 | 生效方式 |
|---|---|
client 代码(src/client/,构建后 lib/client.js) |
pnpm run build 后刷新页面即可,无需重启(DSH 对 /plugins/<id>/client.js 实时读文件、no-cache) |
host 半端(src/index.ts)或 cordis.patch.yml |
必须重启 DSH(启动时加载) |
clientBundle 预设@deepseek-ai/dsh-client-ui-layout/client、@deepseek-ai/dsh-client-ui-conversation/client)dsh.client.inject 声明 web loader 需要提供的运行时包width: max-content 撑开宽度,避免绝对定位把文字挤成每字一行flex-shrink: 0 防止 flex 布局把圆压成椭圆;tooltip 用 portal 渲染到 document.body(overflow-y: auto 的祖先会裁剪 absolute 子元素)body 上,body[data-ds-dark-theme] 自动换肤);悬浮卡片颜色由注入的样式表管理,浅色为白底、深色切换为黑底白字,令牌缺失时回退到原有配色由 dsh-milestone(SnowCrescenter-tech)大幅精简而来——保留圆点、跳转与悬停预览,并新增分段高亮。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。