liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
English | 中文
Chat recovery for DSH Web: edit the last completed user message and explicitly retry failed turns. Both actions work through the official session fork contract - a child branch is cut from the history prefix BEFORE the affected message, the text is re-submitted there, and the original conversation is never touched.
Clicking it opens an inline editor prefilled with the original text; Save forks a child from before that message, opens it and resends the edited text; Cancel restores the transcript. The original session keeps its full history either way.
sessions, system/plugin-injected messages, and messages containing attachments are never editable.
workspace (a fork cannot cut history before the very first turn).
transcript. One re-run is created per click, so no background retry can silently grow the session tree. Tool side effects are replayed only after this explicit confirmation.
controlled integrations, but the shipped UI leaves it disabled because the current Host API has no in-place turn retry operation.
wait state and the final failure reason, plus Cancel / Retry-now controls. Cancel stops all further attempts.
it is retrying, this plugin stands down.
new session branch: the original session stays untouched, and failed forks remain in the session list. One failed turn forks at most one child: later attempts of the same retry chain continue inside it.
child from the prefix BEFORE the failed turn; later attempts of the same chain continue in that child (one replay per attempt, visible as retry history). The source session never accumulates the same message twice, and the failed turn's stream fragments never enter the source's next request.
sessions. A fork or resubmit failure leaves the source session exactly as it was.
and abandoned attempts (cancelled, exhausted or failed) are kept for inspection. The client runtime exposes no session-removal API, so stale retry forks must be cleaned up manually from the session list.
automatic retry supervision. Each Retry click submits exactly one replay, and a retry cycle creates at most one branch; tool side effects replay only on explicit user action.
the tab cancels supervision; the failed turn and its history remain durable on the host.
dsh plugin --profile web add @linxin666/dsh-chat-recoverygit clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
pnpm install
pnpm -r build
dsh plugin --profile web add link:$(pwd)/packages/dsh-chat-recoveryRestart dsh web; the Edit affordance appears on the last completed turn and the retry status row on the composer dock.
The shipped UI keeps automatic retry disabled. Retry is an explicit transcript action and needs no configuration; controlled integrations that construct RetrySupervisor directly may opt in with { autoRetry: true } while accepting one visible retry child per cycle and one replayed message there for every attempt.
slot system's chain selector cannot read the conversation snapshot, so the entry matches every completed turn and gates internally.
editable because they cannot be safely copied into a re-submitted prompt.
therefore create a branch, which remains visible in the session list.
The browser half sends one anonymous install heartbeat per UTC day to dsh-market.com: a random localStorage id plus this package's name, nothing else. The server stores only a salted hash of that id, never IP addresses, and exposes aggregate counts only. See docs/telemetry.md for the full contract.
BSD-3-Clause.