Adds an edit action to finalized assistant replies in DeepSeek Harness, letting you rewrite the reply text or reasoning chain; the edit is saved as a surface replacement.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-chat-thinking-editor
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:yumiao-dev/dsh-chat-thinking-editor
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Make the AI do it your way. If it won't, do you do it.
After living inside DeepSeek Harness for a while, I finally figured something out: a model can be brilliant and still be a stubborn piece of work. Especially with the technical stuff — reverse-engineering something, picking apart a protocol, digging into how some low-level thing actually works. It just stalls, then hands you that line we all know:
"I can't help you with that, because it might violate..."
You know the rest. Fill in the dots yourself, you've seen it a hundred times.
Re-ask it? Same line. Rephrase? Same line, maybe with a polite "I'd suggest going through the proper process." You burn tokens fast, and meanwhile its whole long thinking chain just keeps grinding along its own "nope, not doing it" track.
So I wrote this plugin. Stop arguing with the AI. Just edit it.
When it won't cooperate, pull up that answer — and that whole thinking chain it fought over — and rewrite it. Save, and from then on this whole conversation only recognizes your version: the reply it writes out, and the path it reasons along, all bent to your intent, without a single "but I can't."
One line: Keep the AI's cleverness, cut what you don't want, and make it fully listen to you.
English · 中文
What it does
- Every AI message gets a little pencil in its action strip;
- Open it and you can edit both the reply text and the thinking chain;
- Not just the one in front of you — it lists every reply in the session, including the mid-tool-call ones;
- Once saved, the AI only knows your version. Edit the same reply as many times as you like, no re-runs needed.
Small courtesies: images and tool calls are left alone; empty reply = blank it out; empty thinking = drop that block; editing is locked while the agent is running so you two don't wrestle over the same text.
Install
You need DeepSeek Harness (dsh, 0.1.5-rc.2 or newer recommended).
# clone it and mount from a local path (recommended — tracks the source)
dsh plugin --profile web add /path/to/dsh-chat-thinking-editor
If it ever ships on npm, it's one line:
dsh plugin --profile web add dsh-chat-thinking-editor
Prefer to do it by hand? Merge the row from cordis.patch.yml into your profile's dsh.profile.bundles and restart dsh web.
Refresh the DSH page after installing and you'll see the pencil.
Usage
- Run a conversation, find a reply you're not happy with;
- Hover it, click the pencil;
- In Edit assistant messages, expand that row;
- Edit the reply and/or the thinking chain (leave blank = remove that part);
- Save — it now continues from your version.
Note: to close the dialog you have to click the top-left close button. Backdrop clicks and Esc won't dismiss it — that's on purpose, so you don't accidentally close it while scrolling on your phone.
A little bug I fixed along the way
While writing this I fixed an annoying one: previously, select-all (Ctrl/Cmd+A) → delete in one editor would also wipe the sibling editor. The text selection was leaking across the two adjacent boxes, so deleting grabbed both. Now select-all only touches the field you're actually editing.
Compatibility
- Target: DeepSeek Harness
0.1.5-rc.2+(dependency range^0.1.1-rc.2); - Runtime: Node 22.19+ / 24+, pnpm 11;
- Built on the official
surface replacementevent (same machinery as compaction) and theconversation.chat.assistant-actionsslot — no private APIs.
Heads-up: DSH itself is a developer preview, so its APIs will likely keep changing. If an upgrade breaks things, just open an issue.
Layout
.
├── src/ # TypeScript source (host + frontend logic)
├── lib/ # compiled output, the npm entry
├── cordis.patch.yml # DSH mount declaration
├── package.json
└── README.md
License
To whoever's hanging around the dsh-plugin corner: stop going back and forth with a model that won't budge — bend it to your will instead. That's what this is for.
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 10247
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 10247
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
ccch1mneyyy/dsh-TUI★ 7252
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 7046
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
omdsh-dev/DSH-better-sidebar★ 5011
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1778
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.