用 deepseek-manners 給 DeepSeek Harness 每輪消息注入後綴

前言

DeepSeek Harness(dsh)把運行時拆成一層層插件:官方倉庫的口號是 Everything is a Plugin(一切皆插件)。裝好 Web 界面之後,真正決定模型「這一輪看見什麼」的,往往不是系統提示詞本身,而是每次請求前還能不能往 payload 底部再塞一段話。

常見需求有兩類。一類很輕:每輪用戶消息後面固定補一句「謝謝你,鯨魚大人」,當趣味彩蛋。另一類更實用:角色扮演時要覆寫 <think> 思考約定、統一語氣或限制篇幅,又不想每條消息手工粘貼。社區插件 deepseek-manners 把這兩件事做成同一條機制——在 turn 的第一次模型請求裏注入一段後綴,僅當輪生效。

本文按社區目錄頁、GitHub 倉庫 README / 源碼,以及 DeepSeek Harness 官方倉庫交叉覈對後整理:它是什麼、怎麼裝、配置項實際怎麼工作。社區插件目錄 deepseek-harness-plugin.com 是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。

這是什麼

deepseek-manners 是一款 DeepSeek Harness 插件,由 Moeblack 維護,託管在 GitHub 倉庫 Moeblack/deepseek-manners。社區目錄把它歸在「工具與能力」分類。倉庫 package.json 版本號爲 0.1.0,主要語言是 TypeScript。2026-08-17 查看時,GitHub 顯示 13 星;目錄頁當時列出 10 星,以倉庫頁面爲準。

目錄頁和 README 的定位一致:在每次發消息之後給模型補一句感謝語,默認文本是「謝謝你,鯨魚大人」,僅當輪生效。源碼裏這件事落在 agent/pre-step:把配置中的 text 做成一條 source.kind === "plugin" 的用戶消息,追加到本輪 payload 底部。

它解決的不是「給界面加點裝飾」,而是:

  • 每輪用戶輸入只注入一次,工具循環的後續 step 不再重複
  • 上一輪的後綴按規則回收,避免無限堆在上下文裏
  • 需要時可以把 text 換成多行指令,用來約束語氣、格式或思考標籤

當前倉庫沒有附帶 LICENSE 文件,GitHub 也未識別到 SPDX 許可證。安裝前應自行閱讀源碼並確認使用條件。

核心功能

只在 turn 的第一次請求注入

注入條件寫在 src/index.ts:本輪 messages 裏必須出現 source.kind === "user" 的直接輸入,且開關打開、text 非空。對應 README 的說法——只在包含用戶直接輸入的 step(turn 的第一個模型請求)注入,落在 payload 底部。智能體走工具調用時,後續 step 不會再貼一遍同一段後綴。

回收舊後綴,超長回覆則跳過

上一輪注入的後綴不會永遠留在模型可見面。下一輪 pre-step 會查找本插件寫入的 user/message,用 surface replace 把最近一條替換成空文本;會話日誌仍保留,只是模型面不再看見。

是否回收只看最近一次 assistant 回覆的字符數(含 textreasoning),不追溯更早的歷史:

  • 回覆短:回收最近一條舊後綴
  • 回覆超長:跳過回收,該後綴永久保留,以免 surface replace 打亂長回覆的 prompt cache

閾值由 hideAboveChars 控制。源碼默認值是 0,表示總是遮蔽;README 配置示例寫成 2000,那是「超過該長度就跳過回收」的示例,不是出廠默認。若要保護長回覆的緩存,需要自己在 settings.yaml 裏把這個數字改成大於 0。

關掉開關只停止新注入。源碼註釋寫明:歷史裏已經存在的後綴仍按上面的規則回收。

Web 界面上的心形開關

裝到 Web profile 後,輸入框右側會多一個心形按鈕(aria-label 爲「道謝開關」,提示文案是「給小鯨魚道謝」)。開啓時實心綠色並帶角標脈衝,關閉時空心灰色。package.json 把客戶端聲明爲 "platform": "web",掛在 conversation.input.right 插槽。

開關狀態寫在插件目錄的 config.json,通過 GET/POST /deepseek-manners/settings 讀寫,會覆蓋 settings.yaml 裏的 enabled。改 texthideAboveChars 仍走 $DSH_HOME/settings.yaml

把感謝語換成任意後綴

text 會原樣貼到上行 payload 底部,不支持模板變量。README 說明可以寫成 YAML 塊標量,用來:

  • 追加角色扮演風格的回覆引導
  • 覆寫模型的思考模式(<think> 標籤行爲)
  • 追加風格、語氣、輸出格式要求

倉庫把「適配 victorchen96/deepseek_v4_rolepaly_instruct 的思維鏈覆寫」標成額外用法(並寫了「主要用法」)。那份文檔面向 DeepSeek 官方 App / 網頁專家模式以及 deepseek-v4-flash / deepseek-v4-pro API,原理是把思考約定貼在用戶消息末尾。deepseek-manners 提供的是 DSH 側每輪自動粘貼,不是該倉庫的官方組件。

安裝與啓用

