dsh-trajectory-reader
会话轨迹解读页:按用户轮次总结需求、执行、文件与错误,并可生成 AI 叙事。
flyingtimes
@flyingtimes
⬇ 2
★ 1
main
安装
dsh plugin --profile web add github:flyingtimes/dsh-trajectory-reader
需要可复现安装时,可在仓库后追加 #commit 固定提交。
会话轨迹解读页:按用户轮次总结需求、执行、文件与错误,并可生成 AI 叙事。
该插件未提供要点说明,请参考仓库 README。
deepseek-harnessdshdsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/flyingtimes/dsh-trajectory-reader |
| 许可证 | 未标注(见仓库) |
| 主要语言 | main |
| 下载量 | 2 |
| GitHub 星标 | 1 |
| 最近推送 | 2026-08-15 |
| 收录日期 | 2026-09-19 |
| 分类 | 会话与消息 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
English | 简体中文
# 📖 Trajectory Reader · 轨迹解读 (DSH Web Client Plugin)
[](https://www.npmjs.com/package/@clarkchan/trajectory-reader)
[](LICENSE)
[](https://github.com/flyingtimes/dsh-trajectory-reader)
[](https://github.com/0xsline/awesome-deepseek-harness)
Adds a new **「轨迹解读」 (Trajectory Reader)** tab to the DSH Web GUI conversation view ring (beside 对话 / 轨迹). It segments the session **by user round** and, for each round, highlights what the user wanted and how the assistant fulfilled it — plus an optional **✨ AI process narrative** generated by an LLM for the full think-and-execute story of that round.
## UI Preview
[图片: Trajectory Reader UI — the 轨迹解读 tab inside the DSH Web GUI]
The screenshot shows the **轨迹解读** tab open in the DSH Web GUI: the conversation header carries the third view tab (对话 / 轨迹 / **轨迹解读**), and the body lists one card per user round. Each round card shows the condensed 🎯 user need, the 🛠 action summary of how the assistant fulfilled it (plan / research / implement / verify / delegate), ⚠ errors and notes, and the 💬 reply digest — while the original user message stays verbatim and expandable, with the full per-tool-call ledger folded away. The ✨ button on a round requests the LLM process narrative (需求 / 思路 / 执行 / 结果) for that round.
## Install (one command, auto-activated)
```sh
# Option 1: from npm (recommended)
dsh plugin --profile web add @clarkchan/trajectory-reader
# Option 2: straight from GitHub
dsh plugin --profile web add "github:flyingtimes/dsh-trajectory-reader#v0.2.3"
```
> The package declares `dsh.bundle.patch`, so `dsh plugin add` **automatically appends it to `dsh.profile.bundles`** — no manual `cordis.patch.yml` editing. After that, restart `dsh web` and the conversation tab bar shows 对话 / 轨迹 / **轨迹解读**.
## Links
- npm package: https://www.npmjs.com/package/@clarkchan/trajectory-reader
- GitHub repository: https://github.com/flyingtimes/dsh-trajectory-reader
- Listed on: https://github.com/0xsline/awesome-deepseek-harness
## Per-round presentation
```
Round N · X tool calls · Y files · Z errors [✨ AI interpret this round]
├── 🧠 AI process narrative (optional, LLM-generated)
│ ### User need / ### Assistant thinking / ### Execution / ### Result
├── 🎯 User need one or two sentences distilled by the rules engine (expandable original)
├── 🛠 How the assistant did it plan/research/implement/verify/delegate action summary
├── ⚠ Errors / notes failed tool calls, compaction, truncation, retries
├── 💬 Assistant reply (digest) opening of the reply (expandable full text)
└── ▸ Action details collapsed per-tool-call ledger
```
- **Round segmentation**: each user message opens a new round; all assistant activity after it belongs to that round. Steering messages mid-execution form their own marked round; orphan activity at session start goes to "session start".
- The rules-based summary is instant and dependency-free; the AI narrative is generated on demand and cached (unchanged material is not re-requested).
## ✨ AI process narrative (LLM summary)
### Architecture
```
browser client.js ──POST /plugin-api/trajectory-reader/summarize──▶ server index.js
│ │
│ { rounds: [{ key, material }] } │ ctx.llm.stream()
│ system = SYSTEM_PROMPT
◀── { ok, route, results: [{ key, ok, text }] } ─────────────────────┘
```
- **Server half (`index.js`)**: activated as a cordis plugin by the web profile Loader row (`inject: ["llm", "webServer"]`), registers an exclusive route:
- `GET` same path → availability probe (client shows/hides the AI button based on it);
- `POST` → calls the host `llm` service per round (model route defaults to the current agent default model `agentDefaultModel.currentSelection()`, overridable via request `provider`/`model`), 120s timeout per round, `maxTokens 1200`, at most 12 rounds per request.
- Each round's material is **JSON-framed** (same injection defense as session-title: user text cannot break the structural delimiters), and every string is recursively length-capped.
- **Client half (`client.js`)**: per-round "✨ AI interpret this round" button plus a top-level "✨ AI interpret all rounds"; results cached by material hash; AI cards render the `###` section headings; a hint tells the user to restart the GUI when unavailable.
### Summarizer prompt (`SYSTEM_PROMPT` in `index.js`)
> You are a "session trajectory interpreter" for DeepSeek Harness (a coding-assistant framework). You receive one round's raw material: the user's original messages, the assistant's replies and thinking excerpts, the ordered tool-call records (names and argument digests), errors and system notes.
> Your job: write a coherent Chinese interpretation of this round — what the user wanted, how the assistant thought and executed step by step, and the final result — so someone who never saw the session can understand what the assistant did and why.
>
> Rules:
> 1. Interpret only from the supplied material; never invent files, commands, conclusions or causes absent from it; if material is truncated ("…"), do not guess the truncated content.
> 2. Output the following Markdown structure (keep the three-# heading lines, in order): `### 用户需求` (one or two sentences…) / `### 助手思路` (…why something was done before something else, how plans adjusted…) / `### 执行过程` (numbered list in actual order…) / `### 结果` (…what was finished, what remains unfinished or failed).
> 3. Emphasize the causal chain of the process (e.g., "read A to confirm B, then modify C to finish D"); do not just list tool names.
> 4. Keep it under 400 characters; wrap file names, commands and error messages in backticks.
> 5. Output only the interpretation — no preamble, no closing remarks, no verbatim re-quoting of the material.
Design notes: the **four fixed sections** mirror the requested need–thinking–execution–result; **no fabrication + no guessing truncated content** keep the interpretation faithful to the trajectory; **causal emphasis** prevents it degrading into a tool list; the **length cap and direct-output format** keep the card readable.
## After enabling (one GUI restart)
After restarting `dsh web`, the 轨迹解读 tab appears; the AI button becomes available once the `GET /plugin-api/trajectory-reader/summarize` probe passes. Client bundle changes apply on page refresh; **server `index.js` changes require a GUI restart**.
## Development & tests
```sh
node --check client.js && node --check index.js
node test/smoke.mjs # 61 assertions: round splitting / rule classification / material framing / prompt points / route & streaming assembly
```
## Uninstall
```sh
cd "$DSH_HOME/profiles/web" && pnpm remove @clarkchan/trajectory-reader
```
`dsh plugin` automatically removes the package from `dsh.profile.bundles` on uninstall — no manual cleanup needed.
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。