dsh-prompt-persona:在設置頁編輯 DSH 系統提示詞

前言

DeepSeek Harness(DSH)在每次對話前會動態組裝系統提示詞,其中 deployment:persona 是唯一一段由配置或部署作者撰寫的片段(order 0)。默認做法是在 settings.yamlcordis.patch.yml 裏手寫這段文本,改一次要重啓進程,也看不到 persona 與 harness 身份、工具引導等片段拼合後的完整效果。

@xilin3/dsh-prompt-persona 把這段 persona 接到 Web 設置頁:可視化編輯、即時預覽、持久化保存,無需改動 Harness 本體。下面介紹它的定位、能力與安裝用法。

這是什麼

@xilin3/dsh-prompt-persona 是維護者 Xilin3 發佈的 DSH 客戶端插件(MIT 許可,當前版本 0.1.0)。它在 Harness 設置頁新增「系統提示詞」區塊,接管 deployment:persona 的寫入,屬於「給 Harness 加系統提示詞」的路徑之一——直接改部署 persona。

插件在 SkillHub 社區目錄 歸類爲「客戶端」;GitHub 倉庫 xilin3/dsh-prompt-persona 約有 13 stars、2 forks。

核心功能

設置頁可視化編輯

安裝並重啓 dsh web 後,Settings 頁面會出現「系統提示詞」section,包含:

區塊 說明
注入模式 下拉選擇替換 / 追加 / 關閉
自定義提示詞 多行文本域,編寫 persona 內容,支持模板變量
保存並應用 / 預覽效果 持久化到 settings.yaml,或僅預覽草稿效果
當前提示詞 只讀展示當前生效的完整系統提示詞
添加效果(預覽) 點擊「預覽效果」後展示草稿應用後的完整提示詞

「當前提示詞」與「添加效果(預覽)」展示的是 persona 與 harness 身份、工具引導等所有 section 拼合後的全文,而不只是 persona 片段本身。

三種注入模式

mode 決定自定義 persona 如何作用於 deployment:persona

  • replace(默認):整段替換當前 persona。
  • append:在現有 persona 之後追加,中間空一行分隔。
  • off:不注入,保留 deployment 默認 persona。

即時預覽

點「預覽效果」時,插件把草稿應用到一份副本上,返回保存後的完整系統提示詞,不落盤、不污染當前狀態。適合在正式保存前確認 persona 與 harness 其他片段的拼合效果。

模板變量

persona 文本在保存與渲染時執行嚴格插值,未註冊的變量會報錯。可用變量:

變量 含義
{{model}} 當前模型(agent-default-model 或運行時變量)
{{provider}} 當前 provider
{{cwd}} 進程工作目錄

樂觀併發保存

保存時基於 settings revision 做衝突檢測。revision 不匹配時返回 HTTP 409(code: "settings-conflict"),客戶端需重新加載後重試,避免覆蓋他人同時的修改。

工作原理

settings.yaml                    HTTP 路由
  prompt-persona ──────────────► /_dsh/prompt-persona/settings
       │  (persona, mode)              ▲
       ▼                               │ GET snapshot / POST preview|save
system-prompt/assemble waterfall ──────┘
       │  把 persona 寫入 deployment:persona section
       ▼
完整系統提示詞(每步動態組裝)
  1. 宿主插件(lib/index.js)註冊 settings namespace prompt-persona,並監聽全局 system-prompt/assemble waterfall;每次組裝完成後,按 mode 把設置裏的 persona 寫入 deployment:persona section。
  2. HTTP 後端(lib/web.js)在同源掛載 /_dsh/prompt-persona/settings,提供當前提示詞、預覽、保存三個能力。
  3. 瀏覽器插件(lib/client.js)通過 settings.section slot 注入 React 設置面板。

安裝與啓用

把插件加入 web profile($DSH_HOME/profiles/web/,Windows 默認 C:\Users\<你>\.dsh\profiles\web\)。

方法 A:命令行(推薦)

dsh plugin --profile web add github:xilin3/dsh-prompt-persona

然後把 @xilin3/dsh-prompt-persona 追加到該 profile package.jsondsh.profile.bundles 裏(見方法 B 的完整示例),最後重啓 dsh web

方法 B:手動編輯 profile 的 package.json

{
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "@xilin3/dsh-prompt-persona"
      ]
    }
  },
  "dependencies": {
    "@xilin3/dsh-prompt-persona": "github:xilin3/dsh-prompt-persona"
  }
}

在 profile 目錄執行:

pnpm install

最後重啓 dsh web。前端與 Host 改動不會熱更新,必須重啓進程並刷新瀏覽器。

本地開發時也可使用 "file:../path/to/dsh-prompt-persona",或把源碼複製到 profile 目錄後用 "file:dsh-prompt-persona" 相對路徑掛載。

典型用法

替換 persona

在設置頁選擇「替換」模式,寫入:

你是一名資深數據分析師,工作目錄是 {{cwd}}。

保存後,deployment:persona 整段被替換爲上述文本(變量會在渲染時插值)。

追加約束

選擇「追加」模式,在已有 persona 後補充:

請始終用簡體中文回答。

結果是在當前 persona 與追加內容之間插入空行後拼接。

配置文件

持久化在 $DSH_HOME/settings.yaml,namespace 爲 prompt-persona

prompt-persona:
  persona: |
    你是一名資深數據分析師。
    工作目錄是 {{cwd}},模型是 {{model}}。
  mode: replace        # replace | append | off
字段 類型 默認 說明
persona string "" 自定義 persona 文本(模板)
mode enum "replace" replace / append / off

非法 mode 會被歸一化爲 replacepersona 會做 trim

HTTP API

瀏覽器設置頁使用的同源路由 /_dsh/prompt-persona/settings

方法 請求體 說明
GET 返回 { settings: {value, revision, applies}, currentPrompt }
POST { action: "preview", persona, mode } 返回 { previewPrompt }
POST { action: "save", persona, mode, expectedRevision } 保存;返回新的 snapshot

適用場景與注意

適合誰

  • 需要在 Web 界面快速調整 agent 角色設定、語言風格或領域約束的 DSH 用戶。
  • 想在不改 Harness 源碼、不手寫 cordis.patch.yml 的前提下管理 deployment:persona 的部署者。
  • 需要在保存前預覽完整系統提示詞拼合效果的場景。

注意事項

  • 插件隨當前 dsh web 進程運行,讀寫 settings.yaml 與掛載 HTTP 路由均以該進程權限執行。安裝前應閱讀 源碼MIT 許可證,確認符合你的安全要求。
  • 本插件只管理 deployment:persona 這一段;harness 身份、工具引導等其他 section 仍由 DSH 核心與其他插件負責。
  • SkillHub 是社區維護的插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」理念,本插件是其中面向 persona 編輯的一個客戶端擴展。

小結

@xilin3/dsh-prompt-personadeployment:persona 從配置文件裏的靜態文本,變成設置頁裏可編輯、可預覽、可持久化的內容,並支持替換、追加、關閉三種注入模式與 {{model}} / {{cwd}} / {{provider}} 模板變量。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