尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

参数表里的 DeepSeek Harness,TaoToken 的 Key 放在 secrets

参数表里的 DeepSeek Harness,TaoToken 的 Key 放在 secrets 1. 参数表里的 DeepSeek Harness先把“谁在消耗 Token”说清楚欢迎加入 DeepSeek Harness 团队后第一件要改的通常不是业务脚本而是模型访问配置。平台配置开发视角下仓库里最容易被写乱的不是训练参数而是API Key、Base URL、模型名和预算字段。有人把 Key 写进.env并提交有人把供应商地址写进参数表还有人用同一个 Key 跑开发、评测和批处理最后账单上来后完全说不清是谁在消耗 Token。更稳的做法是TaoToken 作为统一模型访问入口Key 只放 secrets参数表只保存key_ref和用量字段。先打开 TaoToken 官网 完成账号准备后续所有模型调用都把 Base URL 固定为https://taotoken.net/api。这篇内容面向 CSDN 社区里做平台配置、CI/CD、内网工具链和团队资源治理的同学。我们不把参数表当成简单的用户名单而是当成一张成本归因表谁在什么项目、什么任务、什么模型、什么环境下消耗了多少 Token。只要这张表设计对了后续排查异常用量、申请预算、轮换 Key、切换供应商都会轻松很多。下面给出可直接复制的 secrets 示例、参数表字段、Claude Code 与 Codex 配置以及多环境切换时要注意的边界。在 DeepSeek Harness 团队场景里参数表常见字段可以分成六类人的维度member_name、team_name、cost_center项目维度project_key、repo、env模型维度provider、base_url、model_name访问维度key_ref、key_status、quota消耗维度prompt_tokens、completion_tokens、total_tokens、request_count追踪维度request_id、run_id、task_type、status、last_seen_at其中只有key_ref可以出现在参数表里它应该指向 secrets 名称例如github-actions/TAOTOKEN_API_KEY、k8s/deepseek-harness-taotoken。真正的 Key 值不能写进表、README、Dockerfile、前端环境变量或日志。否则一旦有人导出报表、截图或拉取仓库Key 就会扩散。轮换 Key 时也会非常痛苦因为你不知道哪些脚本直接硬编码了旧值。2. 给 DeepSeek Harness 准备 TaoToken Key从官网到 secrets给 DeepSeek Harness 准备模型访问时先去 TaoToken 官网 完成注册或登录然后进入控制台创建 API Key。创建完成后不要直接把 Key 复制到参数表而是放进当前环境的 secrets 管理系统。工具配置里的 Base URL 统一写成https://taotoken.net/api注意Base URL 是给工具和 SDK 使用的不附加网页统计参数。Key 占位符统一写成YOUR_API_KEY文档和示例代码只展示占位符。建议先定义一组环境变量名避免每个项目自己发明TAOTOKEN_API_KEYYOUR_API_KEY TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_MODELclaude-sonnet-4-5 HARNESS_PROJECTdeepseek-harness HARNESS_MEMBERzhangsan HARNESS_COST_CENTERplatform-ai.env.example可以提交但.env必须进.gitignore。如果团队使用 GitHub Actions把TAOTOKEN_API_KEY放到仓库或组织的 secrets 中参数表只记录key_ref。name: deepseek-harness-smoke on: workflow_dispatch: jobs: smoke: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Check TaoToken access env: TAOTOKEN_API_KEY: ${{ secrets.TAOTOKEN_API_KEY }} TAOTOKEN_BASE_URL: https://taotoken.net/api run: | curl -sS $TAOTOKEN_BASE_URL/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ | head -c 500如果跑在 Kubernetes 里用 Secret 注入不要把 Key 写进 Deployment 的明文 env。apiVersion: v1 kind: Secret metadata: name: deepseek-harness-taotoken type: Opaque stringData: TAOTOKEN_API_KEY: YOUR_API_KEYapiVersion: apps/v1 kind: Deployment metadata: name: deepseek-harness-worker spec: replicas: 1 selector: matchLabels: app: deepseek-harness-worker template: metadata: labels: app: deepseek-harness-worker spec: containers: - name: worker image: your-registry/deepseek-harness:latest env: - name: TAOTOKEN_BASE_URL value: https://taotoken.net/api - name: TAOTOKEN_API_KEY valueFrom: secretKeyRef: name: deepseek-harness-taotoken key: TAOTOKEN_API_KEY如果本地用 Docker Compose 做复现也可以用 secrets 文件挂载。services: harness: image: your-registry/deepseek-harness:latest environment: TAOTOKEN_BASE_URL: https://taotoken.net/api TAOTOKEN_API_KEY_FILE: /run/secrets/taotoken_api_key secrets: - taotoken_api_key secrets: taotoken_api_key: file: ./secrets/taotoken_api_key.txt对应参数表记录可以写成这样{ member_name: zhangsan, team_name: deepseek-harness, project_key: deepseek-harness/eval, task_type: nightly-eval, provider: taotoken, base_url: https://taotoken.net/api, key_ref: github-actions/TAOTOKEN_API_KEY, model_name: claude-sonnet-4-5, token_budget: 5000000, cost_center: platform-ai, status: active }这张记录里没有真实 Key只有key_ref。如果发生异常消耗可以先按key_ref找到对应 secret再决定是轮换、限流还是拆分到独立项目。3. 参数表字段设计用一张表把 Token 消耗归因到人、项目和模型参数表不要只记录“谁申请了 Key”而要记录“谁在用、用在哪、消耗多少”。下面是一张适合 DeepSeek Harness 团队起步的表。字段名可以直接用也可以按你们现有数仓规范改名。字段名类型说明示例是否敏感idBIGSERIAL主键1001否member_nameTEXT成员标识zhangsan否team_nameTEXT团队名deepseek-harness否project_keyTEXT项目或子任务deepseek-harness/eval否task_typeTEXT任务类型nightly-eval否envTEXT环境dev/staging/prod-like否providerTEXT模型供应商taotoken否base_urlTEXT模型访问地址https://taotoken.net/api否key_refTEXTsecrets 引用名github-actions/TAOTOKEN_API_KEY否key_statusTEXT密钥状态active/rotating/disabled否model_nameTEXT模型名claude-sonnet-4-5否token_budgetBIGINT预算 Token5000000否token_usedBIGINT已用 Token1234567否request_countBIGINT请求次数3200否cost_centerTEXT成本中心platform-ai否request_idTEXT请求追踪 IDreq_01H...否run_idTEXT任务运行 IDrun_2025_...否statusTEXT当前状态active/paused否first_seen_atTIMESTAMPTZ首次出现时间2025-01-01 10:00否last_seen_atTIMESTAMPTZ最近出现时间2025-01-02 03:00否下面是本地分析库可用的 DDL 示例。请在本地或分析副本执行不要从自动化流程直连生产库。CREATE TABLE ai_usage_param ( id BIGSERIAL PRIMARY KEY, member_name TEXT NOT NULL, team_name TEXT NOT NULL, project_key TEXT NOT NULL, task_type TEXT NOT NULL, env TEXT NOT NULL DEFAULT dev, provider TEXT NOT NULL DEFAULT taotoken, base_url TEXT NOT NULL DEFAULT https://taotoken.net/api, key_ref TEXT NOT NULL, key_status TEXT NOT NULL DEFAULT active, model_name TEXT NOT NULL, token_budget BIGINT, token_used BIGINT NOT NULL DEFAULT 0, request_count BIGINT NOT NULL DEFAULT 0, cost_center TEXT, request_id TEXT, run_id TEXT, status TEXT NOT NULL DEFAULT active, first_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(), last_seen_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX idx_ai_usage_member_time ON ai_usage_param (member_name, last_seen_at DESC); CREATE INDEX idx_ai_usage_project_model ON ai_usage_param (project_key, model_name, last_seen_at DESC);有了这张表判断谁在消耗 Token 就不再靠猜。比如查最近 7 天按成员和项目聚合SELECT member_name, project_key, model_name, SUM(token_used) AS total_tokens, SUM(request_count) AS total_requests FROM ai_usage_param WHERE last_seen_at now() - interval 7 days GROUP BY member_name, project_key, model_name ORDER BY total_tokens DESC;如果某个key_ref对应的消耗突然升高可以继续按任务类型拆SELECT task_type, COUNT(*) AS records, SUM(token_used) AS total_tokens FROM ai_usage_param WHERE key_ref github-actions/TAOTOKEN_API_KEY AND last_seen_at now() - interval 1 day GROUP BY task_type ORDER BY total_tokens DESC;这里的关键不是 SQL 写得多复杂而是字段要能回答四个问题谁、在哪个项目、用哪个模型、消耗多少。只要key_ref、project_key、model_name、cost_center四个字段稳定后面接成本看板、预算告警、月度复盘都会顺很多。4. Claude Code 配置settings.json ANTHROPIC_* 接入 TaoTokenClaude Code 的配置要使用settings.json和ANTHROPIC_*环境变量。不要把 Codex 的配置混进来也不要把 Anthropic 变量写给 Codex。推荐把 Base URL 和模型写在settings.json中Key 通过 secrets 注入到 shell 环境。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_MODEL: claude-sonnet-4-5, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5 }, permissions: { allow: [] } }然后在本地或 CI 中注入ANTHROPIC_AUTH_TOKEN。注意不要在settings.json里写真实 Key。如果当前版本支持环境变量展开可以用${TAOTOKEN_API_KEY}否则更安全的做法是只让 shell 持有。export TAOTOKEN_API_KEYYOUR_API_KEY export ANTHROPIC_AUTH_TOKEN$TAOTOKEN_API_KEY export ANTHROPIC_BASE_URLhttps://taotoken.net/api claude如果使用 CC Switch 管理多套 Claude Code 配置三件套建议统一为profiles: - name: deepseek-harness-dev provider: taotoken base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-sonnet-4-5 project_key: deepseek-harness/dev - name: deepseek-harness-eval provider: taotoken base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-haiku-4-5 project_key: deepseek-harness/eval切换 profile 后记得同步参数表里的project_key、model_name、key_ref、last_seen_at。否则 Claude Code 的实际调用会落到一个新项目上但参数表还停留在旧环境后续对账就会错位。Claude Code 的检查方式可以很简单env | grep -E TAOTOKEN|ANTHROPIC | sed s/.*/***/确认ANTHROPIC_BASE_URL是https://taotoken.net/api确认ANTHROPIC_AUTH_TOKEN已注入但不要把值打印出来。正式运行前可以在 TaoToken 控制台查看 Key 是否可用再去 TaoToken 官网 核对当前账号下的模型与配额。5. Codex 配置config.toml TAOTOKEN_API_KEY不要混用 ANTHROPIC_*Codex 走的是config.toml不要把它和 Claude Code 的ANTHROPIC_*混用。最稳的方式是定义一个model_provider把 Base URL 指向https://taotoken.net/apiKey 从TAOTOKEN_API_KEY读取。model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responses本地运行前注入 Keyexport TAOTOKEN_API_KEYYOUR_API_KEY codex如果你同时使用 Claude Code 和 Codex建议把两个客户端的参数表记录分开{ client: codex, provider: taotoken, base_url: https://taotoken.net/api, env_key: TAOTOKEN_API_KEY, model_name: gpt-5-codex, project_key: deepseek-harness/codex, key_ref: local/TAOTOKEN_API_KEY }{ client: claude-code, provider: taotoken, base_url: https://taotoken.net/api, env_key: ANTHROPIC_AUTH_TOKEN, model_name: claude-sonnet-4-5, project_key: deepseek-harness/claude, key_ref: local/TAOTOKEN_API_KEY }这样即使两个工具共用同一个 TaoToken Key也能在参数表里通过client和project_key区分消耗来源。注意 Codex 配置里不要再设置ANTHROPIC_BASE_URL或ANTHROPIC_AUTH_TOKEN那会让排查变得非常混乱。6. CC Switch 三件套多环境切换时保持参数表一致CC Switch 适合管理多套 Claude Code 配置。为了避免“切了配置但参数表没切”的问题建议把三件套固定为provider、base_url、api_key_env再加两个业务字段project_key和default_model。profiles: - name: deepseek-harness-dev provider: taotoken base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-sonnet-4-5 project_key: deepseek-harness/dev cost_center: platform-ai - name: deepseek-harness-staging provider: taotoken base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-sonnet-4-5 project_key: deepseek-harness/staging cost_center: platform-ai - name: deepseek-harness-eval provider: taotoken base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY default_model: claude-haiku-4-5 project_key: deepseek-harness/eval cost_center: eval-cost切换后参数表至少更新这些字段UPDATE ai_usage_param SET project_key deepseek-harness/staging, model_name claude-sonnet-4-5, key_ref cc-switch/TAOTOKEN_API_KEY, last_seen_at now() WHERE member_name zhangsan AND env staging;如果你们的参数表是事件追加式不要直接更新旧行而是插入一条新记录保留历史轨迹INSERT INTO ai_usage_param ( member_name, team_name, project_key, task_type, env, provider, base_url, key_ref, model_name, cost_center, status ) VALUES ( zhangsan, deepseek-harness, deepseek-harness/staging, interactive-debug, staging, taotoken, https://taotoken.net/api, cc-switch/TAOTOKEN_API_KEY, claude-sonnet-4-5, platform-ai, active );CC Switch 的三件套不要包含真实 Key只包含api_key_env。这样切换 profile 时Key 仍然来自 secrets参数表也只记录引用名。团队里如果有人把 Key 写进 CC Switch 配置文件建议立即轮换并把key_status改成rotating再补一条新记录。7. 排障Token 消耗对不上时按参数表链路排查当 DeepSeek Harness 团队发现 Token 消耗对不上先不要怀疑模型。按参数表链路排查通常能快速定位。建议按下面顺序确认客户端的 Base URL 是否为https://taotoken.net/api有没有多写/v1或其他路径。确认 Key 是从 secrets 注入而不是旧 shell、旧.env或某台机器上的历史变量。确认参数表key_ref能找到对应 secret且key_status不是disabled。确认model_name与 TaoToken 控制台里的可用模型一致。检查请求是否带上了project_key、cost_center、member_name等归因标签。检查是否有重试、并发、流式超时导致的重复请求。对比request_id、run_id和last_seen_at确认是不是同一批任务被重复计数。本地检查环境变量时只显示变量名不要显示值env | grep -E TAOTOKEN|ANTHROPIC|OPENAI | sed s/.*/***/检查 TaoToken 连通性时可以在本地执行curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ | head -c 500如果请求成功但参数表没有记录通常是采集链路问题不是 Key 问题。可以用下面的 SQL 找最近活跃记录SELECT member_name, project_key, task_type, model_name, token_used, request_count, last_seen_at FROM ai_usage_param WHERE last_seen_at now() - interval 6 hours ORDER BY last_seen_at DESC LIMIT 50;如果发现某个成员消耗特别高先按project_key和task_type拆SELECT project_key, task_type, model_name, SUM(token_used) AS total_tokens, SUM(request_count) AS total_requests, MAX(last_seen_at) AS last_time FROM ai_usage_param WHERE member_name zhangsan AND last_seen_at now() - interval 1 day GROUP BY project_key, task_type, model_name ORDER BY total_tokens DESC;如果参数表只记录成功调用而客户端把失败重试也算进本地计数也会对不上。建议在写入参数表时增加status字段区分success、failed、retry。如果使用流式响应注意统计的是请求侧还是响应侧 Token两者口径可能不同。最稳的约定是参数表以服务端返回的用量为准本地客户端只记录请求事件。还有一种常见问题是 Key 轮换后旧进程没有重启。环境变量在进程启动时读取旧进程会继续用旧 Key。解决方式是滚动重启并在参数表里把旧key_ref标记为rotating新key_ref写为新的 secret 名称。UPDATE ai_usage_param SET key_status rotating WHERE key_ref k8s/deepseek-harness-taotoken AND last_seen_at now() - interval 2 hours; INSERT INTO ai_usage_param ( member_name, team_name, project_key, task_type, env, provider, base_url, key_ref, key_status, model_name, cost_center, status ) VALUES ( zhangsan, deepseek-harness, deepseek-harness/worker, batch-eval, staging, taotoken, https://taotoken.net/api, k8s/deepseek-harness-taotoken-v2, active, claude-sonnet-4-5, platform-ai, active );8. 可复现清单与 CTA从模型对话到 Claude Code 文档把上面的配置压缩成一份可复现清单DeepSeek Harness 团队新成员按顺序做即可在 TaoToken 官网完成账号准备进入控制台创建 API Key。把 Key 放入 secrets参数表只记录key_ref不记录真实值。所有工具配置 Base URL 为https://taotoken.net/api。Claude Code 使用settings.json和ANTHROPIC_*环境变量。Codex 使用config.toml和TAOTOKEN_API_KEY不要混用ANTHROPIC_*。CC Switch 三件套统一为provider、base_url、api_key_env。参数表至少包含member_name、project_key、model_name、key_ref、token_used、cost_center、last_seen_at。查询 Token 消耗的 SQL 在本地分析副本执行不要直连生产库。Key 轮换后滚动重启进程并更新参数表状态。如果你还在给 DeepSeek Harness 做第一版模型访问配置可以按下面的路径继续模型对话https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentdeepseek_harness_chatCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentdeepseek_harness_plan创建 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentdeepseek_harness_keysClaude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentdeepseek_harness_claudecode最后再强调一次参数表里的 DeepSeek Harness 记录的是归因关系不是密钥仓库。TaoToken 的 Key 放在 secrets参数表只保留key_refBase URL 固定为https://taotoken.net/apiClaude Code 和 Codex 按各自规范配置。这样做的好处是当团队变大、任务变多、模型切换变频繁时你仍然能回答那个最核心的问题到底是谁在消耗 Token。
返回列表