sandbase-harness
sandbaseai
Local-first, self-hosted AI agent runtime and MCP bridge with sandboxed sessions, memory, credentials, audit/replay, and a local Console.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:GeekRicardo/dsh-balance
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness web 插件:在输入框下方状态栏展示当前供应商的余额/用量,按 provider 实时切换(2 秒轮询),余额/用量 5 分钟缓存。
| provider | 供应商 | 展示内容 | 密钥 | 接口 |
|---|---|---|---|---|
deepseek / deepseek-official / deepseek-vision |
DeepSeek 官方(含 dsh-vision-router 的“DeepSeek+视觉” wrapper) | ● 本会话 ¥X.XX · ● 余额 ¥465.46 |
DEEPSEEK_API_KEY |
GET api.deepseek.com/user/balance |
kimi-coding |
Kimi For Coding | 5小时 3% 4h15m · 7天 31% 6d0h · 5分钟前 |
KIMI_CODING_API_KEY(兼容 KIMI_CODE_API_KEY/KIMI_API_KEY) |
GET api.kimi.com/coding/v1/usages |
opencode-go |
OpenCode Go | 5小时 8% 3h · 7天 3% 5d0h · 30天 1% 27d · 5分钟前 |
OPENCODE_GO_API_KEY(兼容 OPENCODE_API_KEY) |
GET opencode.ai/zen/go/v1/usage |
zai-coding-cn / zai |
智谱 GLM Coding Plan | 5小时 3% 4h15m · 7天 31% 6d0h · 5分钟前 |
ZAI_CODING_CN_API_KEY / ZAI_API_KEY |
GET open.bigmodel.cn 或 api.z.ai/api/monitor/usage/quota/limit |
minimax-cn / minimax |
MiniMax Coding Plan | 5小时 3% 4h15m · 7天 31% 6d0h · 5分钟前 |
MINIMAX_CN_API_KEY / MINIMAX_API_KEY |
GET api.minimaxi.com 或 api.minimax.io/v1/api/openplatform/coding_plan/remains |
openrouter |
OpenRouter | ● 余额 $8.42 |
OPENROUTER_API_KEY |
GET openrouter.ai/api/v1/credits |
openai-codex |
OpenAI Codex(订阅) | 5小时 15% 3h · 7天 30% 4d2h · 5分钟前 |
OPENAI_CODEX_ACCESS_TOKEN(可选 OPENAI_CODEX_ACCOUNT_ID) |
GET chatgpt.com/backend-api/wham/usage |
| 其他 provider | — | 不显示(返回 null) | — | — |
deepseek与deepseek-official是 DeepSeek 官方的两条 provider 路由(DSH 自带dsh-llm-deepseek与 pi-ai catalog),余额接口相同,都展示官方余额。
cc-switch 的用量查询实现里,能在 DSH 实际触发的是以上 7 家(pi-ai 有对应 provider id,模型选择器能切到)。以下两类未接入:
~/.claude、~/.gemini、Grok session)查询订阅额度,而 DSH 里这些 provider 走 API key 认证,插件拿不到订阅 token,无法干净接入。
deepseek与deepseek-official是 DeepSeek 官方的两条 provider 路由(DSH 自带dsh-llm-deepseek与 pi-ai catalog),余额接口相同,都展示官方余额。
agentDefaultModel.currentSelection()(当前选中,切换即更新),不依赖「最近一次请求的模型」。sessionId 重新加载;DeepSeek 本会话花费按 session 分别累计(llm/stream token × models.dev 单价估算)。curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-balance/main/install.sh | bash
脚本做的事(可先 --dry-run 预览):
~/.dsh/profiles/web/package.json 写入依赖 "dsh-balance": "github:GeekRicardo/dsh-balance";dsh-balance 追加进 dsh.profile.bundles;cd ~/.dsh/profiles/web && pnpm install;重启 DSH 并硬刷新页面后生效:
pm2 restart dsh-web # 若用 pm2 托管;否则用你的启动方式重启
# 1. 从 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 移除 "dsh-balance"
# 2. 移除 dependencies 里的 "dsh-balance"
# 3. cd ~/.dsh/profiles/web && pnpm install
# 4. 重启 DSH
~/.dsh/profiles/web 存在)。~/.dsh/.credentials.yaml 里配置对应供应商的密钥(见上表)。| 半区 | 职责 |
|---|---|
| Host | 监听 llm/stream 按 session 累计 DeepSeek 官方模型的 token;经 credentials 读密钥,按 provider 查对应接口;5 分钟缓存;注册 /dsh-balance/status HTTP route |
| Client | 在 conversation.composer.dock 槽位渲染状态栏,fetch 轮询该 route(2s),按 provider 分发渲染 |
token × 单价 的估算,不是账单。SubscriptionQuotaFooter:5小时 X% 倒计时 · 7天 Y% 倒计时 · N分钟前,百分比 <70% 绿 / 70-90% 橙 / ≥90% 红。kimi-coding(api.kimi.com/coding)时展示;通过 opencode-go 等网关跑的 kimi 模型不属于此账户,不展示。percent/100 × 配额)。5小时 X% 倒计时 · 7天 Y% 倒计时 · 30天 Z% 倒计时 · N分钟前,颜色阈值同上。Authorization: Bearer 与 x-api-key 两个请求头(对齐 OpenCodeMonitor 的官方用量接口实现)。opencode-go(opencode.ai/zen/go)时展示。MIT
| 现象 | 原因与处理 |
|---|---|
| 输入框下方什么都不显示 | 当前 provider 不在支持列表(见上表),或 host 尚未加载;重启后生效 |
| 显示「余额不可用」 | 对应供应商密钥未配置,或接口认证失败 —— 检查 ~/.dsh/.credentials.yaml 是否有对应 key 且有效 |
| 切换模型后读数没有立即变 | 轮询间隔 2 秒;若更久,确认模型选择已保存(currentSelection() 生效) |
| 余额数字一直不变 | 5 分钟缓存:同一 provider 下每 5 分钟才重新查询一次,属预期 |
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: billing、quota。