先有一套能跑的 DeepSeek Harness。官方倉庫目前仍是 developer preview,並標明會有破壞性變更。本插件最近一次推送(2026-08-13,commit 32f58a8a008797a624f0f46367cb91fed9de5dee)的說明是適配開源版 0.1.0-rc.5

社區目錄頁給出的安裝命令是:

dsh plugin add github:Moeblack/deepseek-manners

需要可復現安裝時,目錄頁要求固定 commit 哈希:

dsh plugin add github:Moeblack/deepseek-manners#32f58a8a008797a624f0f46367cb91fed9de5dee

倉庫 README 寫的是帶 Web profile 的寫法(GitHub 用戶名大小寫不敏感,moeblackMoeblack 指向同一倉庫):

dsh plugin --profile web add github:moeblack/deepseek-manners

本地開發可以用符號鏈接:

dsh plugin --profile web add -w link:/path/to/deepseek-manners

index.mjsclient.js 已隨倉庫提交,git 安裝不需要再跑構建。官方 CLI 會把聲明瞭 dsh.bundle.patch 的包裝進當前 profile。若界面沒有出現心形開關,按 DSH 慣例重啓對應 profile(例如 dsh --profile web)後再看。

目錄頁的安全提示需要照做:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前檢查源代碼倉庫和許可證。

典型用法

默認感謝語

$DSH_HOME/settings.yaml 寫入(字段名以倉庫 README 爲準):

deepseek-manners:
  text: 謝謝你,鯨魚大人
  enabled: true
  hideAboveChars: 2000   # 最近一 Turn assistant 回覆超過此字符數時跳過遮蔽;0 = 總是遮蔽

不改 text 時,源碼默認同樣是「謝謝你,鯨魚大人」。Web 界面也可以只用輸入框右側的心形開關控制是否注入。

README 寫明:修改 settings.yaml 後無需重啓。DSH 的 dsh-settings-file 默認用 chokidar 熱重載(100ms 防抖),改動大約 1–2 秒生效。YAML 語法錯誤時,服務會保留最後一份合法配置並在日誌告警,不會因此崩潰。

多行指令

YAML 用 ||- 塊標量。README 要求塊標量內每一行至少縮進 6 個空格(text: 本身縮進 2,正文再縮進 4):

deepseek-manners:
  text: |-
    以下是對本次回覆的補充要求,請嚴格遵守:

    1. 回覆開頭使用角色慣用的口頭禪,保持角色語氣一致。
    2. 思考過程放在 <think> 標籤內,正文直接輸出。
    3. 正文不使用列表式結構,用自然段落敘述。
    4. 每次回覆控制在 200 字以內。
  enabled: true
  hideAboveChars: 600

覆寫思考過程

倉庫提供的思考模式示例:

deepseek-manners:
  text: |-
    <think>
    請在思考過程中遵循以下約定:

    - 先簡要分析當前對話的目標與立場。
    - 列出 2-3 個可選回應方向,再選擇最符合角色設定的一項。
    - 思考結束後直接輸出正文,不重寫、不檢查。
    </think>
  enabled: true
  hideAboveChars: 600

這只是把這段文字貼到 payload 底部。能否穩定改變模型行爲,取決於當前所用模型和提示詞,倉庫沒有給出成功率數據。

適用場景與注意事項

比較適合已經在跑 DSH Web 界面、需要每輪自動追加固定後綴的人:一句感謝語、角色語氣約束,或把思考約定從手工粘貼改成配置。心形開關只出現在 Web 客戶端;host 側的 pre-step 注入跟 profile 是否裝了這個 bundle 有關,README 的安裝示例針對 --profile web

使用前注意這幾條已經能覈對到的邊界:

  1. 權限與許可證。 插件與 dsh 同權運行,安裝可能執行代碼。倉庫目前沒有許可證文件,不能默認按 MIT 或其它寬鬆協議使用。
  2. hideAboveChars 的默認值。 源碼是 0(總是回收);README 示例裏的 2000 需要自己寫進配置纔會生效。設得太小,長回覆的 prompt cache 可能被 surface replace 打斷;保持 0 則每輪都會回收舊後綴。
  3. 沒有模板變量。 舊版 README 曾出現過 {{char}} / {{user}},當前 README 已刪除並寫明「寫入什麼就注入什麼」。
  4. 注入內容對模型可見。 後綴是真實的用戶消息,會進入上下文並佔用窗口。不要把密鑰、內部指令或不宜進日誌的內容寫進 text
  5. DSH 仍在快速迭代。 官方 README 標明會有兼容性破壞。本插件最近一次適配說明針對 0.1.0-rc.5,升級 Harness 後應再覈對倉庫。
  6. 目錄不是官方商店。 以 GitHub 源碼和 dsh plugin add 的原文爲準;星標、分類以打開頁面時的數字爲準,會隨時間變化。

小結

deepseek-manners 的公開形象是「每輪給鯨魚娘說謝謝」,實現上是一條掛在 agent/pre-step 的當輪後綴注入:默認感謝語、可換成多行指令,並用 hideAboveChars 在回收舊後綴和保護長回覆緩存之間做取捨。Web 界面用輸入框旁的心形開關控制是否繼續注入。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/deepseek-manners/

GitHub:https://github.com/Moeblack/deepseek-manners

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

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

小夜