订阅聚合器 daybreak33167-commits/dsh-subscriptions
DeepSeek Harness统一管理 Cursor、Factory 与本地代理的订阅模型
27/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add daybreak33167-commits/dsh-subscriptions该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 78 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 55 处,展示前 45 条)
- 读取本地文件index.js:347
for (const name of readdirSync(authDir)) { - 读取本地文件index.js:350
const raw = JSON.parse(readFileSync(join(authDir, name), 'utf8')) - 发起网络请求client/client.js:87
const response = await fetch(path, { headers: { accept: 'application/json' }, ...options }) - 读取本地文件host.js:38
const resolved = existsSync(seed) ? realpathOrSelf(seed) : seed - 读取本地文件host.js:60
if (!existsSync(file) && !file.endsWith('package.json')) continue - 发起网络请求cliproxy/runtime.js:31
const response = await fetch(url, { - 读取本地文件cliproxy/runtime.js:44
for (const name of readdirSync(current)) { - 读取本地文件cliproxy/runtime.js:46
const stats = statSync(full) - 执行外部命令来自配置/变量cliproxy/runtime.js:64
const child = spawn(command, args, { stdio: 'ignore', windowsHide: true }) - 读取本地文件cliproxy/runtime.js:110
return JSON.parse(readFileSync(path, 'utf8')) - 发起网络请求cliproxy/runtime.js:221
const response = await fetch(`${url}/v0/management/config`, { - 读取本地文件cliproxy/runtime.js:261
if (current?.version && current?.exe && existsSync(current.exe)) return current.version - 写入本地文件cliproxy/runtime.js:270
mkdirSync(targetDir, { recursive: true }) - 发起网络请求cliproxy/runtime.js:272
const response = await fetch(url, { - 写入本地文件cliproxy/runtime.js:277
const file = createWriteStream(archive) - 删除本地文件cliproxy/runtime.js:292
rmSync(archive, { force: true }) - 写入本地文件cliproxy/runtime.js:295
writeFileSync(paths.current, `${JSON.stringify({ version, exe }, null, 2)}\n`) - 读取本地文件cliproxy/runtime.js:302
if (!existsSync(conf.binaryPath)) throw new Error(`binaryPath does not exist: ${conf.binaryPath}`) - 读取本地文件cliproxy/runtime.js:308
if (current?.exe && existsSync(current.exe) - 写入本地文件cliproxy/runtime.js:337
writeFileSync(paths.config, renderConfig(desired)) - 写入本地文件cliproxy/runtime.js:339
writeFileSync(paths.configState, `${JSON.stringify({ ...desired, effectivePort: port }, null, 2)}\n`) - 删除本地文件cliproxy/runtime.js:346
rmSync(previous, { force: true }) - 写入本地文件cliproxy/runtime.js:347
renameSync(paths.log, previous) - 执行外部命令来自配置/变量cliproxy/runtime.js:359
const proc = spawn(exe, ['--config', paths.config], { - 删除本地文件cliproxy/runtime.js:519
rmSync(paths.pid, { force: true }) - 发起网络请求cliproxy/management.js:19
const response = await fetch(url, { - 发起网络请求cliproxy/catalog.js:106
const response = await fetch(`${base}/v1/models`, { - 发起网络请求cliproxy/adapter.js:269
response = await fetch(`${base}/v1/chat/completions`, { - 发起网络请求cliproxy/adapter.js:317
response = await fetch(`${base}/v1/responses`, { - 发起网络请求cliproxy/factory-adapter.js:716
return await fetch(url, { - 发起网络请求cliproxy/factory.js:149
const response = await fetch(WORKOS_URL, { - 读取本地文件cliproxy/factory.js:368
const raw = readFileSync(factoryAuthJsonPath(), 'utf8') - 读取本地文件cliproxy/factory.js:382
if (!existsSync(path)) return - 读取本地文件cliproxy/factory.js:383
const existing = JSON.parse(readFileSync(path, 'utf8')) - 写入本地文件cliproxy/factory.js:384
writeFileSync(path, `${JSON.stringify({ - 读取本地文件cliproxy/factory.js:745
cliAuthAvailable: existsSync(factoryAuthJsonPath()), - 发起网络请求cliproxy/web-search-factory.js:149
response = await fetch(endpoint, { - 读取本地文件cliproxy/web-search-router.js:61
const raw = JSON.parse(readFileSync(path, 'utf8')) - 写入本地文件cliproxy/web-search-router.js:74
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件cliproxy/web-search-router.js:75
writeFileSync(path, `${JSON.stringify(preference, null, 2)}\n`, 'utf8') - 执行外部命令固定命令cursor/oauth.js:109
? spawn('rundll32', ['url.dll,FileProtocolHandler', url], { detached: true, stdio: 'ignore' }) - 执行外部命令来自配置/变量cursor/oauth.js:110
: spawn(process.platform === 'darwin' ? 'open' : 'xdg-open', [url], { detached: true, stdio: 'ignore' }) - 发起网络请求cliproxy/web-search-grok.js:109
const response = await fetch(url, { - 写入本地文件cliproxy/web-search-cursor.js:19
mkdirSync(SCRATCH, { recursive: true }) - 写入本地文件cursor/session.js:8
mkdirSync(SCRATCH, { recursive: true })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 统一管理订阅模型
- 驱动Cursor模型
DeepSeek Harness 插件,用官方 SDK 驱动 Cursor 模型
README
由 DeepSeek 最新模型翻译生成dsh-cpa-plus
DeepSeek Harness (DSH) 统一「订阅」插件:把 Cursor、Factory Droid 和 内置托管的 CLIProxyAPI 整合成一套,复用手上的 AI 编码订阅。
- Cursor:内置 @cursor/sdk 适配器(Composer / GPT / Claude / Gemini / Grok / Kimi 等 Cursor 云端模型)。
- Factory Droid:管理 WorkOS / API Key;聊天直连 api.factory.ai(避免 CPA cloak 问题)。
Factory 搜索走 CLI 同款 POST /api/tools/web-search,不经过模型。
Factory Claude / Grok 以及 Cursor 对话仍可在本轮直接调用原生搜索。
其它模型把 DSH web_search 回退到设置里选的搜索后端。模型以 factory- 别名单独分组。
- CLIProxyAPI(插件内置,默认托管):插件自动下载并启动本地 CPA,用于 Claude Code、Codex、 Antigravity、Kimi Code、Grok Build 等订阅;不需要你另开一个外部代理进程。
展开完整文档(README 剩余 1 节)
dsh-cpa-plus DeepSeek Harness (DSH) 统一「订阅」插件:把 Cursor、Factory Droid 和 内置托管的 CLIProxyAPI 整合成一套,复用手上的 AI 编码订阅。 - Cursor:内置 @cursor/sdk 适配器(Composer / GPT / Claude / Gemini / Grok / Kimi 等 Cursor 云端模型)。 - Factory Droid:管理 WorkOS / API Key;聊天直连 api.factory.ai(避免 CPA cloak 问题)。 Factory 搜索走 CLI 同款 POST /api/tools/web-search,不经过模型。 Factory Claude / Grok 以及 Cursor 对话仍可在本轮直接调用原生搜索。 其它模型把 DSH web_search 回退到设置里选的搜索后端。模型以 factory- 别名单独分组。 - CLIProxyAPI(插件内置,默认托管):插件自动下载并启动本地 CPA,用于 Claude Code、Codex、 Antigravity、Kimi Code、Grok Build 等订阅;不需要你另开一个外部代理进程。 所有模型都会出现在 DSH 的模型选择器里;登录管理集中在 设置 → 订阅 面板(或独立页面 /subscriptions)。 安装 git clone https://github.com/daybreak33167-commits/dsh-cpa-plus.git dsh plugin --profile web add link:/绝对路径/dsh-cpa-plus 然后在 profile 的 package.json(~/.dsh/profiles/web/package.json)的 dsh.profile.bundles 里加入 "dsh-cpa-plus",重启 dsh web 即可。 首次启动(cliproxy.mode: managed)时插件会: 1. 从 GitHub Releases 下载 CLIProxyAPI 到 ~/.dsh/cliproxy/bin/; 2. 生成 ~/.dsh/cliproxy/config.yaml(只监听 127.0.0.1); 3. 把管理密钥 / 代理 API Key 写入 DSH 凭据; 4. 启动代理并做健康检查,随 DSH 退出一并停止。 若暂时不需要 Claude Code / Codex 等 CPA 渠道,可在配置里设 cliproxy.mode: off (Cursor + Factory 仍可用)。 登录 三种方式任选: | 方式 | 说明 | | 设置 → 订阅 | 供应商页签(带账号数),页签内是账号列表:登录 / 添加账号 / 停用 / 退出 | | /subscriptions | 同功能的独立页面(仅本机回环可访问) | | 斜杠命令 | /login(Cursor)、/login claude、/login codex、/login antigravity、/login kimi、/login grok、/login factory、/login status、/logout | OAuth 流程全部由 CLIProxyAPI 完成(浏览器授权、token 刷新、多账号轮询);DSH 侧只保存代理的管理密钥,订阅 token 存放在 ~/.dsh/cliproxy/auth/,不会下发到浏览器。 Kimi 和 Grok 是设备码流程:命令/面板会显示 XXXX-XXXX 设备码,在弹出的页面里输入即可。 Factory Droid 没有公开的浏览器 OAuth,三种添加方式: - 从 droid CLI 导入:本机运行过 droid 并登录后,面板会出现一键导入按钮(读取 ~/.factory/auth.json,之后 token 由插件每 6 小时自动刷新并回写,droid CLI 保持可用); - 粘贴 refresh token:把任意机器 ~/.factory/auth.json 里的 refresh_token 粘贴到面板,或 /login factory ; - 粘贴 API Key:Factory 平台签发的固定 Key,/login factory key 。 提供商与模型分组 | DSH 提供商 id | 订阅 | OAuth 来源 | | cursor | Cursor | 插件内置(@cursor/sdk) | | claude-code | Claude Pro/Max(Claude Code) | CLIProxyAPI 内置 | | codex | ChatGPT Plus/Pro(Codex) | CLIProxyAPI 内置 | | antigravity | Antigravity | CLIProxyAPI 内置 | | kimi-code | Kimi Code | CLIProxyAPI 内置(设备码) | | grok-build | Grok Build | CLIProxyAPI 内置(设备码) | | factory | Factory Droid(factory.ai) | 插件管理账号;聊天直连 Factory;搜索走 /api/tools/web-search | | gemini-cli / qwen-code / iflow | Gemini CLI / Qwen / iFlow | 需要先在 CLIProxyAPI 插件商店安装对应插件(v7 起这些渠道走 CPA 插件) | | cliproxy | 其它(openai-compatibility 透传、CPA 插件渠道等) | — | 模型按前缀自动归入以上家族(claude- → claude-code、gpt-/codex- → codex、 gemini- → gemini-cli、kimi- → kimi-code、grok-* → grok-build……),未识别的进 cliproxy。登录成功后约 1 分钟内模型列表自动刷新。 Factory Droid 的模型走 factory- 前缀别名(如 factory-claude-opus-4-6、factory-gpt-5.3-codex、(factory-kimi-k3),与真正的 Claude Code / Codex 账号互不混淆:Claude 系走 Factory Anthropic Messages、GPT 系走 Responses、Core(Kimi/GLM 等)走 chat-completions;账号由插件本地管理。 配置(设置 → 插件 → subscriptions) cursor: apiKeyEnv: CURSOR_API_KEY # DSH 凭据名;/login cursor 成功后自动写入 models: [] # 可选:手工裁剪 Cursor 模型列表 cliproxy: mode: managed # managed=托管;external=连接已有实例 port: 8317 # 托管模式期望端口(被占用/保留时自动换) externalUrl: "" # external 模式的地址 binaryPath: "" # 自备二进制路径(跳过下载) version: latest # 固定版本号可写如 7.2.131 managementKeyEnv: CLIPROXY_MANAGEMENT_KEY apiKeyEnv: CLIPROXY_API_KEY external 模式下需要自己把 DSH 凭据 CLIPROXY_MANAGEMENT_KEY / CLIPROXY_API_KEY 设置成目标实例的管理密钥和 API Key。 能力说明 - 流式输出、reasoning(reasoning_content → DSH 思考块;Codex 系列可选 minimal→xhigh 推理力度)。 - 工具调用:DSH 工具映射为 OpenAI function calling;Cursor 路线用自定义工具桥。 - 图片输入:DSH 附件自动转 base64(Cursor SDK images / OpenAI image_url)。 - 多账号:所有提供商(含 Cursor)都支持多账号轮询——CLIProxyAPI 渠道由代理负载均衡; Cursor 由插件按新会话轮询、鉴权失败自动冷却 5 分钟换号(账号列表存 DSH 凭据 CURSOR_ACCOUNTS)。 面板里可单独停用/退出账号;/logout cursor 退出单个 Cursor 账号。 - Factory Droid:账号存 DSH 凭据 FACTORY_ACCOUNTS(refresh token 每 6 小时自动刷新、轮换后即时持久化),请求自动携带 Droid 身份系统提示;/logout factory 退出单个账号。 数据位置 ~/.dsh/cliproxy/ bin//cli-proxy-api(.exe) 二进制 config.yaml 生成的代理配置(127.0.0.1) auth/ 各订阅的 OAuth token logs/cliproxy.log 代理日志 风险提示 把 Claude / ChatGPT 等订阅的 OAuth 暴露给第三方客户端使用,可能违反相应服务条款(尤其是 Anthropic 对非官方客户端的限制),账号风险自负。本插件仅做本地转接,不上传任何凭据。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
daybreak33167-commits/dsh-subscriptions
统一管理 Cursor、Factory 与本地代理的订阅模型
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1