DeepSeek Harness 插件开发者常需关注 API 价格波动与账户余额。若在开发过程中出现计费高峰,可能导致请求失败;余额不足亦会中断工作流。dsh-tidewatch 旨在解决这一痛点,将时段状态与余额信息直接集成到开发环境界面中。
这是什么¶
该插件是一个 DeepSeek Harness 插件,在页面右上角显示 DeepSeek API 高峰/低谷时段、倒计时与账户余额的悬浮卡片。
核心功能¶
- 实时时段状态灯:根据 DeepSeek 官方计价规则判定当前是高峰期还是低谷期。高峰时段为北京时间周一至周五 09:00-12:00、14:00-18:00;其余为低谷时段,价格减半。
- 北京时钟 + 倒计时:显示距下一时段切换还有多久,每秒更新。
- 账户余额:配置 API Key 后查询余额,每 5 分钟自动刷新。
- 可拖拽、可折叠:标题栏拖动定位,点“-”收起。
安装与启用¶
插件提供两种形态:
- 常驻插件:开机即在,所有会话。使用命令安装:
dsh plugin --profile web add /path/to/dsh-tidewatch
装载后会自动应用包内的 `cordis.patch.yml`,重启 profile 生效。
- 动态插件:仅当前会话,进程内。在 DSH 会话中用
cordis_define定义,再用cordis_run激活。动态插件只存在于当前进程内存,DSH 重启即消失,长期使用建议使用方案 A。
配置 API Key¶
插件默认复用 harness 配置的模型凭据,解析顺序如下:
- 当前生效模型所属 provider 的凭据引用 —— 由
agentDefaultModel.currentSelection()得到 provider id,再用llm.listConfigurableProviders()定位配置对象,读取其apiKeyEnv。 - 用户在面板里手动保存的 Key(环境变量
DSH_PLUGIN_DEEPSEEK_KEY)。 - 兜底环境变量
DEEPSEEK_API_KEY。
面板顶部会显示当前模型与 provider,并提供数据源下拉框,选中即可切换数据源。
安全说明¶
- Key 永不回传浏览器:前端只拿到凭据引用名、来源与可用性,以及余额数值。
- 余额请求由 Host 执行:Key 经环境变量传递,不出现在命令行、不写入日志。
- 余额接口限制:只有 DeepSeek 系提供(
<baseURL>/user/balance);其余 provider 会被标记为不支持。
技术实现¶
插件使用 connection.fetch 注册路由(POST /api/dsh-tidewatch),而非 connection.rpc。这是由于当前宿主实现的注入限制,rpc.handle 内部访问 owner.webServer 时必然抛出错误,导致路由注册失败。connection.fetch 的注册路径不经过 owner.webServer,故不受影响。
生效方式¶
- 客户端半边(
lib/client.js):改动后刷新页面即可,无构建步骤。 - 宿主半边(
lib/index.js/lib/tide.js):改动需重启 DSH profile。