dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
会话左侧的短横线时间轴:整个会话的用户消息一览、当前消息定位、悬停预览消息与回复、点击跳转,可收起展开。
English | 中文
A session timeline plugin for DeepSeek Harness: renders a horizontal-bar timeline on the left side of the conversation for quickly locating, jumping to, and previewing turns in long sessions.
sessionProjections to incrementally track every user message plus its AI reply preview. A persisted cache makes reloads instant, new messages update in real time, and long sessions stay lightweight.Requires DSH ≥ 0.1.0-rc (dsh CLI installed; the web profile includes the sessionProjections service).
Published on npm — prebuilt install skips the GitHub build-approval step:
dsh plugin --profile web add dsh-session-timeline
Then start (or restart) the web app:
dsh web
dsh plugin --profile web add github:XiLuovo/dsh-session-timeline
Then start (or restart) the web app:
dsh web
This package is pure JS —
client.jsis the final bundle artifact, so nopreparebuild script is needed; it works directly from GitHub.
git clone https://github.com/XiLuovo/dsh-session-timeline.git
dsh plugin --profile web add ./dsh-session-timeline
dsh web
In a DSH Web session, ask the agent to run cordis_define and paste the contents of client.js as the client code, then cordis_run to enable it. Good for a quick try; note that the dynamic form has no host projection (full-session stats unavailable) and only keeps in-window features.
dsh plugin --profile web remove dsh-session-timeline
Open any session and the timeline appears on the left of the conversation:
| Interaction | Effect |
|---|---|
| Hover a bar | Shows that turn's user message + AI reply preview (rounded tooltip) |
| Click a bar | Jumps to the corresponding message (auto-loads history if outside the window) |
| Move the mouse over the timeline | Wave follows (active bar + tapering lengths) |
| Scroll the timeline | Internal scrolling (no scrollbar); position is kept after manual scroll |
| Hover the capsule above the first bar | Capsule fades in; first two bars taper in gray |
| Click the capsule | Collapses the timeline |
| After collapse: hover/click the bar area | Bar fades in / expands the timeline |
Built entirely on the DSH host:
| Dependency | Purpose | Source |
|---|---|---|
@deepseek-ai/dsh-client-runtime | conversation snapshot, useSessions, projection faceOf reads | host-provided (peer) |
@deepseek-ai/dsh-client-ui-layout | shell.overlay floating slot | host-provided (peer) |
@deepseek-ai/dsh-session-projection | projection registration + event-stream fold + persisted cache | host-provided (peer) |
zod ^4.4.3 | projection schema (data validation) | package-owned (dependencies) |
DSH theme CSS variables (--dsw-alias-*) | light/dark theme adaptation | host |
init/apply/view + compact truncation). Bump stateVersion whenever the projection state shape changes, otherwise the old persisted cache is wrongly reused.exports["./client"]; dsh.client declares its runtime dependencies.sessions.binding(sessionId).session snapshots, the projection, and DOM anchors (data-chat-anchor-key); it never mutates session data.MIT