Draft Studio · 草稿工坊
输入框里那个想到一半的草稿,点一下,变成 AI 真能照着干的提示词。
不发送、不弹窗、不换页面——就在输入框里原地改写。不满意就点回去,或者 Ctrl+Z。
1. 它解决什么
你打字往往是一边想一边写:
帮我弄个爬虫抓豆瓣
这句话你自己知道要什么,但交给 AI 就会跑偏——它不知道抓哪些字段、要不要存库、频率多少、出错怎么办。你得多轮来回才能说清。
点一下这个按钮,同样一句话会变成:
用 Python 写一个抓豆瓣电影 Top250 的爬虫,输出字段包括片名、评分、简介、链接。要求:遵守 robots.txt,请求间隔不低于 2 秒,结果存为 JSON 文件。若页面结构变化导致解析失败,输出明确的错误信息而不是静默跳过。<技术栈候选:requests+BeautifulSoup / Playwright>
——目标、约束、输出格式、验收标准都在里面了。而且它不会替你选中任何你还没决定的事:草稿里没说的技术栈,它会列几个候选让你挑,而不是自己拍板。
为什么值得单独装一个
| 不用它 | 用它 | |
|---|---|---|
| 提示词质量 | 取决于你当时写得多细 | 每次都补齐目标、约束、输出格式 |
| 来回沟通 | 常要追问两三轮 | 一次说清 |
| 会改你的原文吗 | — | 会,但你一键能还原 |
2. 它是怎么做的(够用就行,不必细看)
按钮点下去之后,它拿你的草稿(可选加上当前会话最近几轮发言,用来消解"刚才说的"这类指代)发给模型,要求模型只返回改写后的提示词,然后写回输入框。
- 模型两档:跟着当前会话走(连思考强度一起跟随),或者在设置里固定一个。
- 四套预设:通用 / 编程 / 写作 / 翻译。每套是一份完整、可编辑的系统提示词——觉得它改得不符合你口味,就直接改那套提示词。
- 不发送:改完还是草稿,发不发、什么时候发,你说了算。
3. 安装 / 卸载
安装:DSH 插件页 → 添加插件 → 本地目录,指向本文件夹。
卸载:插件页 → 本插件 → 移除。只想暂时停用就关掉开关,不必卸载。
4. 用
4.1 按钮
草稿非空时出现在发送按钮左侧。四种状态循环:
| 状态 | 看到什么 | 点它会 |
|---|---|---|
| 空闲 | 一个图标 | 开始改写 |
| 运行中 | 「已用 N 秒」 | 取消 |
| 可回退 | 结果已写回 | 还原成原文 |
| 失败 | 悬停看原因 | 重试 |
等待期间你可以继续打字、切到别的会话、甚至直接发送:
- 草稿已经变了,结果不会覆盖你的新内容,会保留着等你重试;
- 切走再切回,请求不会断,状态还在;
- 发送之后,转圈会自己停掉。
4.2 设置页
设置 → 草稿工坊:
- 两个开关:总开关、是否读取会话上下文。
- 预设下拉:选中哪套,下方编辑的就是哪套的提示词。
- 提示词编辑:一份完整的系统提示词。清空并保存 = 恢复内置默认。
- 模型来源:「跟随会话 / 固定模型」切换。固定时展开两个下拉——模型、思考强度。
- 底部:左侧未保存项数,右侧放弃 / 保存。
5. 配置项
15 个字段,可在 cordis.patch.yml 的 config: 块或设置页改。改完即时生效——每次请求都重读配置。
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
preset |
general |
当前预设(general / code / writing / translation) |
promptGeneral / promptCode / promptWriting / promptTranslation |
内置文本 | 每套预设的完整提示词 |
contextEnabled |
true |
读取会话上下文 |
modelMode |
follow |
follow 或 fixed |
provider / model |
空 | 固定模型的 provider 与模型 id |
reasoningEffort |
空(模型默认) | 固定模型的思考强度 |
maxOutputTokens |
2000 |
单次输出上限 |
timeoutMs |
180000 |
单次请求截止时间 |
contextMaxMessages / contextMaxChars |
8 / 4000 |
上下文条数与字符预算 |
6. 边界(说在前面)
- 命令芯片:草稿里含
/命令标签(从/菜单认领的那种)时,结果可能写不回去——宿主没发布这类标签的坐标换算数据。原稿不会丢,结果会保留待重试;把那个标签删掉再点即可。@引用标签不受影响。 - 手打的
/xxx是普通文字,不是芯片,无影响。 - 思考强度被拒:固定模型不支持所选档位时,自动按该模型默认强度重试——结果正常,只是强度覆盖失效。
- 耗时取决于模型与强度:跟随模式会继承会话强度(会话是 Max 就跑满 Max)。要快要省,固定模型里选低强度或轻量模型。
- 超时 180 秒;超时后草稿不变,可重试。
- 不做:自动发送、多轮改写、模板库、历史记录、重启后的上下文回放。
7. DSH 升级后跑一下
DSH 每升一次版本,先跑这个,三十秒内知道插件还活着没有:
npm run self-check
四层验证:源码语法 → 清单契约 → 宿主运行时 → 端到端真打一次接口。任一失败会给出可操作提示并以退出码 1 结束;只想验证不花模型额度就加 -SkipLive。
DSH 大版本升级最可能坏在两处:engines.dsh 的预发布范围把新 rc 排除、以及官方库的声明方式变了——这两条脚本都会直接报出来。
8. 源码地图
纯 JavaScript,无构建、无 node_modules(依赖由宿主提供)。验证方式:node --check + self-check + 真机。
| 文件 | 职责 |
|---|---|
index.js |
宿主半包:Config schema(15 字段全 volatile)、三级模型路由、上下文装配、generate(finish.kind 分派 + 预算翻倍重试 + 强度回退)、POST /dsh-draft-studio/refine(loopback + Origin + Content-Type 三重栅栏、1 MiB 上限、超时) |
client.js |
浏览器半包:按钮四态、insertText 写回(draftRev 守卫 + 芯片坐标折算)、一键回退、模块级任务注册表、设置页、中英文案 |
cordis.patch.yml |
装载声明(一行 insert,entry id 全局唯一) |
package.json |
dsh.bundle.patch + dsh.client;@deepseek-ai/schemastery 为 peerDependencies |
locale/*.json |
市场卡片元数据 |
改提示词文本看 index.js 的 PROMPT_BASE / PRESETS;改交互看 client.js 的 RefineControl;改模型路由看 index.js 的 resolveRoute;设置页控件看 client.js 的 SettingsSection。
9. 更多
- 发布流程:
RELEASE.md - 设计决定的原因、两次独立审计的结论、真机缺陷修复史:
docs/PROJECT-NOTES.md
No comments yet. Be the first to write one.