powercontext-dsh

11Star1Fork0Issue0Watching
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
Apache-2.0
分支
main
deepseek-harnessdsh-plugin

安装

$ dsh plugin --profile web add --allow-build=powercontext-dsh github:knqiufan/powercontext-dsh

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 knqiufan/powercontext-dsh:先查看仓库 https://github.com/knqiufan/powercontext-dsh 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

English | 中文

DeepSeek Harness plugin that connects to a running PowerContext Server over HTTP for recall, memory, handoff, experience, and skills. It does not embed storage, start the Server, or import the Python package.

The same plugin is also integrated into official PowerContext at integrations/dsh/plugins/powercontext. This standalone repository and the in-tree plugin stay in sync: fixes and improvements land in both places.

dsh plugin --profile web add <path-or-tarball>

Features

The plugin calls the Server’s /v1/... OpenAPI surface over HTTP. It does not use MCP.

Before each model step it automatically:

  1. Recalls bounded context with POST /v1/context/prepare and injects it as untrusted historical evidence.
  2. Captures the current user input as a Content Source with POST /v1/sources/content.

Named pc_* tools expose the agent-safe Memory, handoff, experience, skill, and read-only review operations. DSH requests one-time user approval before named mutations run. Review mutations remain explicit human /pc review commands; destructive and administrative OpenAPI operations are not model tools. Skill project-context documents the same workflow for the model. If the Server is unreachable, recall is skipped and the turn continues.

AreaToolsHTTP
Memorypc_search pc_remember pc_memory_list pc_memory_get pc_memory_revise pc_memory_retire/v1/memory/*
Contextpc_prepare_context pc_capture_source/v1/context/prepare, /v1/sources/content
Handoffpc_handoff_activate pc_handoff_prepare pc_handoff_finalize pc_handoff_commit pc_handoff_continue/v1/handoff/*
Experience / Skillpc_experience_generate pc_experience_get pc_skill_generate pc_skill_get/v1/experience/*, /v1/skill/*
Reviewpc_review_list pc_review_get/v1/artifact-candidates/*

See openapi/powercontext.yaml for the full contract.

Quick start

PowerContext Server and DeepSeek Harness are two processes. Both are required. Use the same Git ref for the Server and the plugin.

Install the Server

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

From a PowerContext checkout you can use uv run powercontext server run instead.

Install the plugin

Install DeepSeek Harness first and make sure the web profile exists (run dsh web once). From a PowerContext checkout the plugin lives at integrations/dsh/plugins/powercontext. Prefer the CLI so the ref stays aligned:

powercontext setup dsh --source oceanbase/powercontext --ref master

A local checkout works the same way:

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

setup dsh calls dsh plugin --profile web add on that plugin directory. If the CLI is not available yet, add the directory yourself:

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

This standalone repository remains a release channel. A GitHub Release tarball still works:

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

If the plugin is already installed from a source checkout, remove it first. On Windows, replacing a link: install with a tarball fails because pnpm tries to recreate nested node_modules symlinks.

Rebuild after TypeScript changes: pnpm install, pnpm test, pnpm build, then restart dsh web.

Optional check:

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

doctor checks the Server. doctor dsh checks that the dsh CLI is on PATH and the plugin id is powercontext-dsh.

Remove the plugin:

dsh plugin --profile web remove powercontext-dsh

Start the Server

powercontext server run

Defaults: http://127.0.0.1:8000, no authentication, SQLite under the user data directory (POWERCONTEXT_HOME overrides it).

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

live must succeed. ready may be degraded when inference is not configured. Explicit Memory writes do not need a model.

Use it

Keep the Server running, then:

dsh web

Open a project and chat as you normally would. The plugin recalls context and stores user input in the background. When the model needs to read or write memory, hand off work, or generate experience / skills, it calls the corresponding pc_* tools.

You can type /pc doctor in the chat to check that the Server is reachable.

Configuration

Environment variables override patch config. Do not put secrets in files that --dump-config can print.

FieldEnvironment variableDefaultMeaning
baseUrlPOWERCONTEXT_DSH_BASE_URLhttp://127.0.0.1:8000Server root URL, no trailing slash
authorizationPOWERCONTEXT_DSH_AUTHORIZATIONemptyFull Bearer <token>
scopeIdPOWERCONTEXT_DSH_SCOPE_IDemptyOverrides automatic project scope
timeoutMs4000Shared recall + capture budget
requestTimeoutMs1000Single HTTP timeout
maxBytes8000prepare_context budget
capturePromptsPOWERCONTEXT_DSH_CAPTURE_PROMPTStruePersist user input as a Source
flushOnCapturePOWERCONTEXT_DSH_FLUSH_ON_CAPTUREfalseFlush immediately after capture

For durable non-secret defaults, edit ~/.dsh/profiles/web/cordis.patch.yml. Harness replaces the whole config object for that row, so restate every key you still need:

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

Remote Server

The plugin runs inside the Harness process. The browser never calls PowerContext. The default Server bind is 127.0.0.1. A remote Server must listen more widely and enable auth. Put TLS in front before exposing it on a network.

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

Publish the API root users actually use, for example https://pc.example.com. No trailing slash, and no /mcp.

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

POWERCONTEXT_DSH_AUTHORIZATION must be the full Bearer <token> and must match POWERCONTEXT_SERVER_AUTH_TOKEN. Keep the token in the environment variable, not in the patch file.

Common Server variables:

VariableMeaning
POWERCONTEXT_SERVER_HTTP_HOST / _PORTListen address
POWERCONTEXT_SERVER_AUTH_ENABLED / _TOKENStatic Bearer
POWERCONTEXT_HOMEData directory
POWERCONTEXT_SERVER_RUNTIME_SCHEDULE_SECONDSExtraction interval; unset disables the job
POWERCONTEXT_SERVER_INFERENCE_GENERATION_MODELGeneration model used for extraction

Development

HTTP operations are generated from PowerContext's openapi/powercontext.yaml. Point POWERCONTEXT_ROOT or POWERCONTEXT_OPENAPI at a checkout, then run pnpm gen. pnpm gen:check fails when src/operations.generated.ts has drifted.

pnpm install
pnpm gen:check
pnpm test
pnpm test:e2e
pnpm build

pnpm test:e2e starts a local Server from POWERCONTEXT_ROOT and calls liveness, readiness, remember, search, prepare, and capture. It does not start DeepSeek Harness and does not need a model.

  • Push to main / master: run pnpm test and pnpm build, and check that lib/ plus the generated table are committed.
  • Pull requests: pnpm test and pnpm gen:check.
  • GitHub Release is manual: Actions → Release → Run workflow → version such as 0.1.0. The asset is powercontext-dsh-X.Y.Z.tgz.

License

Apache License 2.0

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/knqiufan/powercontext-dsh)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录