cxsm — Codex-Style Conversation Summary for DeepSeek Harness
cxsm adds a Summary / 摘要 tab to the DeepSeek Harness (DSH) conversation view. It condenses multi-turn sessions into Codex-style, action-oriented summary blocks, hides tool noise, and shows the final delivery for each completed turn.
It is designed for long-running background work. When an agent runs unattended, open the summary later to see what it has done and how far it has progressed.
What it does
- Summary tab (
conversation.view#summary): an LLM compresses the session flow into short action blocks. Each block describes concrete work—files changed, commands run, content searched or read, and the outcome—rather than the model's intent or verbatim output. - Final delivery cards: the closing message of every completed turn appears as a persistent Final delivery / 最终交付 card at its actual position in the timeline. A Locate in chat / 在对话中定位 button jumps to that reply in the chat view.
- Live work row: a sticky bottom status bar mirrors the chat view's live
running / runningCalls / partialsnapshot (Think / Grepping / Reading / Editing / Executing / Browsing / Deep diving…). It is read-only and is never persisted. - Timeline: user messages, summary blocks, system notes (📎 attachments / ⌘ permissions), and final deliveries are interleaved in conversation order. More than three consecutive system notes are collapsed.
- Persistent summaries: generated summaries are cached by session and model. A last-message
seqcheck detects new content, so reloading the page reuses current summaries instead of regenerating them. Summaries use a non-thinking flash model for speed. - Settings page (
settings.section#cxsm-settings): language (auto / 中文 / English), summary model, display toggles, runtime status, and a compatibility manifest. - Bilingual: Chinese and English UI and summary prompts.
Files
| Path | Content |
|---|---|
lib/index.js | Persistent host-side module providing the cxsm.api service (summarize / settings / info). |
lib/client.js | Persistent browser-side module providing the summary view, live work row, settings page, and i18n. |
package.json | npm manifest (dsh.bundle.patch → cordis.patch.yml, dsh.client). |
cordis.patch.yml | Bundle patch layer (insert row). |
src/cxsm-1.host.js | Dynamic host source for reference, including the full LLM-summarization RPC. |
src/cxsm-1.client.js | Dynamic client source for reference. |
COMPAT.md | Slot, RPC, and service compatibility notes. |
Install
cxsm is a DSH bundle (an npm package, like other dsh plugins):
1. Publish or copy this directory to $DSH_HOME/profiles/node_modules/@dsh-local/cxsm/ (or another npm scope/name). Keep package.json and cordis.patch.yml in sync. 2. Add the bundle to your profile with dsh plugin add @dsh-local/cxsm, or add it to the profile's cordis.patch.yml: ``yaml - insert: - id: cxsm name: '@dsh-local/cxsm' `` 3. Open a conversation and switch to the 摘要 / Summary tab.
> Note on LLM summarization. The persistent bundle (lib/) provides the summary view, timeline, final deliveries, live work row, and settings. The summarizer communicates through the plugin's private host↔client RPC; for a persistent DSH bundle, the Typert build pipeline wires this RPC. The files under src/ are the dynamic-plugin sources, including the working reference for full LLM summarization, and can be loaded through DSH's dynamic-plugin flow.
Compatibility
- Occupies two list slots:
conversation.view#summary(order 20) andsettings.section#cxsm-settings(order 30). These are purely additive and have noreplaceRisk. - RPC namespace:
cxsm.summarize,cxsm.getSettings,cxsm.setSettings,cxsm.getInfo. - Public host service:
cxsm.api(getInfo/getSettings/setSettings/summarize).
See [COMPAT.md](COMPAT.md).
License
[MIT](LICENSE)