前言¶
写提示词的常见状态是「想到一半就发」。输入框里躺着一句”帮我弄个爬虫抓豆瓣”,你自己知道要哪些字段、要不要存库、频率多少、出错怎么办,模型不知道——结果就是两三轮追问。Draft Studio 做的事情很窄:在你自己的输入框里点一下,把这句话原地改写成一份目标、约束、输出格式、验收标准都齐的提示词,改写完仍然是草稿,发不发由你决定。
它是 DSH 生态里的第三方插件,维护者 wufeng0105,归在”模型推理”分类下,纯 JavaScript、无构建步骤。下面按安装、用法、配置、边界几块介绍。
它解决什么,不解决什么¶
先看一段实际效果(来自插件 README):
原文:
帮我弄个爬虫抓豆瓣
点一下之后的改写结果:
用 Python 写一个抓豆瓣电影 Top250 的爬虫,输出字段包括片名、评分、简介、链接。要求:遵守 robots.txt,请求间隔不低于 2 秒,结果存为 JSON 文件。若页面结构变化导致解析失败,输出明确的错误信息而不是静默跳过。<技术栈候选:requests+BeautifulSoup / Playwright>
这里有一个设计取舍值得单独说:改写不会替你拍板。草稿里没有提到的技术栈,它给出候选而不是自己选,因为这类决定一旦被隐式填入,后面出问题很难发现。
明确不做的部分:自动发送、多轮改写、模板库、历史记录、重启后的上下文回放。想拿它做提示词版本管理或者自动跑流水线,都不在范围内。
它是怎么改的¶
按钮点下去之后,插件把你的草稿(可选附加当前会话最近几轮发言,用来消解”刚才说的”这类指代)发给模型,要求模型只返回改写后的提示词,然后把结果写回输入框。看设置页的”上次改写”一栏可以看到上下文到底读了几轮、多少字。
模型来源有两种:跟随当前会话(含思考强度一起跟随),或在设置里固定一个 provider 与模型,并可指定思考强度。
安装与启用¶
README 里没有提供 CLI 安装命令,安装方式是通过 DSH 界面:
1、打开 DSH 插件页
2、点「添加插件」
3、选择「本地目录」,指向插件文件夹(即仓库克隆或下载后的目录)
卸载在插件页对本插件点「移除」。只想暂时停用就关掉开关,不必卸载。
如果你通过脚本而不是界面管理插件,脚本里也必须指向本地路径,不要按名称拼接 dsh plugin add github:owner/repo;README 没有给出对应命令,资料里也没有,不要自行构造。
按钮与四套预设¶
草稿非空时,输入框发送按钮左侧会出现优化按钮,最多四颗,分别对应通用 / 编程 / 写作 / 翻译四套预设,每颗一套。点哪颗就用哪套提示词。
显示哪几颗由设置页的勾选决定,默认四套全显示。取消勾选只是隐藏那一颗按钮,预设本身不会丢,重新勾上就回来。
每颗按钮走四种状态:
- 空闲:显示图标,点它开始改写
- 运行中:显示「已用 N 秒」,点它取消
- 可回退:结果已写回,点它还原原文
- 失败:悬停可看原因,点它重试
同一会话同一时刻只跑一次改写,其余按钮置灰,避免两颗按钮的结果互相覆盖。每颗按钮的回退、重试只作用于它自己那次改写。
等待期间可以继续打字、切到别的会话甚至直接发送:
- 草稿在你等待期间被改过,结果不会覆盖新内容,保留着等你重试
- 切走再切回,请求不断,状态还在
- 发送之后转圈自动停掉
不满意的改写有两个还原路径:点按钮上的回退,或者直接 Ctrl+Z。
设置页¶
入口在设置 → 草稿工坊。一行六格:
- 启用:总开关
- 读取上下文:是否读取当前会话最近几轮,用于消解指代
- 预设下拉:选中哪套,下面文本框编辑的就是哪套,选项显示的是生效名(默认 OptionA–OptionD)
- 显示按钮:决定这一套是否出现在输入框,不受编辑门限制
- 编辑 / 完成:编辑门,名称与提示词默认只读,点「编辑」解锁并可就地改名(最长 12 字,留空回落默认名;名字只影响显示,不进请求)
- 默认:把这一套提示词恢复成内置文本,不受编辑门限制
下面另有完整的提示词编辑区,清空并保存等同于恢复内置默认。固定模型时会展开 provider 与模型两个下拉。底部显示未保存项数,并提供放弃 / 保存。
配置项¶
配置共 20 个字段,可以在 cordis.patch.yml 的 config: 块或设置页修改,改完即时生效,每个请求都重读一次配置。常用项如下,完整列表见 README:
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
preset |
general |
兜底预设,请求未指定 presetId 时使用 |
presetButtons |
四套全选 | 输入框显示哪几颗按钮 |
contextEnabled |
true |
读取会话上下文 |
modelMode |
follow |
follow 或 fixed |
provider / model |
空 | 固定模型的 provider 与模型 id |
reasoningEffort |
空(模型默认) | 固定模型的思考强度 |
maxOutputTokens |
5000 |
单次输出上限 |
timeoutMs |
480000 |
单次请求截止时间 |
contextMaxMessages / contextMaxChars |
8 / 4000 |
上下文条数与字符预算 |
算力之外的行为调优都在这里。要快要省的话,固定模型里选低强度或轻量模型;跟随模式会继承当前会话强度,会话是 Max 就跑满 Max。
值得知道的边界¶
- 草稿里含
/菜单认领的命令芯片时,结果可能写不回去,因为宿主没有发布这类标签的坐标换算数据。原稿不丢,结果保留待重试;把那个标签删掉再点即可。@引用标签不受影响,手打的/xxx是普通文字,无影响。 - 固定模型不支持所选的思考强度档位时,会自动按该模型默认强度重试,结果正常,但强度覆盖失效。
- 超时 480 秒,超时后草稿不变,可以重试。
- 如果
configForms拿不到(例如 profile 里没有设置基础包),设置页显示”不可用”,输入框旁会退回一颗按钮、请求不带presetId,行为等价于 1.0.x。这是设计兜底,不是故障。 - 插件不声明
engines.dsh,这是刻意的:一旦声明,宿主遇到不认识的 rc 版本会拒绝装载整个插件,不声明则回落检查恒为兼容。
DSH 升级后的自检¶
DSH 每升一次版本,可以在插件目录下跑这个,三十秒内确认插件还活着:
npm run self-check -- -SkipLive -Port <当前端口>
四个层级依次验证:源码语法、清单契约、宿主运行时、端到端真实请求。只看语法和契约、不花模型额度就加 -SkipLive。两个容易踩的点:
--不能省。npm 不转发未知参数,写成npm run self-check -SkipLive只会打印一行警告,然后执行不带参数的脚本,等于偷偷真打一次模型接口。- 端口要现填。宿主每次启动换端口,取 Web GUI 地址栏里的那个,脚本内置的三个候选端口不一定命中。
失败会给出可操作提示并以退出码 1 结束。
适合谁,以及安装前要做的事¶
适合这类人:经常在编排式工作流里输入半截想法,希望提示词质量稳定、又不想被自动改写夺走控制权。插件在输入框原地改、一键可退、绝不自动发送,控制权始终在你手上。
安装前同样建议按 DSH 处理第三方插件的惯例检查两件事:读一遍源码(核心就 index.js 和 client.js,仓库里另有 docs/ARCHITECTURE.md、docs/HOST-CONTRACT.md 说明设计决定和宿主依赖的 25 个契约点),以及确认许可证(package.json 里写的是 MIT)。插件以当前 DSH 进程的权限运行,源码里的 POST /dsh-draft-studio/refine 端点还带有 Host / Origin 必须 loopback、Content-Type 必须 application/json、1 MiB 上限等请求栅栏,实际行为以仓库代码为准。
小结¶
Draft Studio 的价值不在提示词写得多花哨,而在把”想到一半”和”模型真能照做”之间的缺口用一次点击、并且只在你需要时补上。目录页和仓库地址:
- SkillHub 目录:https://www.skillhub.cn/plugins/wufeng0105/dsh-draft-studio
- GitHub:https://github.com/wufeng0105/dsh-draft-studio