flowctx-dsh:面向 DeepSeek Harness 的本地優先上下文引擎

前言

下面介紹一個 DeepSeek Harness(DSH)插件:flowctx-dsh。

它面向智能體編程中常見的上下文管理問題:隨着會話變長,工具輸出不斷累積,歷史細節逐漸模糊,模型可能重複搜索、遺忘約束,或者把早期失敗路徑和關鍵標識符弄丟。已有做法通常依賴基礎壓縮或摘要,但摘要可能丟失失敗路徑,工具結果壓縮後也可能難以原樣取回。

flowctx-dsh 在 dsh-compaction-basic 之上做加性擴展:摘要風格更貼近工程交接,工具結果壓縮後可按 hash 取回原文,歷史可摺疊成分層摘要節點,並提供一個可選的 working_memory 編輯工具。所有擴展均可逐項開關;全部關閉時,行爲等同於僅調整了摘要風格的 dsh-compaction-basic。

插件定位

flowctx-dsh 是面向 DSH 的本地優先上下文引擎,由 Ayou-Claw 維護。

  • 名稱:flowctx-dsh
  • 版本:0.1.0
  • 許可證:MIT
  • GitHub:https://github.com/Ayou-Claw/flowctx-dsh

它不是替代 DSH 基礎壓縮能力,而是在其上做擴展:

  • 摘要輸出面向工程師交接筆記;
  • 歷史可後臺摺疊成分層 summary nodes;
  • 超閾值工具結果可逆投影;
  • 提供可選的工作記憶工具;
  • 提供 flowctx_retrieve 用於取回被壓縮材料。

核心能力

工程師交接筆記摘要

這項能力掛在 agent/pre-step,替換原摘要提示詞。

它要求摘要輸出 6 段式交接筆記,並專節保留兩類關鍵信息:

  • 失敗路徑;
  • 逐字標識符。

與通用敘述式摘要相比,它更適合軟件調試、代碼修復、長期任務推進等場景,因爲“哪條路試過了”“哪個函數、路徑、commit 或 session id 出現過”往往比籠統總結更重要。

該能力默認開啓。

分層 DAG 摘要

這項能力同樣掛在 agent/pre-step,但走後臺 fire-and-forget 路徑。

它把歷史摺疊成分層 summary nodes,而不是隻維護一條滾動摘要。對於長會話來說,早期不同話題可以保留爲不同層級的摘要節點,避免全部被壓成一段泛化描述。

該能力默認開啓。

可逆工具結果投影

這項能力掛在 tools/post-execute。

當工具返回結果超過閾值時,它會對 tool result 做結構化壓縮。壓縮時不是直接丟棄原文,而是:

  • 將原文按 hash 存入 CompressionStore;
  • 在上下文中保留可取回引用;
  • 支持 byte-exact 取回。

也就是說,大段日誌、長工具輸出可以先進入壓縮引用,後續需要時再按原樣恢復。

該能力默認開啓。

可編輯工作記憶

這項能力通過 flowctx_scratch_* 工具提供,用於維護 <working_memory> 塊。

它默認關閉。開啓後,模型可以通過以下工具維護工作記憶:

  • flowctx_scratch_append
  • flowctx_scratch_replace
  • flowctx_scratch_rethink

適合需要讓 agent 主動記錄當前目標、待辦事項、不可遺忘結果的任務。

取回工具:flowctx_retrieve

flowctx_retrieve 是配套取回工具。

它支持兩類取回:

  • 按 hash 取回被投影壓縮的原文;
  • 按 node id 取回指定層級的交接筆記。

這使得壓縮不是單向丟失,而是“先引用、後恢復”。

安裝與啓用

下面以 web profile 爲例。

1、安裝插件

執行:

dsh plugin --profile web add flowctx-dsh

2、加入 profile patch 層

編輯:

~/.dsh/profiles/web/cordis.patch.yml

加入:

- insert:
    - id: flowctx-dsh

3、重啓 DSH web

dsh web

4、驗證加載

dsh --profile web --dump-config | grep flowctx

如果配置已加載,命令輸出中應能看到 flowctx 相關配置。

典型用法

取回被投影壓縮的原文

當工具結果被投影壓縮後,可以用:

flowctx_retrieve(hash="…")

按 hash 取回原文。

取回指定層級的交接筆記

flowctx_retrieve 也可以按 node id 取回指定層級的交接筆記。

這適合在長會話中回看早期階段的任務目標、已嘗試方案、失敗路徑或關鍵標識符。

使用 scratchpad 維護工作記憶

開啓 scratchpad 後,可以使用:

  • flowctx_scratch_append
  • flowctx_scratch_replace
  • flowctx_scratch_rethink

維護 <working_memory>。

該能力默認關閉,適合明確希望 agent 主動維護短期工作記憶的場景。

配置與狀態

所有配置項均爲可選。未配置時,flowctx-dsh 的行爲等同於 dsh-compaction-basic,區別主要是摘要風格不同。

默認狀態:

  • 工程師交接筆記摘要:默認開;
  • 分層 DAG 摘要:默認開;
  • 可逆工具結果投影:默認開;
  • 可編輯工作記憶:默認關。

狀態存儲有兩檔:

  • 不設置 stateDir 時,退化爲純內存 + TTL,會話內可恢復;
  • 設置 stateDir 後,壓縮引用、summary nodes 與 scratchpad 共用一個數據庫句柄,落盤到:
<stateDir>/flowctx.sqlite

依賴方面,peerDependencies 指定了:

@deepseek-ai/cordis ^4.0.1

以及多個:

@deepseek-ai/* ^0.1.0-rc.6

依賴。

適用場景與注意

適合以下使用方式:

  • 使用 DSH 做長會話智能體編程;
  • 需要保留失敗路徑和關鍵標識符;
  • 需要把長工具結果壓縮成引用,並在後續按需恢復;
  • 希望歷史摘要分層保留,而不是隻保留一條滾動摘要;
  • 希望按需開啓工作記憶編輯。

需要注意:

  • 插件會以當前 dsh 進程權限運行;
  • 安裝前應檢查源碼、許可證與依賴;
  • 當前版本爲 0.1.0,許可證爲 MIT;
  • DSH 版 SWE-bench 評測正在進行中,結果尚未提供;
  • 完整配置項繼承自 dsh-compaction-basic 的完整列表在已覈實資料中被截斷,本文不展開。

結尾

flowctx-dsh 的價值在於:它把 DSH 的上下文壓縮從“摘要掉歷史”推進到“壓縮、分層、保留、可取回”的工程記憶模型。對於長會話 agent 編程來說,這種可恢復的上下文組織方式,比單純縮短 prompt 更關鍵。

GitHub:https://github.com/Ayou-Claw/flowctx-dsh

目錄頁地址未在已覈實資料中給出。

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

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

小夜