用 powercontext-dsh 給 DeepSeek Harness 接上 PowerContext 記憶服務

前言

DeepSeek Harness(以下簡稱 dsh)把智能體運行時拆成插件:工具、技能、界面、記憶都可以外掛。官方倉庫的口號是「Everything is a Plugin」。這套架構很靈活,但也把一個老問題攤開了——會話一結束,決策、約束、當前狀態和下一步往往跟着聊天記錄一起丟掉。下一輪還想接着幹,只能靠人把上下文再講一遍,或者把提示詞越寫越長。

OceanBase 的 PowerContext(PowerMem 2.0)把這類「項目級、可跨會話恢復」的上下文放到獨立 Server 裏:本地進程、SQLite 存儲、HTTP 接口。dsh 這邊要做的不是再實現一套記憶庫,而是用一層薄適配把它接進來。powercontext-dsh 就是這層適配。本文按社區目錄頁、插件倉庫 README / package.json,以及 PowerContext、DeepSeek Harness 官方倉庫覈對後整理:它是什麼、能做什麼、怎麼裝、怎麼用。

社區插件目錄(deepseek-harness-plugin.com)是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。

這是什麼

powercontext-dsh 是一款記憶類插件,由 knqiufan 維護,許可證 Apache-2.0,主要語言 TypeScript。GitHub 倉庫是 knqiufan/powercontext-dsh,倉庫創建於 2026-08-13;截至本文覈對,GitHub 顯示 11 星,目錄頁當時仍顯示 9 星。package.json 裏的版本號是 0.0.3,要求 Node.js >= 20

一句話定位:它通過 HTTP 連接一臺已經在跑的 PowerContext Server,給 dsh 提供召回、記憶、交接、經驗與技能。倉庫 README 寫得很明確:本倉庫不嵌入存儲、不啓動 Server,也不 import Python 包。調用走 Server 的 /v1/... OpenAPI,不走 MCP

同一套插件也放在 PowerContext 官方倉庫的 integrations/dsh/plugins/powercontext。獨立倉庫繼續當發佈通道,兩邊會同步修復。裝的時候要注意:Server 和插件應使用同一個 Git ref,不要一邊釘死 v0.0.1、一邊追 master

核心功能

插件跑在 Harness 進程裏,瀏覽器不直連 PowerContext。每輪模型開口前,它會自動做兩件事:

  1. 召回POST /v1/context/prepare,把有界上下文注入本輪,並按不可信歷史證據處理。當前用戶指令、倉庫和系統提示始終優先。
  2. 捕獲POST /v1/sources/content,把當前用戶輸入存成 Content Source。Server 的 Source 窗口再決定要不要據此生成或更新 Memory。不要爲了「把這句話再存一遍」去調 pc_remember

Server 不可達時跳過召回,不阻斷當前對話。

模型可調用的 pc_* 工具

具名工具只暴露 Agent 能安全使用的那一部分。寫操作會先向用戶做一次確認。審覈變更仍走人類命令 /pc review;破壞性和管理類 OpenAPI 不會註冊成模型工具。插件同時註冊 skill project-context,把同一套工作流寫給模型看。

