DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Agpa Dsh Plugin — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
A

agpa-dsh-plugin

Agpa Dsh Plugin

面向 DeepSeek Harness 的 AGPA(Agent Player Achievements)——提供连接 AGPA 引擎的原生 achievement_* 工具,并根据 dsh 会话事件自动跟踪事件

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:eiainano/agpa-dsh-plugin#762acc1dbcc1b6cdcfe58ee6bb8f63f48fec66e8
README兼容性版本

兼容性与来源证明

Agpa Dsh Plugin 以 agpa-dsh-plugin 发布,当前版本为 0.1.11。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/14

版本

0.1.11stable
2026/9/14

相关插件

正在加载相关插件…

最新版
0.1.11
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/14
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rIm@xmanrui/dsh-im将十一种 IM 渠道和一个公网 AI Office 接入本地 DeepSeek Harness。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理

README

agpa-dsh-plugin

English | 中文

Connects AGPA (Agent Player Achievements) to DeepSeek Harness (dsh) as a Cordis plugin.

Design goal (maximum value per unit of code): the DSH side reimplements no achievement logic. Every achievement_* tool is a thin shell that forwards its arguments verbatim to the published AGPA MCP server (the agpa-mcp bin from @eiainano/agpa). The AGPA engine, achievement definitions, profiles and the ~/.agent-achievements data store are therefore shared across Claude Code, DSH and any other harness — so cross_agent achievements fire automatically.

Layers and files

LayerFilePurpose
Entry (Cordis row)src/index.ts + cordis.patch.ymlname='agpa', the patch id must match
Tool bridgesrc/tools.ts7 native achievement_* tool shells
MCP clientsrc/agpa-bridge.tsZero-runtime-dependency MCP-over-stdio (Node builtins only), lazily spawns one AGPA process
Auto-trackingsrc/events.tsSubscribes to dsh session/event, normalizes into CC-style payloads (source:'dsh')
Ingest subprocesssrc/hook-runner.tsSerially spawns short-lived agpa-hook auto processes, feeds them stdin
Model workflow manualskills/agpa/SKILL.mdTeaches the model when to track / poll / announce unlocks

Directory layout

forDSH/agpa-dsh-plugin/
├─ cordis.patch.yml        # insert row: id=agpa name=agpa-dsh-plugin
├─ package.json            # dsh.bundle.patch → cordis.patch.yml
├─ tsconfig.json           # NodeNext → lib/
├─ src/
│  ├─ index.ts             # export name='agpa'; inject=['tools']; apply()
│  ├─ tools.ts             # 7 × ctx.tools.register(defineTool(...))
│  ├─ agpa-bridge.ts       # minimal MCP client (spawns agpa-mcp)
│  ├─ events.ts            # session/event → CC-style normalization (AutoTrackFeed)
│  └─ hook-runner.ts       # serially spawns `agpa-hook auto` ingest processes
├─ scripts/
│  ├─ install-skills.mjs   # copies skills → $DSH_AGENTS_HOME/skills
│  └─ smoke-bridge.mjs     # on-machine smoke test: reads AGPA stats (read-only)
└─ skills/agpa/SKILL.md    # AGPA workflow manual

Commands

npm install --legacy-peer-deps   # dev dependencies, for typechecking only
npm run typecheck                # typecheck against the real @deepseek-ai/dsh-tools types
npm run build                    # tsc → lib/
npm run smoke:bridge             # on-machine check of bridge ↔ AGPA MCP (read-only stats)
npm run install-skills           # copy skills/agpa → ~/.agents/skills/agpa
npm pack                         # produce agpa-dsh-plugin-<version>.tgz

Installing into dsh

Published to npm as agpa-dsh-plugin.

# 1) add to a profile from the registry (a bundle layer; takes effect after restart)
dsh plugin --profile web add agpa-dsh-plugin

# 2) install the model workflow skill: the package ships skills/agpa, just copy it
#    (when working from a git clone, use: npm run install-skills)
cp -r ~/.dsh/profiles/web/node_modules/agpa-dsh-plugin/skills/agpa ~/.agents/skills/

# 3) after restarting, check offline that the agpa row appears in the composed tree
dsh --profile web --dump-config | grep -A3 agpa

Local development (when editing the source):

npm run build && npm pack                 # prepack runs build automatically
dsh plugin --profile web add ./agpa-dsh-plugin-<version>.tgz

If the row appears but the tools do not, it is a code problem (check the dsh logs); if the row never appears, it is a composition problem (the name did not resolve, or files dropped cordis.patch.yml).

Environment variables

