前言¶
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