能力 工具 HTTP
記憶 pc_search pc_remember pc_memory_list pc_memory_get pc_memory_revise pc_memory_retire /v1/memory/*
上下文 pc_prepare_context pc_capture_source /v1/context/prepare/v1/sources/content
交接 pc_handoff_activate pc_handoff_prepare pc_handoff_finalize pc_handoff_commit pc_handoff_continue /v1/handoff/*
經驗 / 技能 pc_experience_generate pc_experience_get pc_skill_generate pc_skill_get /v1/experience/*/v1/skill/*
審覈(只讀) pc_review_list pc_review_get /v1/artifact-candidates/*

完整契約見倉庫裏的 openapi/powercontext.yaml

對話裏的 /pc 命令

源碼把命令註冊爲 pc,可在對話中直接輸入。倉庫 README 強調用 /pc doctor 檢查 Server 是否可達;實現裏還有檢索、寫入、審覈和診斷:

  • /pc:打印當前 scopebaseUrl
  • /pc doctor:打 Server 的 liveness / readiness
  • /pc search <query>:按 mode: auto、最多 8 條檢索記憶
  • /pc remember <text>:顯式寫入一條 agent-note
  • /pc flush:立刻 flush
  • /pc review / approve / reject:列出或處理 artifact candidate
  • /pc skills scan:掃描外部技能
  • /pc stats/pc capabilities:統計與能力探測

skill 正文還約定:沒有用戶明確要求,不要用 pc_remember 去複製當前提示詞;修訂或退役記憶前要先讀條目、帶上精確 citation;出現 409 衝突時刷新 head,只在用戶請求仍然成立時重試一次。

安裝與啓用

先裝好 DeepSeek Harness。官方倉庫當前仍是 developer preview,可用:

npx @deepseek-ai/dsh web

默認 Web UI 在 http://127.0.0.1:3080。插件 README 要求先有 web profile:執行一次 dsh web 即可。

1、安裝並啓動 PowerContext Server

插件本身不起 Server。PowerContext 官方 README 當前給出的安裝寫法是釘版本:

uv tool install "powercontext[cli,server]==0.0.1"
powercontext --version

powercontext-dsh 倉庫 README 則示例從 git master 安裝:

uv tool install "powercontext[cli,server] @ git+https://github.com/oceanbase/powercontext.git@master"
powercontext --version

兩條都能裝上 CLI 和 Server。選哪條都可以,但後面裝插件時要把 ref 對齊。啓動:

powercontext server run

默認監聽 http://127.0.0.1:8000,無認證,數據在用戶目錄下的 SQLite(可用 POWERCONTEXT_HOME 覆蓋)。健康檢查:

curl http://127.0.0.1:8000/health/live
curl http://127.0.0.1:8000/health/ready

live 必須成功。ready 在未配置推理模型時可以爲 degraded。顯式寫入 Memory 不需要模型。

2、按社區目錄安裝插件

目錄頁原文命令如下,在 DeepSeek Harness 終端運行即可:

dsh plugin add github:knqiufan/powercontext-dsh

倉庫 README 更具體地寫成往 web profile 里加:

dsh plugin --profile web add github:knqiufan/powercontext-dsh

目錄頁也提示:如需可復現安裝,請固定 commit 哈希:

dsh plugin add github:knqiufan/powercontext-dsh#<commit>

獨立倉庫仍可作爲發佈通道。README 示例用 GitHub Release 的 tarball(當前文檔寫的是 0.0.3):

dsh plugin --profile web add ./powercontext-dsh-0.0.3.tgz

若之前是用源碼目錄裝的,先卸載再裝 tarball。Windows 上把 link: 安裝直接換成 tarball 會失敗:pnpm 會去重建嵌套 node_modules 的 symlink。

3、用官方 CLI 對齊 Server 與插件的 ref

PowerContext 官方 README 推薦用同一 release tag 配置宿主插件,例如:

powercontext setup dsh --source oceanbase/powercontext --ref v0.0.1

powercontext-dsh README 的對應示例是 --ref mastersetup dsh 內部會執行 dsh plugin --profile web add,指向官方倉庫裏的 integrations/dsh/plugins/powercontext。本地 checkout 同樣可以:

powercontext setup dsh --source /path/to/powercontext

沒有這條 CLI 時,也可以自己加目錄:

dsh plugin --profile web add /path/to/powercontext/integrations/dsh/plugins/powercontext

可選確認:

powercontext doctor
powercontext doctor dsh
dsh --profile web --dump-config

doctor 檢查 Server。doctor dsh 檢查 dsh 是否在 PATH 上,以及插件 id 是否爲 powercontext-dsh。卸載:

dsh plugin --profile web remove powercontext-dsh

典型用法

保持 Server 運行,然後:

dsh web

像平時使用 Agent 一樣打開項目、開始對話即可。插件會在後臺自動召回上下文、保存用戶輸入;需要讀寫記憶、交接任務或生成經驗 / 技能時,模型會調用對應的 pc_* 工具。對話中可輸入 /pc doctor 確認 Server 可達。

需要人手動落一條記憶時:

/pc remember 本倉庫發佈流程固定用 GitHub Release 打 tarball,不要直接 npm publish 未構建的源碼。

檢索:

/pc search 發佈流程 tarball

交接(skill project-context 裏的步驟)大致是:先用 pc_capture_source 寫清目標、已覈實進度、阻塞和下一步,再 pc_handoff_activate → 檢查 Draft → pc_handoff_finalize;接收方用 pc_handoff_continueselection: "prepared"。只有用戶明確要求留下里程碑時才調用 pc_handoff_commit

配置

環境變量優先於 patch。密鑰不要寫進會被 --dump-config 打印的文件。

字段 環境變量 默認 含義
baseUrl POWERCONTEXT_DSH_BASE_URL http://127.0.0.1:8000 Server 根 URL,無尾斜槓
authorization POWERCONTEXT_DSH_AUTHORIZATION 完整 Bearer
scopeId POWERCONTEXT_DSH_SCOPE_ID 覆蓋自動推導的項目 scope
timeoutMs 4000 召回 + 捕獲的共享預算
requestTimeoutMs 1000 單次 HTTP 超時
maxBytes 8000 prepare_context 預算
capturePrompts POWERCONTEXT_DSH_CAPTURE_PROMPTS true 把用戶輸入存成 Source
flushOnCapture POWERCONTEXT_DSH_FLUSH_ON_CAPTURE false 捕獲後立刻 flush

長期非密鑰默認可寫在 ~/.dsh/profiles/web/cordis.patch.yml。Harness 會整份替換該插件的 config,需要保留的項要一起寫上:

- id: powercontext-dsh
  config:
    baseUrl: https://pc.example.com
    timeoutMs: 4000
    requestTimeoutMs: 1000
    maxBytes: 8000
    capturePrompts: true
    flushOnCapture: false

插件自帶的 cordis.patch.yml 默認 baseUrl 就是 http://127.0.0.1:8000

遠程 Server

默認 Server 只綁 127.0.0.1。若要給另一臺機器用,需要擴大監聽範圍並開啓鑑權;對網絡暴露前應在前面加 TLS。插件 README 給出的示例是:

export POWERCONTEXT_SERVER_HTTP_HOST=0.0.0.0
export POWERCONTEXT_SERVER_HTTP_PORT=8000
export POWERCONTEXT_SERVER_AUTH_ENABLED=true
export POWERCONTEXT_SERVER_AUTH_TOKEN=<long-random-secret>
powercontext server run

客戶端側:

export POWERCONTEXT_DSH_BASE_URL=https://pc.example.com
export POWERCONTEXT_DSH_AUTHORIZATION="Bearer <long-random-secret>"
dsh web

POWERCONTEXT_DSH_AUTHORIZATION 必須是完整的 Bearer,與 Server 的 POWERCONTEXT_SERVER_AUTH_TOKEN 對應。token 只用環境變量,不要寫進 patch 文件。對外公佈的地址應是實際訪問的根,不要帶尾斜槓,也不要帶 /mcp

適用場景與注意事項

適合已經在用 dsh Web、又希望項目記憶獨立於單次會話的人:跨會話恢復決策和當前狀態、把工作交接給另一個任務或模型、把經驗 / 技能沉澱回 Server。它不適合「只裝一個插件、不跑任何後端」的用法——沒有 PowerContext Server,召回會被跳過,記憶工具也打不到存儲。

使用時注意:

  1. 兩個進程缺一不可。 Server 和 dsh 分開跑,插件只做 HTTP 客戶端。
  2. ref 對齊。 官方文檔和插件 README 都要求 Server 與插件使用同一個 Git ref。PowerContext 當前發佈示例釘在 0.0.1 / v0.0.1,獨立插件倉庫主分支 package.json0.0.3,混裝可能遇到接口表對不上。
  3. 召回內容不可信。 注入的是歷史證據,不能壓過當前用戶、倉庫和系統指令。
  4. 不要存密鑰。 skill 明確禁止把 secrets、credentials 寫入 Memory。
  5. 寫操作要人點頭。 具名 mutation 會先走 dsh 的一次性確認;審覈通過 / 駁回用 /pc review,不要讓模型自己批。
  6. 遠程必須鑑權。 默認無認證、只綁本機;對網絡暴露前加 TLS,token 放環境變量。
  7. 權限與許可證。 插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證;如需可復現安裝,請固定 commit 哈希。本插件是 Apache-2.0,dsh 本身是 MIT。

小結

powercontext-dsh 沒有在 dsh 進程裏再造一套記憶庫,而是把 PowerContext Server 的召回、記憶、交接、經驗與技能,用 OpenAPI 接到 Cordis 插件樹上。裝好 Server、對齊 ref、再按目錄頁命令掛上插件,日常對話就會自動召回和捕獲;需要顯式寫入或交接時,用 pc_* 工具和 /pc 命令即可。

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

GitHub:https://github.com/knqiufan/powercontext-dsh

PowerContext 官方倉庫:https://github.com/oceanbase/powercontext

DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness

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

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

小夜