🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

OpenCode 账号池 1e0cf/dsh-opencode-go-pool

DeepSeek Harness
1e0cf7 天前有提交已提供中文文档扫描:未发现敏感能力

把多个 OpenCode 账号组成池,按对话固定轮换

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 1e0cf/dsh-opencode-go-pool
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:OpenCode Go 密钥池,按会话固定轮换

README

由 DeepSeek 最新模型翻译生成
dsh-opencode-go-pool DeepSeek Harness 插件:一组 OpenCode Go 账号,支持会话固定轮换。 一条模型路由后面挂多个 OpenCode Go 订阅。某个账号无法继续服务时,工作转到下一个账号——切换发生在对话边界,不会在对话中途切换。 为什么按对话切换 OpenCode Go 账号有各自独立的滚动(5h)、每周、每月额度,网关按账号缓存提示词。对话换到另一个账号后,整个前缀要重新读一遍,缓存全部失效:长会话里这部分正是下一次请求的大头开销,而且每次切换都要再付一次。所以按请求轮换是错的粒度。这个池把对话固定在一个账号上,只有该账号确实停止服务时才迁移。 有两点值得知道: - 子代理是子会话。它会解析到所在对话的谱系根,因此共用父级的账号,不会另开一个。 - 快用完的账号(默认 90%)仍然服务固定到它的对话。只有新对话挑账号时才会避开它,因为从那里起步很快就会被迫迁移。 要求 - harness 构建版本要在模型请求上打 sessionAffinity 标记(谱系根),并且 pi-ai 构建版本的 OpenCode 服务商要把它作为 x-opencode-session 发送。缺了它,网关会返回 400 MissingSessionID;而写死请求头会破坏这个插件要保护的缓存。
展开完整文档(README 剩余 1 节)
dsh-opencode-go-pool

DeepSeek Harness 插件:一组 OpenCode Go 账号,支持会话固定轮换。

一条模型路由后面挂多个 OpenCode Go 订阅。某个账号无法继续服务时,工作转到下一个账号——切换发生在对话边界,不会在对话中途切换。

为什么按对话切换

OpenCode Go 账号有各自独立的滚动(5h)、每周、每月额度,网关按账号缓存提示词。对话换到另一个账号后,整个前缀要重新读一遍,缓存全部失效:长会话里这部分正是下一次请求的大头开销,而且每次切换都要再付一次。所以按请求轮换是错的粒度。这个池把对话固定在一个账号上,只有该账号确实停止服务时才迁移。

有两点值得知道:

- 子代理是子会话。它会解析到所在对话的谱系根,因此共用父级的账号,不会另开一个。
- 快用完的账号(默认 90%)仍然服务固定到它的对话。只有新对话挑账号时才会避开它,因为从那里起步很快就会被迫迁移。

要求

- harness 构建版本要在模型请求上打 sessionAffinity 标记(谱系根),并且 pi-ai 构建版本的 OpenCode 服务商要把它作为 x-opencode-session 发送。缺了它,网关会返回 400 MissingSessionID;而写死请求头会破坏这个插件要保护的缓存。
- 在 llm-pi-ai 里腾出 opencode-go 路由:从它的配置 providers 中删掉该条目,否则注册会以 DUPLICATE_ADAPTER 失败,插件一直等待。
- 每个账号的密钥存放在各自的凭据引用下。

配置

- id: opencode-go-pool
name: dsh-opencode-go-pool
config:
policy: threshold
thresholdPercent: 90
keys:
- id: primary
apiKeyEnv: OPENCODE_API_KEY
- id: secondary
apiKeyEnv: OPENCODE_API_KEY_2
orgId: org_... # optional, sent as x-opencode-org-id

| key | default | meaning |
| keys | required | 按优先级排列的账号;id 为 [a-z0-9-],最长 32 |
| policy | sticky | 没有固定的对话如何挑选账号 |
| thresholdPercent | 90 | 已用比例超过该值时,新对话避开此账号 |
| baseUrl | https://opencode.ai/zen/go/v1 | 用量接口根地址 |
| pollIntervalMs | 60000 | 后台用量轮询间隔,至少 5000 |

策略

| 策略 | 新会话从哪个账号开始 |
| sticky | 第一个能提供服务的已配置账号 |
| threshold | 低于阈值且负载最低的账号 |
| round-robin | 对会话 id 做哈希选出的账号,让会话均匀分散 |

所有策略共享同一条不变式:还能提供服务的账号,会继续保留固定到它上面的会话。 策略只决定新会话从哪里开始。

轮换

用量读数由定时器从账号的 usage 端点拉取,所以池子能在会话开始前就知道某个账号已经耗尽。请求失败也会确认这一点:账号在本地被封锁,直到下一次轮询成功;重试的那一步会重新解析固定关系,落到别的账号上。

如果所有账号都耗尽,请求以 QUOTA_EXCEEDED 失败,并列出每个被封锁的账号及其窗口。

状态

可用:策略、池、用量轮询、固定关系存储、适配器、插件接线 —— 77 个单元测试。

已在请求层面验证:每个账号一个适配器,产出的请求带该账号的凭据;x-opencode-session 携带谱系根,原始会话 id 单独传递(docs/verification.md)。

尚未验证:插件在真实 harness 内运行(路由接管、从会话日志读回固定关系、后台轮询),以及真实的会话中途配额失败。没有设置界面。

开发

bun install
bun test # unit tests
bun run gate # lint + format check + type check + tests

Bun 原生提供整套工具链(bun test、bun lint、bun fmt、bun check),所以唯一的依赖就是 Bun 自己的类型包。

| 路径 | 用途 |
| src/policy.ts | 账号是否可用;该由哪个账号提供服务 |
| src/pool.ts | 账号状态、封锁标记、固定关系 |
| src/usage.ts | usage 端点客户端与解析器 |
| src/poller.ts | 后台扫描 |
| src/pins.ts | 存在会话日志里的固定关系 |
| src/adapter.ts | 把一次分发路由到固定账号 |
| src/config.ts | 配置校验 |
| src/index.ts | harness 接线 |

许可证

MIT
预览分享卡片长什么样 ↓1e0cf/dsh-opencode-go-pool
分享 · DeepSeek Harness Hub
1e0cf/dsh-opencode-go-pool

把多个 OpenCode 账号组成池,按对话固定轮换

这是你的仓库?认领条目

回到顶部