packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
右侧紧凑回合刻度条,悬停显示回合摘要,点击跳转到对应用户回合。npm 包名 `dsh-turn-scrubber`。
English | 中文
为 DeepSeek Harness Web GUI 设计的 Codex 风格回合刻度簇:贴在会话窗口右缘的一簇细横线,垂直居中。每个用户回合一根线——刻度显示会话的全部回合(包括未加载进页面的历史回合和被压缩的旧回合);空闲时所有线统一等长、短小无感;悬停时像波形一样起伏,并把指针附近的线鱼眼式撑开(密集会话也能看清、点准);点击任意一根线平滑滚动到对应回合。
移植自 claude-gui 的 TurnScrubber 思路,按用户偏好重做成线性波形样式。
turnIndex 端点返回的完整回合索引为骨架,三种状态:
POST /turn-scrubber/turnIndex,仅本机 loopback),读取会话完整事件日志——优先 live 会话存储,其次 JSONL 持久化后端——按回合构造 [{turn, preview, compacted}](turn/start 事件是回合权威;回合号 1 基;压缩判定用 compaction/summary.shadowedSeqs)。client 侧按 (sessionId, 指纹) 缓存索引,并核对响应的 sessionId(防会话切换竞态)。ensureTurnLoaded)——连续翻更早历史直到该回合的 key 出现在已加载窗口(或 hasMore=false / 40 页上限 / 会话切换),再平滑滚动。[data-conversation-scroll] 滚动容器的父级内,用布局偏移定位(offsetTop/offsetHeight,对 CSS 缩放免疫);跳转锚定 DSH 原生 [data-chat-anchor-key] 行。scrollIntoView({behavior:'smooth'}) 不响应,跳转用手写 rAF 三次缓动。克隆仓库后把包装进 DSH Web profile:
git clone <仓库地址>
cd dsh-plugins
dsh plugin --profile web add "link:$PWD/packages/turn-scrubber"
装完后重启现有 dsh web 进程并刷新其当前 URL。不要另起第二个替代服务。
每次 profile 安装后,检查
~/.dsh/profiles/web/node_modules/@deepseek-ai是否被创建为物理目录。DSH 核心包必须经 profile fallback symlink 解析,以保持 Cordis/Tool Symbol 单例(见 deepseek-harness discussion #783)。
pnpm install # 在 monorepo 根
pnpm build # pnpm -r build → packages/turn-scrubber/lib/
client bundle 采用官方 DSH client-bundle 预设形态(window.__ModuleLoader__.load)、纯度门禁(禁止非平台 @deepseek-ai 值导入)、CSS Modules 内联为 <style data-plugin> 标签。虚拟 id 为仓库相对路径——构建产物不含任何本机路径。