dsh-chat-thinking-editor
让 AI 按你的来。它不行,你自己来。
用 DeepSeek Harness 用了这么久,我算是想明白了一件事:模型再聪明,也有它就喜欢犟的时候。尤其在碰上一些技术向的活儿的时候——逆向点东西、拆个协议、翻一翻底层逻辑——它动不动就卡住,然后甩给你那句熟悉的:
「这个我帮不了你,因为它可能会违反……」
懂的人都懂。后面省略号什么内容,你自己脑补也补得出来。
你重新问它一遍?它还是那句话。你换个说法再试?还是那句话,顶多加一句「建议你走正规流程」之类的。烧一堆 token,结果它连脑子里那段长长的思考,都还是沿着它自己那套「不行」一直推下去。
所以我就写了这个插件。别跟 AI 较劲了,直接改它。
它不配合,你就把它那条回答,连同它脑子里折腾的那串思维链,一起拎出来改掉。改完保存,之后这整个对话——包括它接下来写的东西、想的过程——全都只认你改好的那个版本。它正文明明堂堂地收着你的意思,连它推演的那条路都是按你的方向走的。
一句话:保留 AI 的聪明,改掉你不想要的部分,让它彻底听你的话。
中文 · English
它都能干嘛
- 每条 AI 消息的操作条上,多了根小铅笔;
- 点开弹出编辑框,回复内容和思考链两个都能改;
- 不只是眼前那条——这个会话里所有它说过的回复都列出来给你,连工具调用中间夹着的那几条也算;
- 改完保存,AI 就只认你的版本;同一句想改几次改几次,不用重新跑。
一些贴心小细节:图片、工具调用这些非文本的东西会原样留着不动;正文留空就算清空这段,思考链留空就把那个思维块删掉;agent 正在跑的时候会锁住不能改,免得你们俩同时动同一段话打起来。
安装
前提:装好 DeepSeek Harness(dsh,推荐 0.1.5-rc.2 及以上版本)。
# clone 到本地后,走本地路径挂上(推荐,随时跟源码同步)
dsh plugin --profile web add /path/to/dsh-chat-thinking-editor
如果以后发到 npm 了,就一行:
dsh plugin --profile web add dsh-chat-thinking-editor
想手搓挂载的话,把 cordis.patch.yml 里那行合进你 profile 的 dsh.profile.bundles 层,重启 dsh web 就完事。
装完刷新一下 DSH 页面,就能看到那根铅笔了。
怎么用
- DSH 里跑一段对话,找一条你不满意的 AI 回复;
- 鼠标挪上去,点铅笔;
- 在「编辑助手消息」里点开那条;
- 改正文,改思考链,爱改哪个改哪个(留空=删掉那部分);
- 点保存——之后它就顺着你的版本往下走了。
注意:关窗口得点左上角那个关闭按钮(点遮罩和按 Esc 都不会关,这是故意的,免得手机上瞎碰到)。
顺带修的一个小毛病
写这插件的时候顺手修了个烦人的 bug:以前你对其中一个编辑框「全选(Ctrl/Cmd+A)→ 删除」,另一个框的内容也会跟着被清空。原因是选区在弹窗里串了,两个相邻输入框被一起选中了。现在全选只影响你当前正编辑的那一栏,不会误伤隔壁。
兼容性
- 目标版本:DeepSeek Harness
0.1.5-rc.2+(依赖区间 ^0.1.1-rc.2);
- 环境:Node 22.19+ / 24+,pnpm 11;
- 底层走的是官方
surface replacement 事件(和 compact 那套机制是同一个东西)和 conversation.chat.assistant-actions 槽位,不碰私有接口。
提醒一句:DSH 官方自己都标了 developer preview,接口往后大概率还会变。哪天升级 DSH 之后发现不好用了,来提个 issue 就行。
目录结构
.
├── src/ # TypeScript 源码(Host + 前端逻辑)
├── lib/ # 编译产物,npm 入口
├── cordis.patch.yml # DSH 挂载声明
├── package.json
└── README.md
License
MIT
写给在 dsh-plugin 专区晃悠的你:与其跟一个嘴硬的模型来回折腾,不如把它掰过来。这插件就是干这个的。