dsh-command-rail
其他 活跃维护

dsh-command-rail

secyborg/dsh-command-rail

提供类Codex风格的全会话命令历史侧轨功能,自动同步所有历史执行指令,支持快速回溯、复用过往命令,无需手动翻找终端记录,交互流畅贴合开发者日常操作习惯。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
25 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:secyborg/dsh-command-rail
git clone https://github.com/secyborg/dsh-command-rail.git
git clone git@github.com:secyborg/dsh-command-rail.git
README.md main

dsh-command-rail

Codex 风格的「用户指令历史轨道」插件 for DSH。

会话区左缘出现一列低对比度短横条,每根对应当前会话中的一条用户指令——
覆盖整个会话的完整历史,而不只是当前渲染出来的最近几十条:

  • 全量数据 — 通过官方客户端 API(connection.api.sessions.history +
    beforeSeq 翻页)走完整持久历史;DOM 只保留最近 ~50 个事件的窗口,轨道不受此限
  • 悬浮 — 横条变宽变亮,Popover 显示「第 N / M 条指令」+ 指令摘要(取自历史记录,
    未加载进 DOM 的旧指令同样有摘要)
  • 点击 — 平滑滚动定位到该条指令;若目标不在当前窗口内,先通过
    sessions.scope(id).conversation.loadOlder() 逐页加载更早历史,直到该消息进入
    DOM 再跳转并高亮
  • 当前位置 — 阅读位置对应的横条保持品牌色高亮(DOM 行与历史条目按文本签名
    对齐,容忍截断差异)
  • 会话切换 — 订阅 sessions 列表自动检测,切换即重走历史
  • 降级 — 历史 API 不可用时退回 DOM 采集模式,轨道不会消失
  • 自适应 — 指令多时逐级压缩条高/间距(最低 2px);超过 400 条时均匀采样

实现要点

  • 渲染行锚定 MessageItem css-module 稳定后缀 [class*="_userRow"](_userStack
    子节点双重校验,排除 pending-steering 瞬态行),构建哈希变化不影响识别
  • 仅使用官方服务接口(sessions / connection),不做任何内部 patch
  • 纯逻辑函数全部导出供测试:test/rail-logic.test.mjs(35 项断言)

安装

dsh plugin --profile desktop add dsh-command-rail-0.3.1.tgz

新插件首次安装需要重启 DSH Desktop;已装插件的更新走 HMR 热生效
(版本号不变时 pnpm 会跳过重装,务必升版本号)。

测试

node test/rail-logic.test.mjs