前言¶
在 DeepSeek Harness(DSH)里長期對話,常見矛盾是:上下文窗口有限,而會話卻一天比一天長。舊內容被摺疊或丟棄後,模型很容易「隔幾天就不認得你」。不少開發者會疊多個插件——一個負責壓縮、一個記長期事實、一個管人設或陪伴——工具名和注入點互相搶佔,維護成本往往不亞於調模型本身。
下面介紹維護者 27Synthesis 開源的 dsh-companion-one(社區目錄分類:記憶)。它把自己定位爲「單體陪伴插件」:五區可塑人格、七層長期記憶、內置上下文壓縮、與其他記憶源的只讀合併、溝通風格與 B 站文風學習、陪伴分寸與第一人稱心聲等能力放在同一個包裏;默認不增加額外模型調用,持久化使用 Node 內置 node:sqlite(含 FTS5),不聲明外部插件依賴。GitHub 倉庫當前約 2 stars,版本 0.1.0,許可證 MIT。
這是什麼¶
dsh-companion-one(npm 包名 companion-one)是面向 DSH ≥ 0.2(dsh-go)的自包含插件。它解決的核心問題是:在不大拆插件棧的前提下,讓「記得住、壓得住上下文、有人格與陪伴感、且省 token」可以在一套 SQLite 庫、一套注入預算和一塊麪板裏協同工作。
與「只接管記憶」或「只做壓縮」的單一插件相比,它的設計強調:
- 不代理網絡、不改寫請求;壓縮通過 DSH Session surface replace 完成。
- 靜態導引常駐註冊一次,動態上下文按預算一次性注入後丟棄,以利於 provider 的 KV 緩存。
- 已安裝其他記憶插件時,可只讀掃描併合並,源數據不寫回。
核心能力(與 README 一致)¶
七層長期記憶¶
記憶按 soul / user / project / fact / lesson / topic / rules 分層,可按對話對象(scope)隔離。同層語義相近會合並;fact 層同一鍵的新值會讓舊值失效並可回溯。事實可設 valid_until,啓動與週期性任務會清理過期項。檢索使用 FTS5,輔以關鍵詞兜底。
用戶說「記住……」時,插件用正則寫入 fact(auto:explicit),重複內容會合並。注入策略上:system 側靜態說明只註冊一次;首輪注入 soul/user/rules 摘要;從第二條消息起注入關鍵詞命中的 top-2;壓縮後下一輪在 ≤300 token 預算內重新注入。
內置上下文壓縮¶
提供與宿主壓縮語義一致的四類能力,數據與記憶同在庫內:
compress:只接受比原文更短(約 85% 閾值)的摘要,保留最近 3 條原文。decompress:按塊引用還原被摺疊內容。search_context:對歸檔摘要與原文 FTS5 BM25 檢索。acp_status:上下文壓力、可壓縮範圍與塊列表。
壓力提示分 45% / 75% / 95% 三檔;壓力 ≥95% 時默認只注入一句提示,由當前模型自行決定是否調用 compress,而不是插件再跑一輪總結模型。
陪伴行爲、心情與心聲¶
按人隔離(session header → 綁定 → 默認 → global)。惦記清單 followup 支持 add / list / done / silence,帶到期時間與大小標記,並有限度的提醒剋制。危機相關用語做 0–5 級詞法分級,僅用於調整回應分寸,不替代專業判斷。
心情用 valence / energy 兩因素;heart_voice 每輪可寫一句 20–60 字第一人稱心聲,落庫展示,不寫回人格敘事。
可塑人格(五區模型落地)¶
感知、情緒、執行、敘事、表達五區並行;落到 persona_reaction、persona_chain、persona_narrative 與四個閥門(注意、解釋、情緒閾值、目標優先級)。每輪最多微調一個閥門,注入預算 ≤150 token;promote / rollback / freeze 管理敘事版本。
風格、文風與 fishtalk¶
從用戶原話統計句長、口頭禪、標點等,產出 ≤200 token 的風格卡。內置 fishtalk 判定規則,每輪 turn/end 自檢「魚八股」,下一輪可糾偏。學習中心支持 B 站分區或關鍵詞學習任務、語料投餵與文風包蒸餾;B 站聯網與語料蒸餾依賴本機已安裝 fishtalk 插件,缺失時返回 fishtalk_missing,其餘功能仍可用。關閉 voicePack 可每輪少注入約 60–80 token。
與其他記憶源合併¶
只讀掃描 Mnemon 運行時記憶、項目文檔及 DSH_HOME 下其他含記憶表的 SQLite;跳過疑似密鑰與過短碎片,單次上限 500 條,導入冪等,重複自動合併。
面板、工具與 API¶
8 個頁籤面板(概覽 / 記憶 / 設定 / 學習 / 壓縮 / 惦記 / 風格 / 人格),13 個對話工具,dshGo 上還有「陪伴速覽」面板與輸入框上方 moodstrip。HTTP 寫操作爲 POST /companion-one/api,JSON body 帶 op 字段;GET 與錯誤 Content-Type 會被拒絕,以降低本機端口被跨站濫用的風險。
省 token 的默認策略(簡述)¶
- 零額外模型調用(無 staging / observer 式二次總結)。
- 動態注入預算(README 記載):首輪快照 300、關鍵詞命中 120、壓縮後快照 300、風格卡 200、人格閥門 150(token),用完即棄。
- 壓縮只收確實更短的摘要;面板壓縮頁可查看估算用量與塊級節省。
安裝與啓用¶
運行要求:Node.js ≥ 22.13,DSH ≥ 0.2(dsh-go)。
在已準備好的插件源碼目錄中,README 提供兩種方式(原文如下,不含獲取源碼步驟):
# 方式一:link 安裝(源碼即部署,改完重啓引擎生效)
dsh plugin --profile web add link:$(pwd)
# 方式二:手動放進插件目錄
cp -r . "$DSH_HOME/dsh-go/plugins/companion-one"
裝好後在 設置 › 本機引擎 › 重啓;面板出現在 設置 › 陪伴 或 插件 › 陪伴,對話中會註冊 13 個工具。修改 lib/ 或 index.js 需重啓引擎;修改 client.js 刷新面板頁面即可。卸載插件不會刪除數據庫,重裝後記憶可恢復。
源碼與問題跟蹤:GitHub — 27Synthesis/dsh-companion-one。
配置開關¶
面板「陪伴 › 概覽」可一鍵開關;也可在 bundle 中預置(節選):
- insert:
- id: companion-one
name: companion-one
config:
compression: true
memory: true
companion: true
style: true
persona: true
# dbPath: /absolute/path/companion-one.db
常用項包括:memory、compression、companion、style、persona(默認開);voicePack(文風包,關可省 token);packScene(固定場合語氣);personaFrozen(人格只讀)。完整表格見倉庫 README「配置」一節。
典型用法¶
1、用工具維護記憶與壓縮¶
對話中模型可調用記憶五件套(memory_add、memory_search 等)與壓縮四件套(compress、decompress、search_context、acp_status)。上下文變長且面板顯示壓力升高時,由模型在適當時機提交更短的摘要摺疊較早輪次;需要覈對細節時用 decompress 或 search_context 拉回塊內容。
2、惦記與心聲¶
用 followup 的 add 記錄待關心事項與到期時間;用 list / done / silence 管理。每輪可用 heart_voice 寫一句心聲,在概覽面板查看。
3、人格與風格¶
用 persona 查看狀態或 promote 提交新敘事;需要凍結時用 freeze。用 style_card 查看或開關風格卡。若要從其他插件遷入記憶,在面板記憶頁走只讀掃描與導入流程(對應 API 的 memoryImportScan、memoryImportRun)。
4、HTTP API 示例形態¶
向本機引擎發 POST(具體主機與端口以你的 DSH 部署爲準):
{"op": "overview"}
寫操作須 POST 且 Content-Type: application/json;常用 op 還包括 memories、blocks、persona、setSetting 等,完整列表見 README。
數據、隱私與權限¶
記憶、壓縮塊、風格卡、人格軌跡、心情與心聲默認落在:
<DSH_HOME>/companion-one/companion-one.db
插件本身不向雲端同步;僅學習中心 B 站任務會聯網(經 fishtalk)。導入合併爲只讀,疑似 sk-、ghp_ 等密鑰形態會跳過。
注意:插件以當前 DSH 本機引擎的進程權限運行,可讀寫上述數據庫並暴露本機 HTTP API。安裝前請自行查閱源碼與 MIT 許可證,確認與你的工作流和安全策略相符。DSH 社區插件目錄(如 SkillHub 上的條目)爲社區索引,與 DeepSeek / 幻方無官方從屬關係。
適用場景與取捨¶
更適合:希望在一個插件裏同時解決長期記憶、會話壓縮、陪伴節奏與人格演化,且希望控制 token 與避免多插件衝突的 DSH 用戶;需要從 Mnemon 等來源遷移記憶但不改源數據的生產力場景。
需要知曉:與 billion-context 等插件若爭用同名壓縮工具,本插件會整體讓位、不搶註冊;記憶除「記住……」外不自動從閒聊抽取,以減少錯誤沉澱;學習中心的高級文風能力依賴 fishtalk。
結尾¶
dsh-companion-one 把陪伴系統裏最常見的一串能力收成單體:七層記憶、壓縮引擎、可塑人格、風格與心聲,並默認以「少調用、少重複注入」控制成本。若你正在 DSH 上搭長期對話智能體,可以從官方 README 的安裝與配置入手,用面板 compression / 記憶頁看清 token 與壓力,再按需開關 voicePack 與人格 promote。