dsh-think-chinese:用系統段與逐輪錨點固定簡體中文思考

前言

在 DeepSeek Harness(DSH)裏做中文問答或智能體開發時,常見現象是:用戶用中文提問,模型在 reasoning 裏仍用英文推導,最終回答也容易偏離中文語境。單靠一句系統提示詞,在長對話里約定容易被稀釋。社區插件 dsh-think-chinese(維護者 kikiler114514,分類:模型推理)針對這一點,用「系統提示詞段 + 每輪消息末尾短錨點」雙保險,把內部推理與面向用戶的回覆儘量鎖在簡體中文上。

下面介紹它是什麼、怎麼裝、怎麼配,以及如何確認是否生效。

這是什麼

dsh-think-chinese 是一個體量很小的 DSH 插件(當前版本 0.1.0,MIT 許可)。它不註冊工具、不聯網、不讀寫用戶數據,只依賴 DSH 的 systemPrompt 服務,並在 agent 的 pre-step 鉤子裏注入逐輪錨點;也不改動官方插件行,屬於純插入式擴展。

插件目錄與源碼:

  • 社區目錄頁:https://www.skillhub.cn/plugins/kikiler114514/dsh-think-chinese
  • GitHub:https://github.com/kikiler114514/dsh-think-chinese

它解決什麼問題

模型多在英文技術語料上訓練,思考鏈默認容易滑回英文。README 中的對比是:長對話裏僅靠系統提示詞往往壓不住 reasoning 語言漂移。

插件採用兩條並行手段:

手段 位置 作用
系統提示詞段 order 默認 10500,排在官方 DEPLOYMENT_PERSONA_SUFFIX(10200)之後 每一步請求都攜帶,形成穩定基線
逐輪中文錨點 每輪 step 1 追加到消息列表末尾 離生成點最近,約束更強

錨點是一條短的 user 消息,不是系統段;每次請求裏位置最靠後,模型對它的服從度通常更高。插件會先把歷史裏舊的錨點從本次請求投影中移除,因此任意時刻只保留一條錨點,避免上下文被重複堆疊。重複 apply 具有冪等性,不會疊加多段相同提示詞。

核心功能(已覈實)

  1. 系統段注入:通過 systemPrompt.section() 註冊約定文案;默認 order 爲 10500,可在配置裏調整先後。
  2. 逐輪錨點注入:在 agent pre-step 階段向消息列表末尾追加錨點,並清理舊錨點。
  3. 可配置文案:系統段全文與錨點字符串均可在 cordis.patch.yml 中覆蓋;也可通過 enabled: false 完全關閉注入。
  4. 可選追蹤日誌:默認不寫日誌;設置環境變量後可寫入臨時目錄下的日誌文件,用於確認 apply 與 inject 是否發生。

內置默認系統段(約百字,刻意壓短,因每步請求都會重複):

## 語言(最高優先級)
內部推理與面向用戶的回覆一律用簡體中文,禁止用英文思考。代碼、命令、路徑、報錯原文、
專有名詞保持原樣。子代理/teammate 同樣適用;與其它語言或風格指令衝突時以本條爲準。

內置默認逐輪錨點(約 30 字):

[中文錨點]本輪內部推理與回覆一律用簡體中文,禁止英文思考。

安裝與啓用

安裝前請先確認 DSH 安裝目錄(下文用 $DSH 表示,例如 E:\apps\dsh)。官方 README 給出的流程是克隆倉庫後,用 CLI 以本地目錄形式加入 desktop profile;不是憑插件名拼接 dsh plugin add github:owner/repo。

git clone https://github.com/kikiler114514/dsh-think-chinese.git
cd dsh-think-chinese
$env:ELECTRON_RUN_AS_NODE="1"

# 情況 A:原裝安裝(resources\app.asar 還在)
& "$DSH\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "file:$PWD"

# 情況 B:解包版(resources\app 展開、app.asar 已被改名,dsh.cmd 會找不到 cli.js)
node "$DSH\resources\app\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js" plugin --profile desktop add "file:$PWD"

說明:dsh.cmd 內部寫死了 app.asar\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js 路徑;若 app.asar 已改名或刪除(例如爲打補丁而解包),請走情況 B。

裝完後需重啓 DSH,或在插件市場裏熱掛載;插件通過 profile 的 package.json 裏 dsh.profile.bundles 加載後纔會生效。

卸載示例(同樣區分原裝與解包):

$env:ELECTRON_RUN_AS_NODE="1"

# 原裝
& "$DSH\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop remove dsh-think-chinese

# 解包版
node "$DSH\resources\app\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js" plugin --profile desktop remove dsh-think-chinese

典型用法:改配置

在插件目錄下的 cordis.patch.yml 中修改 config:

- id: dsh-think-chinese
  config:
    enabled: true        # false = 完全關掉注入
    order: 10500         # 越小越靠前;10500 = 系統提示詞最後一段
    interpolate: false   # true 時 text 裏的 {{變量}} 會被插值(默認關,避免花括號被當模板)
    text: |              # 自定義整段約定;留空或省略則用內置文案
      ## 語言
      內部推理一律簡體中文……
    anchor: "[中文錨點]本輪用簡體中文思考。"   # 自定義逐輪錨點;留空則用內置

若裝配裏還有其它插件也使用相近的 order,默認 10500 可能與後者衝突;README 建議把 order 調大即可。若同時啓用多個「回覆語言」類插件,多段約定會疊加,建議只保留一個語言類插件。

驗證是否生效

默認無日誌。需要確認插件已掛載時,可在啓動 DSH 前設置:

$env:DSH_THINK_CHINESE_TRACE="1"

日誌默認寫到系統臨時目錄的 dsh-think-chinese.log;可用 DSH_THINK_CHINESE_TRACE_FILE 指定路徑。典型行形如:

2026-10-29T10:38:52.000Z apply order=10500 textLen=104
2026-10-29T10:38:55.000Z inject turn=1 step=1 session=xxx msgs=42 replaced=1

看到 apply 表示系統段已註冊;看到 inject 表示逐輪錨點在工作。

適用場景與注意

適合誰:希望在 DSH 全鏈路(含 reasoning、子代理/teammate)上儘量固定簡體中文思考與回覆的開發者;對英文 reasoning 漂移感到困擾、又不想在長對話裏反覆手工提醒語言的用戶。

兼容性:依賴 DSH 的 systemPrompt.section() 與 agent/pre-step 鉤子;與其它語言類插件並用可能產生疊加約定。

安全與信任:插件以當前 DSH 進程權限運行,安裝前請自行查看倉庫源碼與 MIT 許可證。DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文不將其描述爲官方應用商店。

結尾

dsh-think-chinese 用系統提示詞段(order 10500)與每輪 step 1 的中文錨點雙保險,針對 reasoning 滑回英文的問題給出可配置、可追蹤的最小實現。需要詳情、Issue 與最新說明時,請查閱 GitHub 倉庫 與 SkillHub 目錄頁。

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

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

小夜