前言¶
DeepSeek Harness(DSH)適合帶文件工具、帶會話記錄的 agent 輪次;遊戲裏的 AI 聊天 Mod(例如 Chill With You 的 AIChat)則往往自帶完整人設、回覆格式和記憶,但通常只能發一次 HTTP 請求,讀不到你本機資料目錄。若直接把 Mod 接到通用雲端 API,人設和本地文件兩件事很難同時滿足;若只用 DSH 默認「編碼助手」人設,又會和 Mod 的角色設定衝突。
下面介紹社區插件 dsh-aichat-bridge(維護者 Naiqey-Star):在本機把固定 DSH 會話包裝成 OpenAI Chat Completions 兼容 的 HTTP 服務,讓人設仍由 Mod 的 system 消息決定,模型與只讀文件訪問交給 DSH 處理。
這是什麼¶
dsh-aichat-bridge 是 DSH 的 bundle 插件(npm 包名 dsh-aichat-bridge),分類上屬於社區目錄裏的「聯網工具」。它不做外網轉發:服務掛在 DSH 已監聽的迴環地址上,並可選再監聽固定本地端口,供遊戲客戶端穩定連接。
一句話:遊戲 Mod POST 一條兼容 OpenAI 的對話請求 → 插件用 Mod 的 system 整段替換 DSH 系統提示詞 → 在同一 sessionId 裏跑完一輪 agent → 把 assistant 文本包成 chat.completion 返回。
它怎麼工作¶
數據流可以概括爲:
遊戲 AIChat ──POST /aichat/v1/chat/completions──▶ DSH 插件(本機 127.0.0.1)
│
├─ 把 system 消息作爲該會話的完整系統提示詞
├─ 打開(或新建)固定 sessionId 的會話
├─ 投遞一條 user 消息,等這一輪跑完
├─ 模型可調用 read_file 讀取 readRoots 內的文件
└─ 把最後的 assistant 文本包成 chat.completion 返回
幾個行爲細節(均來自倉庫說明):
- 一次 HTTP 請求對應一個完整 agent 輪次;輪次結束後會話仍保持活動,會出現在 DSH 側邊欄,可與遊戲共用同一上下文。
- 系統提示詞以
complete: true整段替換,DSH 默認編碼助手框架不會混入;工具說明由橋接自行補充一小段。 - 文件讀取不依賴 DSH 內置文件工具的預設作用域,而是由插件註冊
read_file,路徑限制在配置的readRoots(及allowAllDrives/denyPaths規則)內。 - 插件會用
workspaceRegistry把會話 attach 到路徑匹配的工作區;/health裏workspaces[].attached可查看是否掛上。未正確設置cwd時,會話可能落在_no-cwd,側邊欄看不到——配置裏應填寫與當前工作區一致的項目目錄。
核心功能¶
OpenAI 兼容 HTTP 接口¶
| 方法 | 路徑 | 說明 |
|---|---|---|
GET |
{path}/health |
健康信息,不需要口令 |
GET |
{path}/v1/models |
返回配置裏的模型名 |
POST |
{path}/v1/chat/completions |
主接口,body 爲 OpenAI Chat Completions 格式 |
默認路徑前綴 {path} 爲 /aichat,即例如 GET http://127.0.0.1:<端口>/aichat/health。
固定本地端口(可選)¶
DSH 桌面端每次啓動的 Web 端口可能變化;客戶端若寫死「當前 DSH 端口」,重啓後可能連到正在退出的舊實例(表現爲 502 Bad Gateway)。插件默認另監聽迴環端口 47821:
http://127.0.0.1:47821/aichat/v1/chat/completions
將 listenPort 設爲 0 可關閉獨立端口,僅使用 DSH 自身 Web 端口上的 /aichat/... 路由。
只讀文件工具¶
模型在輪次內可調用 read_file;默認不開放任何目錄,需在配置中顯式列出 readRoots,或通過 allowAllDrives: true 做全盤只讀並配合 denyPaths 排除敏感路徑。單文件默認上限 200000 字節(maxReadBytes)。橋接不申請人工審批:能力刻意收窄爲只讀,避免工具調用卡在審批直到超時。
與 AIChat(Chill With You)對接¶
README 給出了 Mod 側開關(與插件 token、URL 對應即可):
- 安裝插件並確認
/aichat/health正常。 - AIChat 配置 → 0. 後端:
UseDshBridge=True;DshBridgeUrl指向你的 completions 地址(若用固定端口則爲http://127.0.0.1:47821/aichat/v1/chat/completions;README 示例裏也曾寫過 DSH 實際端口);DshBridgeToken與插件token一致或均爲空;DshBridgeModel=dsh-bridge。 - 關閉
UseDshBridge即回到 Mod 原有 API 流程。
安裝與啓用¶
推薦通過 bundle 安裝到指定 profile:
dsh plugin --profile <你的 profile> add dsh-aichat-bridge
在該 profile 的 cordis.patch.yml 中插入插件行(也可改包內 cordis.patch.yml 後重裝)。示例配置:
- insert:
- id: aichat-bridge
name: dsh-aichat-bridge
config:
sessionId: aichat-bridge
provider: deepseek-account
model: deepseek-flash
readRoots:
- D:/我的資料
token: ""
重啓 DSH(或讓 Loader 熱加載)後,日誌中應出現類似:
[aichat-bridge] serving /aichat/v1/chat/completions on session "aichat-bridge" (...)
手工驗證:
curl http://127.0.0.1:<DSH 端口>/aichat/health
本地開發若不想依賴 node_modules 持久拷貝,可在補丁里用 file:// 絕對路徑指向 lib/index.js(詳見倉庫 README「本地開發」一節)。
運行環境:package.json 要求 Node >=20;許可證 MIT。
典型用法¶
請求體示例(system 爲人設與格式說明,user 爲本輪內容):
{
"model": "dsh-bridge",
"messages": [
{ "role": "system", "content": "[情緒]|||語音文本|||字幕文本 格式說明 + 角色人設" },
{ "role": "user", "content": "讀一下 D:\\我的資料\\設定.txt,把裏面的暗號念給我聽" }
]
}
響應爲標準 chat.completion,取 choices[0].message.content 作爲角色回覆;usage 在橋接側爲佔位 0,真實用量在 DSH 界面查看。
開放多個資料目錄時,可在 readRoots 中列出絕對路徑;若需全盤只讀,使用 allowAllDrives: true 並設置 denyPaths 排除如 .ssh、.dsh 等目錄(README 有完整 YAML 示例)。開放範圍越大,本機可讀文本暴露給模型的面越大,按需最小授權即可。
配置要點¶
| 字段 | 默認 | 說明 |
|---|---|---|
path |
/aichat |
DSH Web 上的路徑前綴 |
token |
"" |
Bearer 口令;空則不校驗,建議設置 |
sessionId |
aichat-bridge |
固定會話 id |
provider / model |
deepseek-account / deepseek-flash |
輪次模型路由 |
readRoots |
[] |
允許 read_file 的絕對目錄 |
listenPort |
47821 |
固定迴環端口;0 僅用 DSH 端口 |
cwd |
空 | 會話項目目錄;空則可能進 _no-cwd |
timeoutMs |
180000 |
單輪超時,超時返回 504 |
完整字段見倉庫 README「配置」表。
適用場景與注意¶
適合誰: 已在用 DSH、並希望 Chill With You AIChat(或其它能發 OpenAI 兼容 POST 的客戶端)把對話落到本機 agent,同時讓人設由 Mod 控制、並只讀訪問你指定的資料目錄。
權限與安全: 插件隨當前 DSH 進程在本機運行;read_file 僅在配置允許的路徑內只讀解析(含 realpath 邊界)。安裝前請自行查看 GitHub 源碼 與 MIT 許可證。建議設置 token,避免本機其它進程誤用迴環服務。
已知限制(倉庫原文): 同一會話同時只能有一個外部寫者(衝突時 409 SESSION_IN_USE);不支持流式(stream: true 仍返回一次性 JSON);不合並 Mod 塞進 user 的多輪歷史,橋接按「一請求一輪」處理;DSH 仍可能注入工作目錄相關上下文,插件側無法完全屏蔽。
DeepSeek Harness 生態強調「一切皆插件」;SkillHub 插件目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-aichat-bridge 解決的是「Mod 人設 + DSH 文件與會話」的拼接問題:OpenAI 兼容入口、固定會話、可選固定端口、可配置的只讀讀盤。需要細節、契約測試與變更記錄時,以倉庫爲準。
- 目錄頁:https://www.skillhub.cn/plugins/Naiqey-Star/dsh-aichat-bridge
- GitHub:https://github.com/Naiqey-Star/dsh-aichat-bridge