前言¶
寫提示詞的常見狀態是「想到一半就發」。輸入框裏躺着一句”幫我弄個爬蟲抓豆瓣”,你自己知道要哪些字段、要不要存庫、頻率多少、出錯怎麼辦,模型不知道——結果就是兩三輪追問。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