通过官方 Qoder CLI 以原生 ACP stdio 接入 Qoder 模型(无需逆向模型 API);qoderclicn 中国版已通过真实 ACP 工具链路验证,qodercli 国际版可选但真实推理路径尚未验证。需 Node.js 22.18+,并在同一台机器上安装并登录所选 Qoder CLI;插件不安装 CLI、不管理账户。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/liubaicai/dsh-qoder-link/releases/download/v0.1.11/dsh-qoder-link-0.1.11.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:liubaicai/dsh-qoder-link
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
支持 qodercli 国际版 和 qoderclicn 中国版,通过原生 ACP stdio 接入。两版均直接使用官方 CLI 已保存的登录态,插件不管理账户、不获取或注入令牌;在设置中选择使用哪个区域即可。无需逆向模型 API。
v0.1.2 起仅使用 CLI 本地登录态。升级前请先在 DSH 所在机器完成对应 CLI 登录;旧插件账户不再参与认证。
功能
- 模型提供商
qoder,默认入口qoder/default,支持配置账户可用的模型 ID。 qoder_ask独立委派工具,不发送当前 DSH 历史,不切换当前模型。- DSH 历史、系统提示词和工具结果转为完整上下文;工具调用交回 DSH 校验和执行。
- ACP 初始化、会话创建、提示请求、流式文字和思考、工具状态、取消与进程清理;用量仅在 CLI 返回时报告。
- 进程级 FIFO 并发队列、排队超时、无进展超时与取消;持续产生进展的任务不会因超过固定十分钟被终止。最近调用仅保存运行元数据。
- 参照 CodeBuddy Link 的紧凑设置布局:区域选择、模型启用按钮、默认模型、权限与推理强度、折叠运行记录和高级配置。
- 首次打开设置自动调用所选 CLI 的
--list-models,也可手动刷新;不访问私有模型 API,不凭空生成模型列表。 - 自带预构建
dist、双语插件标题和说明、Qoder logo、Cordis 安装补丁。
1. 安装并登录 CLI
参考 国际版安装 或 中国版安装。通过官方安装器或官方 npm 包安装:
# 国际版
npm install -g @qoder-ai/qodercli
qodercli login
qodercli --version
qodercli --list-models
# 中国版
npm install -g @qodercn-ai/qoderclicn
qoderclicn login
qoderclicn --version
qoderclicn --list-models
新版官方安装器也可能提供 qoder / qodercn 命令。若只安装了新别名,在对应版本的可执行文件路径中填入该命令或完整路径即可。插件不会在国际版和中国版之间自动回退。
两个 CLI 的账户、服务区域和配置独立。请在运行 DSH 的同一台机器、同一操作系统账户下完成所选 CLI 的登录。浏览器登录、令牌续期和账户切换均由官方 CLI 负责;插件不读取或复制 CLI 凭据。
子进程始终清除从宿主继承的 QODER_PERSONAL_ACCESS_TOKEN 和 QODERCN_PERSONAL_ACCESS_TOKEN(含大小写变体),不再注入 PAT,避免意外使用 shell 中的其他身份。请使用 CLI 已保存的登录态,不要把令牌填进路径或模型字段。
2. 安装插件
需要支持第三方模型适配器与 Web 插槽的 DSH,Node.js 22.18 或更高版本。插件不会自动安装 Qoder CLI,请先按上节安装。
从 GitHub 安装
推荐直接使用 Release 安装包地址,固定到已发布版本:
dsh plugin --profile web add "https://github.com/liubaicai/dsh-qoder-link/releases/download/v0.1.11/dsh-qoder-link-0.1.11.tgz"
也可以从 GitHub 仓库的指定标签安装:
dsh plugin --profile web add "github:liubaicai/dsh-qoder-link#v0.1.11"
web 是 DSH 配置名称;如果使用其他 profile,请替换成对应名称。安装后按提示重载插件或重启 DSH,刷新网页,在 设置 → Qoder Link 中选择国际版或中国版,并在终端完成对应 CLI 的登录。
从本地安装包安装
dsh plugin --profile web add /absolute/path/dsh-qoder-link-0.1.11.tgz
Windows 示例:
dsh plugin --profile web add D:\Code\Github\dsh-qoder-link\dsh-qoder-link-0.1.11.tgz
也可在支持本地插件包的 DSH 插件管理界面选择 .tgz。按 DSH 提示重载插件或重启,刷新 Web 页面。
3. 配置并使用
打开 设置 → Qoder Link(也可从插件行的配置入口打开):
- 选择
qodercli国际版或qoderclicn中国版。 - 通常无需填写路径;留空时优先从 DSH 进程的 PATH 查找,再检查所选区域的官方用户安装目录;Windows 同时检查用户全局 npm 目录。即使 DSH 尚未继承安装后的新 PATH,也能发现默认位置的 CLI。自定义安装位置可在高级设置中填写完整路径,路径不是带参数的整条命令,不会跨区域回退。
- 在终端完成对应 CLI 登录,页面不提供账户管理或 PAT 输入。
- 页面自动获取模型候选,也可点击“获取模型列表”。点击模型按钮启用,选择默认模型后保存;
default使用 CLI 自身默认值。区域或路径变更需先保存,再获取对应目录;刷新不会覆盖未保存的模型选择。 - 保存,在 DSH 模型选择器中选择
qoder/default或启用的具体模型。模型候选不保证当前额度或所有模型的调用权限。
插件默认启用,页面不再提供独立启用开关;不使用时请在 DSH 禁用插件。高级设置默认折叠,仅显示当前区域的“自定义 CLI 路径”;切换区域会保留两区各自路径。超时、并发、上下文预算等仍可通过下方底层配置调整,页面保存会保留这些值。
模型发现使用临时工作目录和无 shell 子进程,保留 12 秒超时及输出大小上限;固定诊断区分无法启动、超时、CLI 退出失败、输出超限和格式不兼容,不返回原始 CLI 错误。首次启动较慢时可稍后重试。状态轮询不启动 CLI。模型配置目前仍在两个区域间共享,切换后请重新确认启用项。
运行记录仅保存在当前 DSH 进程内,保留最近 max(5, maxConcurrency) 条(5~16 条),页面与 /qoder runs 使用同一批元数据。每条记录显示调用 ID,方便对应失败和重试;它不是包含 ACP 帧或原始错误的调试日志。
调用采用全局 FIFO 并发队列,不再有账户池或账户租约。区域在入队时固定,切换设置不会把已排队调用转到另一区域;CLI 自身的登录身份由其启动时读取。
命令:
/qoder status
/qoder models
/qoder runs
/qoder help
status 只显示配置,不声称登录有效。思考等级可选 auto / low / medium / high,非 auto 透传 --reasoning-effort;是否支持由所选模型和 CLI 决定,不保证服务端生效。
安全与行为边界
- 模型适配器始终禁用 CLI 内置工具,使用
--tools ""、严格空 MCP 配置、空设置来源和dont_ask权限模式。ACP 是传输方式,不会自动把 DSH 工具注册成 Qoder 原生工具:模型按 JSON 返回请求,插件转换为 DSH 工具块,由 DSH 校验并执行。识别到说明文字混杂工具标记、可恢复的 JSON 语法错误或工具批次超限时,共享最多一次严格 JSON 重新生成机会;不从任意正文或示例中提取工具执行。每个响应硬上限为 32 个工具调用,提示模型优先每批最多 8 个独立调用;超限整批拒绝,重新生成时要求只请求下一步调用,不截断、不部分执行、不在后台保存剩余调用。 qoder_ask默认也禁用 CLI 内置工具。管理员显式配置委派工具后,CLI 内部工具在 DSH 文件沙箱之外执行;仅在可信工作区启用。桥接不提供客户端文件或终端能力,也不会自动批准 ACP 权限请求。- 每次请求启动全新 CLI,以
--acp运行,经 stdin/stdout 交换 JSON-RPC 消息,完成initialize、session/new、session/prompt。不恢复旧 ACP 会话,完整历史由 DSH 管理,不静默截断。CLI 自身可能持久化会话元数据,插件不承诺 CLI 侧零留存。 - CLI 是本地外部进程,不是隔离容器。官方 CLI 版本可能仍读取工作区说明或自身配置;禁用工具/MCP 不等于操作系统级沙箱。工作目录依次采用显式
workspaceRoot、DSH 会话工作区、DSH 进程工作目录;如需固定目录,请配置workspaceRoot。独立委派启用 CLI 工具时必须有明确的配置或会话工作区,不允许回退到进程目录。 - 仅支持文本输入;图片会明确报错。工具可用时先缓冲并校验完整响应,再输出 DSH 工具调用;纯文本可随 CLI 事件输出。
- 上下文窗口为 DSH 侧预算提示,不向 CLI 强制覆盖,也不自动推断账户真实额度。没有伪造的积分查询、登录成功或模型发现接口。
- 子进程 stderr 可能包含敏感信息,错误只显示分类,不回传原始 stderr。诊断不保存提示词、参数、工作路径或凭据。
配置
配置优先级:Web 保存值 > Cordis 插件配置 > 环境变量 > 默认值。保存位置为 $DSH_HOME/plugins/dsh-qoder-link/settings.json,未指定 DSH_HOME 时为 ~/.dsh/plugins/dsh-qoder-link/settings.json。
配置文件损坏或包含无效字段时,插件保留原文件,关闭模型和委派入口,在设置页显示固定诊断并阻止覆盖保存。请修复或备份移走损坏配置后重载插件;不会因显示设置页面而悄悄恢复默认执行权限。
旧版生成的 accounts.json、托管标记及相关文件不再读取、写入或参与认证,也不会自动删除。升级后即使旧文件损坏,仍直接使用 CLI 登录态。确认不再需要旧 PAT 后,请自行妥善清理旧凭据,并在官方平台撤销不再使用的令牌;不要将旧文件提交到仓库。
| 配置 | 环境变量 | 默认值 |
|---|---|---|
cliVariant |
DSH_QODER_CLI_VARIANT |
qodercli |
qodercliBin |
DSH_QODERCLI_BIN |
空,使用 qodercli |
qoderclicnBin |
DSH_QODERCLICN_BIN |
空,使用 qoderclicn |
enabled |
DSH_QODER_ENABLED |
true |
defaultModel |
DSH_QODER_DEFAULT_MODEL |
default |
models |
DSH_QODER_MODELS |
逗号分隔模型 ID |
hiddenModels |
DSH_QODER_HIDDEN_MODELS |
空 |
reasoningEffort |
DSH_QODER_REASONING_EFFORT |
auto |
workspaceRoot |
DSH_QODER_WORKSPACE_ROOT |
当前 DSH 会话工作区 |
permissionMode |
DSH_QODER_MODE |
dont_ask,仅影响委派 |
tools |
DSH_QODER_TOOLS |
空,仅影响委派 |
askTool |
DSH_QODER_ASK_TOOL |
true |
timeoutMs |
DSH_QODER_TIMEOUT_MS |
600000,ACP 无进展超时,不是总运行时限 |
maxConcurrency |
DSH_QODER_MAX_CONCURRENCY |
2,范围 1–16 |
queueTimeoutMs |
DSH_QODER_QUEUE_TIMEOUT_MS |
600000 |
stallWarnMs |
DSH_QODER_STALL_WARN_MS |
90000,0 关闭告警 |
contextWindow |
DSH_QODER_CONTEXT_WINDOW |
128000,仅作预算提示 |
modelContext |
DSH_QODER_MODEL_CONTEXT |
模型 ID 到窗口大小的 JSON 对象 |
maxPromptChars |
DSH_QODER_MAX_PROMPT_CHARS |
1000000 |
开发与打包
npm ci
npm run check
npm test
npm pack
包包含预构建代码,安装时不需要 TypeScript 编译。CI 在 Windows 和 Linux 运行类型检查、自动测试、构建一致性检查和打包;推送 v* 标签时发布 GitHub Release 安装包。
CI 不安装或登录任何官方 CLI。自动测试使用假 CLI 验证双区域选择、ACP 握手、流式更新、权限拒绝、取消、无进展超时、进程清理、模型发现和 Web/UI 契约,不消耗模型额度;这些测试不等于两区域真实服务验证。本机已验证两区域 CLI 均能返回模型目录;中国版完成真实 ACP → DSH ToolRuntime 执行只读探针 → 第二轮 ACP 读取实际工具结果的闭环。可手动运行 node scripts/verify-acp-tools.mjs 复核(需先构建,使用本机所选 CLI 和模型,会消耗模型额度;不注册或执行业务工具)。该探针不是完整 DSH 会话 AgentLoop 测试。国际版此前真实推理无进展超时,尚未通过端到端推理验证。 模型列表成功也不代表推理或工具闭环成功;使用国际版前请在自己的登录态下运行上述只读探针验证。
参考与许可
- dsh-codebuddy-link:DSH 适配器、插件包装、工具响应解析和调度。
- dsh-subagent:Qoder 双版本 CLI、stdin/stream-json 调用方式。
- 国际版 ACP、中国版 ACP、Qoder CLI 参考。
代码使用 MIT 许可,保留上游版权与 NOTICE。Qoder 名称和 logo 属于其权利人;这是社区插件,不是官方产品。logo 使用用户指定的原始图片。
链接
同类插件
Ebony-Vinyl/dsh-our-free-model★ 55971
为 dsh 接入免费模型车道(含 DeepSeek V4.1 Flash、Kimi K3 等),无需登录、注册或填写 API Key,并提供本地 OpenAI 兼容网关、降级路由与用量看板。
dingminhua/dsh-connect-workbuddy★ 993
将本机登录的 WorkBuddy 模型(国内版与国际版)接入 DSH,每次刷新按上游目录读取每个模型的积分倍率,支持逐模型图片输入开关、带自动换号的账号池、手动每日签到,以及卡片与输入框里的只读积分胶囊读数。
Alice-Marx/dsh-model-router★ 603
为 DeepSeek Harness 规划有依赖的工作包,将其分配给已配置的模型 API 或支持的厂商 CLI,并提供费用预览。
V1ki/dsh-plugin-subscriptions★ 546
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 446
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
FishBottle7/opencode2dsh★ 384
将 OpenCode Zen 免费模型接入 DeepSeek Harness,无需 API Key。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。