每个应用一个密钥,每个密钥一个页面。
给每位同事、每台笔记本电脑、每个 CI 任务和每个智能体都分配自己的密钥。密钥页面会显示它的用量,以及其请求在队列中的等待时间(中位数和 p95),时间范围可以拖动选择,也可以直接输入。轮换密钥时可设置宽限期;优先级可设为 P0 到 P9:等待中的 P9 请求总是排在 P8 请求之前。
暂停它后,新请求会被拒绝,而已经在运行的请求会继续完成:
$ curl -i http://gpu-box:8080/v1/chat/completions \
-H "Authorization: Bearer vw_…" -d '{…}'
HTTP/1.1 403 Forbidden
content-type: application/json
{"detail":"token paused"}
来自 2026 年 9 月 23 日的一个本地实例。主机和密钥已替换,其他标头已删减。
demo-agent 的页面,也就是图 1 中产生负载的那个密钥:屏幕上这一小时内有 37 个请求和 43k 个生成的 token。然后它的 God mode 停靠面板打开(一个可选开启的实时视图,显示某个密钥的提示词和回复,默认关闭),回复在写出的同时流式显示。提示词是我们自己的。
opencode-laptop,两列密集的粉色是 research-notebook。记录于 2026 年 9 月 23 日;密钥名称已替换。左右滚动图片可查看整周。想离开?改一下 base_url 就行。
它支持 /v1/chat/completions 和 /v1/models,并且 /v1/models 会报告每个模型的 max_model_len。它还在 /v1/messages 支持 Anthropic Messages API,因此 Claude Code 把 ANTHROPIC_BASE_URL 指向 warden 的根 URL 即可(Claude Code 会自己加上 /v1/messages 路径);它也在 /v1/responses 支持 OpenAI Responses API,因此 Codex CLI 可以使用你加载的模型。权重位于普通的 HuggingFace 缓存中,make export-hf-cache 会把它打包成 tarball 交给你;每个引擎启动时使用的确切命令行参数(argv)只需一次 GET 即可取得,因此不需要我们也能重建一套可用的环境。把下面的 diff 反过来看,就是迁出的步骤。
import os from openai import OpenAI client = OpenAI( - base_url="https://api.openai.com/v1", - api_key=os.environ["OPENAI_API_KEY"], + base_url="http://gpu-box:8080/v1", + api_key=os.environ["LM_WARDEN_KEY"], # a vw_ key from API tokens ) reply = client.chat.completions.create( - model="gpt-4o-mini", + model="gpt-oss-20b", # the served name of a model you loaded messages=[{"role": "user", "content": "What is a KV cache?"}], )