DeepSeek Harness plugin

dsh-powerkit

Community-driven power toolkit for DeepSeek Harness (dsh): live agent-mode switching, granular permission guard, unified rules enforcement, context sentinel, session checkpoints, watchdog, token

Jump to install

Source facts

Repository
hwc66626/dsh-powerkit
Latest update
Aug 18, 2026
Category
Memory
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-21

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/hwc66626/dsh-powerkit
Plugin: dsh-powerkit
Author: hwc66626

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-powerkit

![tests]() ![modules]() ![deps]() ![license]()

dsh-powerkitDeepSeek Harness (dsh) 的全能增强工具箱插件——16 个独立可配置的功能模块,把 AI 编程代理使用中最常被抱怨的问题变成开箱即用的能力。零运行时依赖,Node 内置 test runner 覆盖 125 项测试,MIT 开源。

[English summary](#english-summary) · [安装](#安装) · [功能总览](#功能总览) · [命令手册](#命令手册) · [配置参考](#配置参考) · [架构](#架构) · [质量保障](#质量保障)

---

为什么需要它

AI 编程代理(dsh / Trae / Cursor / Claude Code / Copilot / Gemini CLI 等)存在一批跨工具的共性痛点,社区 issue 区反复出现:

  • 对话进行到一半,想换个模式(比如从自由探索切到严格只读)只能开新会话,上下文全丢
  • 规则文件四分五裂:AGENTS.md / CLAUDE.md / .trae/rules / .cursor/rules,各家只认自家的,长对话还会"忘记"
  • 上下文压缩后丢失关键纠正信息,模型重复犯错
  • 长任务中断后无法从断点恢复,只能从头再来
  • 代理陷入死循环 / 空命令循环,token 烧完才发现
  • token 用量、花费、工具调用记录不透明,事后无法审计
  • 输出风格漂移:同样的提问,一会中文一会英文、一会冗长一会简略

dsh-powerkit 把这些问题的社区验证过的解法,做成 16 个可自由开关的模块装进 dsh。

功能总览(16 模块)

#模块解决什么命令入口
1模式热切换 (modes)对话中途切换 agent 模式(plan/readonly/deep/standard/自定义),下一轮请求立即生效,无需新会话/pk mode <id>
2权限门卫 (guard)glob 规则引擎 + 内置危险命令黑名单,allow/ask/deny 三档,支持纯观察模式/pk guard <tool> [cmd]
3规则强制器 (rules)统一发现并合并 AGENTS.md/CLAUDE.md/.trae/.cursor/.lingma 等全部规则源,按节奏重注入防遗忘/pk rules reload
4上下文哨兵 (sentinel)监控上下文水位(去重后的净占用),warn/critical 分级预警,压缩前自动保留用户纠正摘要自动
5检查点救援 (checkpoints)每轮自动 + 手动检查点,会话中断后生成断点续跑提示词/pk checkpoint /pk rescue
6看门狗 (watchdog)检测卡死(超时无进展)、签名死循环、连续空命令(dsh 已知 bug 场景),自动 steer 纠偏自动
7Token 计量 (meter)去重的 token 统计(修复宿主重复计数),预算告警,周期报告/pk report
8命令路由 (commands)零 token 的斜杠命令系统,/pk 一入口控制全部 16 个模块/pk menu
9提示词模板 (snippets)内置 5 个 + 无限自定义模板,{var} 变量展开,一键发送常用指令/pk snippet <id> [args]
10任务清单 (tasks)持久化任务看板,未完成任务每轮重注入,计划不怕压缩丢失/pk task add/done/list
11成本估算 (cost)按可配置价格表把 token 折算成钱,模型前缀匹配,预算超支提示/pk cost
12模型降级 (fallback)模型请求失败(429/503)自动沿链降级重试,不再手动重发/pk fallback list
13审计日志 (audit)每次工具调用的 JSONL 审计轨迹(工具/命令/判定/来源),事后可查/pk audit [n]
14输出风格 (style)语言/长度/格式三要素契约注入每轮请求,会话级覆盖/pk style set lang=zh
15会话导出 (exporter)一键导出会话全景报告(模式/花费/任务/检查点)为 Markdown/pk export [dir]
16健康自检 (doctor)模块开关/配置校验/宿主能力/磁盘可写一键体检/pk doctor

每个模块都有独立的 enabled 开关——不想要的功能关掉即等同于不存在,全部关闭则插件近乎零开销。

安装

官方接入方式(已在 @deepseek-ai/dsh@0.1.0-rc.7 上实测通过):

# 本地路径安装(开发/自建,最常用)
dsh plugin --profile web add /path/to/dsh-powerkit

# npm 安装(发布后)
dsh plugin --profile web add dsh-powerkit

# GitHub 安装
dsh plugin --profile web add github:<owner>/dsh-powerkit

dsh plugin add 会把包写进 profile($DSH_HOME/profiles/<name>)的依赖与 dsh.profile.bundles,随后正常 dsh web 启动即可。

要求与原理(对齐官方 dsh-client-modules 扫描规则):

  • Node.js ≥ 22.7;客户端 UI 半边必须先构建npm run build 产出

lib/index.js(宿主半)与 lib/client.js(浏览器半)。缺失 client bundle 会让 dsh web 启动直接报 MissingClientBundleError

  • 插件在 package.json 里声明 dsh.client.platform = "web"

exports["./client"],dsh 才会把它收进 window.__DSH_BOOT__ 并在浏览器加载 /plugins/dsh-powerkit/client.js

  • 插件必须以包名注册进 profile(dsh plugin add 即如此);用绝对源码

路径写 cordis.yml 覆盖层时,官方扫描无法解析到 package.json,客户端 UI 不会出现。

快速开始

装好后直接在 dsh 对话里输入:

/pk doctor          # 第一步:体检,看模块开关与宿主能力
/pk menu            # 浏览全部命令
/pk mode plan       # 切到规划模式:只读 + 输出计划
/pk task add 重构权限模块
/pk task add 写集成测试
/pk snippet tests src/permissions.ts   # 一键展开"补测试"模板
/pk style set lang=zh length=concise  # 输出风格:中文 + 精炼
/pk cost            # 看这次会话花了多少钱
/pk export          # 导出会话报告

中途切换模式的实际效果

你: (聊了 40 轮的复杂重构会话)
你: /pk mode readonly
[powerkit] 模式已切换: readonly(下一轮模型请求即生效)。
  覆盖: model=deepseek-v4, maxTokens=8192
  策略: readonly
你: 帮我把这个函数改成 async
模型: 当前处于只读模式,我不会修改文件。改动方案如下:…(输出计划而非动手)

图形控制台(不用记任何命令)

所有 /pk 能做的事,都可以在浏览器里点出来。两种形态,同一份实现:

① dsh web 内嵌面板(官方形态,实测截图见 docs/screenshots/

插件装进 web profile 后,dsh web 界面右缘出现 ⚡ launcher,点击滑出 "Powerkit 控制台";同一页面也能直达 http://<dsh-web>/powerkit/。 挂载走官方 webServer 服务(ctx.plugin({ inject: ['webServer'] }) 的 可选依赖子 fiber,服务就绪后自动挂上),无需独立端口。

② 独立面板(非 dsh 宿主 / 纯 CLI 场景)

# 脱离 dsh 单独跑(同一个面板,同一份配置):
npm run panel
PORT=3000 npm run panel   # 换端口

在 cordis/dsh 组合里检测到 webServer 时不再起独立端口,避免双面板; 只有独立运行时才默认监听 127.0.0.1:17654

控制台上可以直接点击操作:

区域点击可做的事
Agent 模式plan/act/speed/deep… 点按钮即切换,下一轮对话生效
输出风格语言 / 长度 / 格式三组分段选择器,点选即改
任务看板输入回车添加任务,点条目完成,未完成任务自动注入给模型
功能模块16 个模块每个一张卡片开关,点击启用/停用,立即写入运行配置
参数微调成本预算、降级链、权限默认动作(allow/ask/deny)改数字即生效
动作按钮健康体检 / 导出会话报告 / 重载规则文件,一键执行
实时状态当前模式、token 用量、成本、上下文水位、审计流水,2 秒自动刷新

生效机制:面板把改动写入 .dsh-powerkit/ui.json,运行中的 dsh 插件每 2 秒轮询该文件并热合并进运行配置——不需要重启 dsh,不需要重启会话,点完开关下一轮对话就是新行为。就算面板进程和 dsh 进程不在一台机器上,同一份工作目录也能协同。

安全默认:只绑定回环地址(127.0.0.1),不会暴露到局域网;要开放局域网需显式设置 ui.allowLan: true(见下方配置参考)。

命令手册

/pk/powerkit 等价;子命令均有别名。

| 命令 | 作用 | |------|------| | /pk mode [id\|list] | 查看/切换模式,list 列出全部可用模式 | | /pk model <id> | 本会话一次性模型覆盖(不动模式) | | /pk fallback [list] | 查看降级链与累计降级统计 | | /pk style [set k=v] | 查看输出风格;set lang=auto\|zh\|en length=concise\|normal\|detailed format=markdown\|plain | | /pk snippet [list\|<id> 参数] | 列出/展开提示词模板 | | /pk task [add 文本\|done id\|all\|list\|clear] | 任务看板,支持 id/关键词/all 完成任务 | | /pk guard <tool> [command] | 权限引擎试算:这条命令会被 allow/ask 还是 deny,命中哪条规则 | | /pk audit [n] | 最近 n 条(默认 20)工具调用审计 | | /pk checkpoint [list] | 立即创建/列出检查点 | | /pk rescue | 由最近检查点生成断点续跑提示词 | | /pk report /pk cost | token 报告 / 成本估算 | | /pk rules reload | 重载工作区规则文件 | | /pk export [dir] | 导出会话全景 Markdown 报告 | | /pk status | 一屏总览:模式/检查点/任务/token/水位/风格/模块开关 | | /pk doctor | 健康体检 | | /pk menu /pk help | 命令菜单 / 详细帮助 |

配置参考

插件配置位于 dsh 配置的 plugins['dsh-powerkit'] 节。所有字段均有默认值与防御性校验/钳制——写错配置只会回退默认,不会拖垮插件。完整类型定义见 src/config.ts

模块开关与核心项

默认值说明
enabledtrue插件总开关
modes.enabledtrue模式热切换
modes.defaultMode"standard"初始模式 id
modes.presets[]自定义模式(同 id 覆盖内置)
modes.announceSwitchtrue切模式时注入行为指引(false=极简确认省 token)
presets.enabledtrue原生 Agent 预设透传(「博士」等宿主 agentPresets,不代造)
guard.enabledtrue权限门卫
guard.defaultAction"ask"无规则命中时的动作
guard.rules[]glob 规则,最长匹配优先,平局 deny>ask>allow
guard.builtinstrue叠加内置危险命令黑名单
guard.auditOnlyfalse纯观察:只记日志不干预
guard.onDeny"steer"拒绝后动作(steer/cancel/log)
guard.maxAskPerTurn2每轮最多"请确认"注入次数(0-10)
guard.approvalMode"manual"审批模式:manual 逐次确认 / auto 规则放行 / full 全放行
guard.queuetrue挂起调用进待审批队列(面板//pk approval 处理)
rules.enabledtrue规则强制器
rules.searchPaths7 个内置路径规则文件发现列表
rules.injectCadence3每 N 轮重注入(1-50)
rules.maxBytes4096统一规则块上限(256-65536)
rules.extra[]团队级内联规则,永远追加在末尾
sentinel.enabledtrue上下文哨兵
sentinel.contextWindowTokens128000当前模型上下文窗口
sentinel.warnPct75水位告警阈值(10-99)
sentinel.criticalPct90水位危险阈值(≥warnPct)
sentinel.preserveCorrectionstrue压缩前重注入用户纠正
sentinel.digestMaxBytes2048纠正摘要上限
checkpoints.enabledtrue检查点
checkpoints.dir".dsh-powerkit/checkpoints"存储目录
checkpoints.autoEveryTurns5每 N 轮自动落点(1-100)
checkpoints.keep50每会话保留数(3-1000)
checkpoints.includeToolLogtrue检查点带最近工具日志
watchdog.enabledtrue看门狗
watchdog.stuckMs180000卡死判定毫秒数(10s-1h)
watchdog.loopWindow8死循环检测窗口
watchdog.loopThreshold4窗口内同签名重复阈值
watchdog.onStuck"steer"卡死动作(steer/cancel/warn)
watchdog.emptyLoopLimit2连续空命令上限
meter.enabledtrueToken 计量
meter.dedupetrueusage 样本去重
meter.budgetTokens0会话 token 预算(0=不限)
meter.reportEveryTurns1报告节奏(1-100)
snippets.enabledtrue提示词模板
snippets.custom[]自定义模板(同 id 覆盖内置)
tasks.enabledtrue任务清单
tasks.maxActive20未完成任务上限(1-100)
tasks.injecttrue每轮重注入未完成任务
cost.enabledtrue成本估算
cost.pricesDeepSeek 系列默认表每百万 token 价格表(可完全自定义,default 条目兜底)
cost.budgetUsd0会话预算 USD(0=不限)
fallback.enabledtrue模型降级
fallback.chain["deepseek-v4-flash"]降级链(失败后依次尝试,绝不回头循环)
fallback.maxRetries2单次请求最大降级次数(0-5)
audit.enabledtrue审计日志
audit.keep500内存/文件保留条数(50-10000)
style.enabledtrue输出风格
style.language"auto"auto/zh/en
style.length"normal"concise/normal/detailed
style.format"markdown"markdown/plain
style.extra[]自由格式追加指令(≤20 条)
exporter.enabledtrue会话导出
exporter.dir"."报告输出目录
memory.enabledtrue长期记忆模块
memory.globalDir""全局记忆目录(空=宿主数据目录下 .dsh-powerkit
memory.projectDir".dsh-powerkit"项目级记忆目录(相对工作区)
memory.maxEntries100记忆条目上限(5-1000)
memory.maxBytes2048每轮注入记忆块上限(256-16384)
memory.autoCapturetrue自动捕捉"记住:"指令
skills.enabledtrue技能库模块
skills.globalDir""全局技能目录(空=宿主数据目录下 .dsh-powerkit/skills
skills.projectDir".dsh-powerkit"项目技能目录(skills/ 子目录)
skills.maxSkills50技能数上限(1-200)
skills.maxBodyBytes8192单个技能正文上限(256-65536)
skills.topK2命中后最多注入技能数(1-5)
commands.enabledtrue自定义斜杠命令模块
commands.projectDir".dsh-powerkit"命令模板目录(commands/ 子目录)
commands.maxTemplateBytes8192单个模板上限(128-65536)
commands.custom[]配置内联命令(id/template,≤100 条)
docindex.enabledtrue工作区文档索引
docindex.include[]追加索引扩展名(如 [".adoc"],≤60 项)
docindex.maxFiles8000索引文件数上限(100-100000)
docindex.topK5检索返回条数(1-20)
docindex.buildOnStarttrue启动时自动建索引
behavior.enabledtrue跟进行为模块
behavior.presets["explain-first"]启用的行为预设 id(≤10)
behavior.custom[]自定义行为条目(text/once,逐轮注入)
behavior.maxBytes2048行为注入块上限(256-16384)
ui.enabledtrue图形控制台总开关(关闭则不启动面板也不挂载路由)
ui.standalonetrue在 dsh 进程内启动独立面板服务(127.0.0.1:17654
ui.host"0.0.0.0"allowLan=true 时的绑定地址(否则忽略,恒为回环)
ui.port17654面板端口(1-65535)
ui.allowLanfalse显式允许非回环绑定(局域网访问,默认关闭)
logging.level"info"debug/info/warn/error/silent

配置示例

只保留模式热切换(最小 footprint):

{
  "modes": { "enabled": true },
  "guard": { "enabled": false }, "rules": { "enabled": false },
  "sentinel": { "enabled": false }, "checkpoints": { "enabled": false },
  "watchdog": { "enabled": false }, "meter": { "enabled": false },
  "snippets": { "enabled": false }, "tasks": { "enabled": false },
  "cost": { "enabled": false }, "fallback": { "enabled": false },
  "audit": { "enabled": false }, "style": { "enabled": false },
  "exporter": { "enabled": false }
}

团队规范 + 自定义模式 + 价格表:

{
  "modes": {
    "presets": [{
      "id": "release", "name": "发布模式", "toolPolicy": "shell-only",
      "systemPromptSuffix": "发布模式下必须走 CI 流水线,禁止本地 npm publish。"
    }]
  },
  "rules": { "extra": ["所有 shell 命令前先 dry-run", "不允许修改 migrations/ 目录"] },
  "guard": { "rules": [{ "pattern": "shell:npm publish*", "action": "deny", "comment": "发布走 CI" }] },
  "cost": { "prices": { "my-model": { "inputPerM": 0.5, "outputPerM": 2 } }, "budgetUsd": 1 },
  "fallback": { "chain": ["deepseek-v4-flash", "deepseek-chat"] },
  "style": { "language": "zh", "length": "concise" },
  "snippets": { "custom": [{ "id": "pr", "name": "提 PR", "template": "为 {target} 创建 PR:标题、描述、自查清单。" }] }
}

架构

dsh (Cordis kernel)
 └─ dsh-powerkit 插件
     ├─ 事件监听  session/event · agent/pre-step · agent/request · agent/status
     ├─ 模式层    modes ──► agent/request 改写 provider/model/maxTokens/systemPrompt
     ├─ 安全层    guard + audit ──► 工具调用拦截/审计
     ├─ 记忆层    rules + sentinel + tasks ──► context pack 注入
     ├─ 稳定层    checkpoints + watchdog + fallback ──► 救援/纠偏/降级
     ├─ 计量层    meter + cost ──► 去重统计与折算
     ├─ 表现层    style + snippets + exporter ──► 风格/模板/导出
     └─ 命令层    /pk 路由 ──► 零 token 控制 16 模块

设计原则:

  • 绝不向宿主抛异常:所有宿主 API 调用都做特性检测 + try/catch;dsh 处于开发者预览期,宿主 API 变更时自动降级运行
  • Cordis HMR 干净装卸:监听器全部走 ctx.on/ctx.effect,热重载无泄漏(有 20 轮 attach/dispose × 事件风暴的压力测试背书)
  • 持久化全部防御式:JSONL 追加写、损坏文件自动重置、磁盘不可用时静默降级为内存模式

质量保障

npm test        # 125 项单元测试(Node 内置 runner)
npm run check   # 13 项自动化自检底座(结构/清单/秘密/测试/冒烟/tsc/模糊/文档一致性)
npm run smoke   # 敌对宿主冒烟:畸形事件、缺失 API、配置模糊
npm run fuzz    # 对抗性模糊测试
  • 10 轮全面自检记录:见 [SELF_CHECK_REPORT.md](./SELF_CHECK_REPORT.md)——累计发现并修复 9 个真实缺陷(含多行命令安全绕过、null 崩溃、空引擎试算等),每轮可复现
  • 痛点溯源:见 [RESEARCH.md](./RESEARCH.md)——每个模块对应的社区 issue 原始链接
  • tsc 严格模式零错误strict + noUncheckedIndexedAccess
  • 零运行时依赖:npm install 不需要

English summary

dsh-powerkit is an all-in-one community-driven plugin toolkit for DeepSeek Harness (dsh): 16 independently-configurable modules that turn widely-reported pain points of AI coding agents into plug-and-play features — live mid-conversation mode switching, a glob-based permission guard with danger blacklist, unified rules enforcement across AGENTS.md/CLAUDE.md/.trae/.cursor/.lingma, a context sentinel with correction-preserving digests, crash-resilient checkpoints, a stuck/loop watchdog, deduplicated token metering, a zero-token slash command router, prompt snippets, a persistent task board, cost estimation, model fallback chains, JSONL audit trails, output-style contracts, Markdown session export, and a one-command doctor. Zero runtime dependencies, 125 tests on Node's built-in runner, tsc-strict clean, adversarial fuzz + hostile-host smoke suites, 10 documented self-check rounds. MIT.

License

[MIT](./LICENSE) © dsh-powerkit contributors