mixin-ai/dsh-file-changes ↗★ 0
dsh-file-changes
Per-turn file-change panel: lists created/modified files at the end of every answer, shows their diffs, and reveals them in the OS file manager
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:mixin-ai/dsh-file-changes说明文档
阅读完整 README ↗dsh-file-changes
A DeepSeek Harness Web plugin that shows a file-change panel at the end of every answer. When a turn creates or modifies files, the panel lists each one under the closing message with three actions:
- Open — click the file name to open it with the OS default application;
- View diff — a modal renders the turn's actual applied changes (whole-file content for new files) using the harness DiffBlock primitive;
- Reveal — locate and select the file in the OS file manager
(macOS
open -R, Windowsexplorer /select,, desktop Linux opens the containing directory). The action appears only on loopback access with a native opener available.
The panel complements the built-in "Produced" row: it adds created/modified badges, per-file diffs, and per-file filesystem reveal.
Install
# from GitHub
dsh plugin --profile web add git+https://github.com/mixin-ai/dsh-file-changes
# from a local checkout
dsh plugin --profile web add link:/path/to/dsh-file-changes
Restart dsh web, then refresh the browser page.
How it works
- Native mode — the client half registers a conversation definition (like
@deepseek-ai/dsh-client-ui-deliverables) that accumulates successful mutation tool calls from their presentation views (card: 'diff'hunks, or generickind: 'edit'locations) into turn-scoped data published under thefileChangeskey, and renders it through the chat view'sconversation.chat.turnTailslot chain. - Code Mode (
run_code) — nested dispatches carry no presentation views on the wire, so the host half listens totools/execute/tools/resultfor executions with aparent(Code Mode sub-calls), rebuilds change records from thewrite/edit/str_replace_editorarguments, and serves them over/api/file-changes/changes. The panel merges both sources, deduplicated by path. - Reveal —
POST /api/file-changes/revealvalidates a JSON payload, loopback origin, and an absolute existing path before handing it to the platform opener.
Structure
| File | Role |
|---|