DSH Plugins Marketplace

DSH Plugins

Plugins

/

Sessions & Messages

/

dsh-qoder-cn-subagent

Z

dsh-qoder-cn-subagent

Identified★ 1

Register Qoder CN as a sub-agent backend for DeepSeek Harness: reuse the native login and settings, delegating one task at a time.

DSH Qoder CN Subagent

把 Qoder CN 注册为 DeepSeek Harness 的子智能体后端:复用 Qoder CN 自己的登录与设置,一次委派一个任务。

装好之后,DSH 的模型除了 subagent(本地子智能体)之外,还会多一个 qoder_subagent 工具。调用它,任务会交给本机 Qoder CN 的 agent 循环去跑——它有自己的会话、自己的工具集、自己的账号计费——跑完只把最终答复交回父会话。

它做什么

  • 一个后端,一条委派路径:qoder-cn 是 DSH subagents 服务上的一个外部提供方。父 agent 用 qoder_subagent 把活派出去,拿到的是结果而不是它完整的工具流水。
  • 原生登录:认证走 Qoder CN 官方 SDK 的 qodercli 只读复用,插件不复制、不改写、不迁移 Qoder 的登录文件。
  • 原生设置:默认把 ~/.qoder-cn/settings.json 里的 MCP 服务器转交给子会话,所以你在 Qoder CN 里配好的 MCP 在委派里照样可用。
  • 一次一个任务:外部后端不提供继续输入。子会话跑完即结束,父会话收到的是最终答复。

认证边界(重要)

这里有一条由 Qoder 服务端划定的边界,插件无法绕过,所以直接说明:

登录来源位置能否驱动子智能体
Qoder CN CLI 登录~/.qoder-cn/.auth/user能(官方 SDK 的唯一受支持路径)
Qoder CN IDE/App 登录App 的 state.vscdb不能

IDE 里登录不等于 CLI 里登录。App 保存的是 device token(并且加密存放在 App 自己的库里),而 Qoder CN 的推理接口只接受 CLI 凭据库签发的凭据——拿 App 的 device token 去请求,上游会直接以 access_token_invalid 拒绝。这不是插件偷懒,而是上游的账号模型:两者是不同的凭据类型,不是同一把钥匙的不同副本。

所以启用前,在本机执行一次:

qoderclicn login

登录一次之后,子智能体的每次委派都自动沿用这份登录态,账号切换也会自动跟随。

插件启动时会打印状态,未登录时给出明确警告:

[qoder-cn-subagent] provider "qoder-cn" registered without a Qoder CN CLI sign-in
qoder home: /Users/you/.qoder-cn
app sign-in: yes (your-name)
cli sign-in: no
auth mode: native
settings delegation: on

The subagent runs through the Qoder CN CLI credential store, which is separate from the App sign-in.
Run `qoderclicn login` once (or set accessToken / accessTokenEnv) before delegating.

安装

插件本身不发 npm,按本地包安装:

# 1) 取回源码
git clone https://github.com/Zxznb666/dsh-qoder-cn-subagent.git
cd dsh-qoder-cn-subagent

# 2) 装好官方 SDK(插件已声明依赖,这一步是可选的预装)
npm install

# 3) 装进你要用的 profile(file: 需要绝对路径)
dsh plugin --profile <profile> add "file:$(pwd)"

Desktop 用户注意:官方 Electron 版把 desktop profile 交给 App 独占管理,独立 CLI 的 --profile desktop 会被拒绝,dsh plugin --profile desktop ... 同样不可用。想在 Desktop 里用,走 App 的插件入口安装本地包;Web / TUI / headless 用上面的命令即可。

装完后 --dump-config 能看到这两行,说明 bundle 层已生效:

# == dsh-qoder-cn-subagent
- id: subagent-qoder-cn
  name: dsh-qoder-cn-subagent
- id: tool-subagent-qoder-cn
  name: '@deepseek-ai/dsh-tool-subagent'
  config:
    provider: qoder-cn
    toolName: qoder_subagent
    maxDepth: provider-managed

maxDepth: provider-managed 不是可选项。外部后端没有 depthLimit 能力,父级无法替它执行递归预算,DSH 会因此在启动时直接拒绝这条配置——如实转交比假装能限制更安全。

如果 pnpm 拦下了 SDK 的 postinstall

官方 SDK 的 postinstall 负责下载 Qoder worker runtime(约 60 MB)。pnpm 默认会拦下未批准的构建脚本:

Error: ERR_PNPM_IGNORED_BUILDS
  × adding a new package
  ╰─▶ Ignored build scripts: @qodercn-ai/qodercn-agent-sdk@1.0.55

在 profile 的 pnpm-workspace.yaml 里放行,然后补跑一次:

allowBuilds:
  '@qodercn-ai/qodercn-agent-sdk': true
cd ~/.dsh/profiles/<profile>
pnpm rebuild @qodercn-ai/qodercn-agent-sdk

配置

全部字段都有可用默认值,不配也能跑。

