前言¶
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。每輪模型開口前,它會自動做兩件事:
- 召回:
POST /v1/context/prepare,把有界上下文注入本輪,並按不可信歷史證據處理。當前用戶指令、倉庫和系統提示始終優先。 - 捕獲:
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:打印當前scope和baseUrl/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 master。setup 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_continue 且 selection: "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,召回會被跳過,記憶工具也打不到存儲。
使用時注意:
- 兩個進程缺一不可。 Server 和 dsh 分開跑,插件只做 HTTP 客戶端。
- ref 對齊。 官方文檔和插件 README 都要求 Server 與插件使用同一個 Git ref。PowerContext 當前發佈示例釘在
0.0.1/v0.0.1,獨立插件倉庫主分支package.json是0.0.3,混裝可能遇到接口表對不上。 - 召回內容不可信。 注入的是歷史證據,不能壓過當前用戶、倉庫和系統指令。
- 不要存密鑰。 skill 明確禁止把 secrets、credentials 寫入 Memory。
- 寫操作要人點頭。 具名 mutation 會先走 dsh 的一次性確認;審覈通過 / 駁回用
/pc review,不要讓模型自己批。 - 遠程必須鑑權。 默認無認證、只綁本機;對網絡暴露前加 TLS,token 放環境變量。
- 權限與許可證。 插件以當前 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