VariablePurpose
AGPA_MCP_CMDOverride the AGPA MCP launch command (space-separated). Defaults to npx -y -p @eiainano/agpa@0.1.10 agpa-mcp. For local development, point it at tsx /path/to/agpa/src/main.ts
AGPA_AUTOTRACK=1Enable automatic event tracking: one agpa-hook auto ingest process per normalized event
AGPA_HOOK_CMDOverride the ingest command (space-separated). Defaults to npx -y -p @eiainano/agpa@0.1.10 agpa-hook auto (works out of the box); for local development point it at tsx /path/to/agpa/src/cli/hook.ts auto
AGPA_DEBUG=1Print AGPA MCP stderr plus every received event type ([agpa][ev]) and normalized payload ([agpa][autotrack])
DSH_AGENTS_HOMETarget skills root for install-skills (defaults to ~/.agents)

The bridge and ingest subprocesses always inject AGPA_TOOL_SOURCE=dsh, so events are tagged with the correct tool source (stored as tool_source:"dsh", coexisting with Claude Code's claude-code in the same store).

Status / roadmap

  • Phase 1 (this repo): 7 tool shells + MCP bridge (verified against the real AGPA engine — returns stats with tool_source=dsh) + SKILL
    • 2026-09-09: verified end-to-end on a real dsh 0.1.2-rc.1: installed into both profiles with dsh plugin --profile web|headless add <tgz>; a real headless task successfully called achievement_stats, and the bridge returned real data from the shared store (75/212, level 6, 10,592 XP).
  • Phase 2 (this repo, 0.1.11 on npm): automatic event tracking, verified end-to-end on a real machine and working out of the box.
    • events.ts subscribes to dsh session/event and normalizes tool/call + tool/result → PostToolUse(Failure), and user/message (source.kind==='user') → UserPromptSubmit, into CC-style payloads (source:'dsh'); each payload spawns one agpa-hook auto ingest process (hook-runner.ts).
    • After a real headless run (Write/Bash), ~/.agent-achievements/profiles/neo/event.log gained rows with tool_source:"dsh" — file.create / file.write / command.run / tool.complete and friends.
    • Key gotcha found on the real machine: tool/result.data has no top-level callId (only tool/call does); the call id needed for the ${turn}:${step}:${callId} correlation key lives at result.data.message.source.callId (mirrored at content[].toolCallId). Event names are always taken from the pinned dsh 0.1.2-rc.1 (session/event also broadcasts noise types such as permission/preset and assistant/chunk, all of which are ignored).
    • AGPA 0.1.10 is published with the agpa-hook bin, so the plugin's default ingest command npx -y -p @eiainano/agpa@0.1.10 agpa-hook auto works out of the box (verified with AGPA_AUTOTRACK=1 alone). For local development you can still point AGPA_HOOK_CMD at a checkout's tsx src/cli/hook.ts auto.
    • The ingest subprocess is spawned detached: a short-lived headless process exiting will not SIGTERM an in-flight ingest (the first run has a cold-cache download and can be slow; detaching guarantees no events are lost — long-lived web sessions were never affected).

Known caveats

  1. dsh cannot start on this machine (fixed 2026-09-09, re-fixed 2026-09-15): the managed Node runtime replaces its versioned prefix on upgrade (versions/22.22.2-2 → versions/22.22.2-3), wiping any globals installed inside it. So dsh and pnpm no longer live in that prefix — they live in the stable ~/.local/share/dsh-runtime. ~/.local/bin/dsh reads the Node version dynamically from ~/.workbuddy/binaries/node/versions/current and puts $DSH_HOME/bin (pnpm) plus that Node's bin on PATH. When installing a global package into such a prefix you must invoke npm explicitly as "$NODE" "$PREFIX/lib/node_modules/npm/bin/npm-cli.js" i -g <pkg> --prefix "$PREFIX", otherwise the npm wrapper's shebang resolves to whatever node is on PATH.
  2. Runtime resolution: an out-of-tree plugin's bare imports of @deepseek-ai/dsh-tools (a value import) and @deepseek-ai/cordis (type-only) are mapped by the dsh host into the in-box tree, and both resolve on 0.1.2-rc.1 (this plugin's defineTool value import is verified by a real run).
  3. DSH is a developer preview: cordis.patch.yml, the dsh field and event names can all change between versions. package.json only declares @deepseek-ai/cordis as a peer (types and closure injection are provided by dsh).
  4. Event names are taken from the pinned version: the types this plugin subscribes to were verified on the pinned 0.1.2-rc.1 (see Phase 2). If dsh is upgraded, check that version's SessionEventMap first — do not copy the master docs.
  5. The tool schemas use JSON-schema-style literals; AGPA does not currently do strict validation of numeric ranges, and the descriptions state the allowed range.
  6. If it will not install into a profile, first confirm that npm pack's files really includes cordis.patch.yml.
npx
  • Phase 3: an optional dsh.client XP/achievement widget, or simply reusing the AGPA dashboard (:3867).