字段默认说明
providerNameqoder-cn提供方注册名,委派工具的 provider 指向它
authModenativenative 只读复用 CLI 登录;token 用 accessToken/accessTokenEnv;auto 有令牌走令牌、否则走 CLI
accessToken空Qoder CN personal access token。不要填 App 的 device token
accessTokenEnvQODERCN_PERSONAL_ACCESS_TOKEN令牌所在环境变量,避免密钥进配置文件
qoderHome空Qoder CN 配置根目录。空表示 $QODERCN_CONFIG_DIR 或 ~/.qoder-cn
delegateSettingstrue把 settings.json 的 MCP 服务器转交给子会话
model空子会话使用的 Qoder CN 模型 id;空表示上游默认
permissionModebypass_permissions子会话的权限模式。子智能体无人值守,需要免提示才能动手
maxTurns120单次委派的轮数上限
sessionPersistencefalse是否把子会话留在磁盘,方便 qoderclicn --list-sessions 事后查看
cwdPolicyparentparent 用委派时的工作目录;fixed 用 cwd
cwd空cwdPolicy: fixed 时使用的工作目录

在 profile 的 cordis.patch.yml 里覆盖:

- id: subagent-qoder-cn
  name: dsh-qoder-cn-subagent
  config:
    authMode: auto
    model: qmodel_latest
    maxTurns: 60
    sessionPersistence: true

它刻意不做的事

  • 不声明做不到的能力。agentOptions / agentPreset / outputSchema / depthLimit 全为 false:Qoder CN 在另一个进程里跑,父级强制的这些启动能力它接不住。声明支持再静默忽略,会让调用方以为限制生效了。
  • 不转发图片。当前只走文本提示;遇到图片块会显式标注「已丢弃」,而不是让模型对着残缺输入瞎猜。
  • 不碰 Qoder 的登录文件。插件只读 settings.json 与 App 的状态快照;authMode: token 也只把令牌用在本次 SDK 调用上。
  • 不复制 IDE 的插件开关。enabledPlugins 属于 IDE 的插件体系,SDK 侧没有对应概念,直接丢弃而不是假装支持。

故障排查

现象原因处理
No qodercli login foundCLI 侧没有登录态qoderclicn login 一次
The provided access token was rejected填了 App 的 device token,或令牌已过期改用 CLI 登录,或换一个真的 personal access token
启动时报 cannot enforce maxDepthpatch 里漏了 maxDepth: provider-managed补上该项
Ignored build scriptspnpm 拦下了 SDK postinstall见上文 allowBuilds
委派一直无响应后报超时Qoder worker runtime 缺失或损坏重跑 pnpm rebuild @qodercn-ai/qodercn-agent-sdk

结构

lib/
  index.js          # 提供方注册与配置 schema
  qoder-cn.js       # 认证选择、设置委派、提示折叠、结果收敛
  host-modules.js   # 从宿主入口解析 @deepseek-ai/* 共享包
test/
  qoder-cn.test.js           # 认证/设置/提示/结果映射
  subagent-provider.test.js  # run 句柄契约与取消语义
cordis.patch.yml    # bundle 层:注册后端 + 委派工具

关于 host-modules.js:profile 里的插件和 DSH 宿主不在同一个 node_modules 树中,宿主以安装级包表提供 @deepseek-ai/*。直接 import '@deepseek-ai/schemastery' 在 profile 里解析不到,必须从宿主入口 createRequire——而且必须这么做,因为 cordis 靠实例身份判定服务,装第二份会出现「注册了却取不到」的问题。

验证

node --test test/qoder-cn.test.js test/subagent-provider.test.js

测试不触网:SDK 被替换成可控的假实现,断言的是「Qoder 返回什么 → DSH 收到什么」的映射,以及取消、幂等、错误收敛这些契约行为。

许可

MIT

Comments

Loading…

From the same category

billion-context

by ranxianglei

基本稳定可用 100K tokens is enough. Universal context-compression proxy for ALL AI coding agents,10w上下文足矣

Sessions & MessagesManifest valid

★ 2.9k

↓ 595.2k/wk

MIT

TypeScript

Oct 26, 2026

dsh plugin --profile web add billion-context

A DeepSeek coding agent harness: persistent shell, Ultra subagents, auto approval, Chrome MCP and session telemetry

Sessions & Messages

★ 1k

MIT

JavaScript

Index only — not installable

by Han-1413141

DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch

Sessions & MessagesManifest valid

★ 534

↓ 26k/wk

MIT

JavaScript

Oct 26, 2026

dsh plugin --profile web add dsh-cost-meter

by Nwflower

Import 14+ external agent chat histories (Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi, Hermes, Kimi CLI, DSH) into DeepSeek Harness as resumable se

Sessions & MessagesManifest valid

★ 253

MIT

JavaScript

Oct 25, 2026

dsh plugin --profile web add dsh-chat-import

by MichengAI

DSH Archive Manager — 在 DeepSeek Harness 中安全查看、恢复和管理已归档会话 · Safely view, restore, and manage archived sessions in DSH

Sessions & MessagesManifest valid

★ 240

↓ 17.2k/wk

Apache-2.0

JavaScript

Oct 26, 2026

dsh plugin --profile web add @michengai/dsh-archive-manager

by Yuuyuko-uu

DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间

Development & InfrastructureMemory & ContextSessions & MessagesManifest valid

★ 210

MIT

JavaScript

Oct 25, 2026

dsh plugin --profile web add dsh-fish-memory