用 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

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

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

小夜