用途:当 Jev 尚未可用、Jev 工具报 no_key 或 auth_failed,或用户要求连接、修复 Jev 时使用。Jev 是 TypeSafe 的决策模型,需要一个 API 密钥,而操作者不得查看、索取或处理该密钥。
主要能力:支持四种密钥来源,同一 Jev 均可应答。TypeSafe 为默认(jev setup-key,密钥来自 console.typesafe.ai);OpenRouter 用 jev setup-key --provider openrouter,经其 Decisions API 访问;Venice 用 jev setup-key --provider venice;OpenCode Zen 用 jev setup-key --provider zen,其免费层以相同模型 id 形态应答,适合没有 TypeSafe 密钥(TypeSafe 已不接受新注册)且想零账单起步的人。
使用方式:先运行 jev doctor 查看状态,若 key.present 与 jev.reachable 均为 true 即完成。否则运行 jev setup-key,它会在本机浏览器打开页面并在 stderr 打印一行含 url 的 JSON(URL 不含密钥),让用户把密钥粘贴进该页面。命令完成时打印 {"status": "stored", "verified": true, ...};rejected 表示密钥错误需重跑,timed_out 表示十分钟内无人使用页面。最后再跑一次 jev doctor 并汇报。无浏览器时:SSH 无头服务器由用户自己在终端运行 jev setup-key --tty(隐藏输入,不要代为执行);私有网络远程机用 jev setup-key --host <private-ip> --no-open 并发送链接,该流量为明文 HTTP,仅限完全可信网络,禁止绑定公网地址。
密钥存放:操作系统密钥库(macOS Keychain 服务 Hermes TypeSafe API,Linux 用 secret-tool),回退到 ~/.config/jev/credentials(权限 0600);在 Hermes 机器上还会写入 ~/.hermes/.env 及各 profiles/*/.env 的 TYPESAFE_API_KEY。运行中的网关在下次重启时读取,未经要求不要重启。
限制与规则:绝不要求用户把密钥粘贴到聊天中;若已粘贴,不存储、不重复,告知应更换该密钥。不要读取密钥库、.env 或 ~/.config/jev/credentials 来“检查”密钥,只用 jev doctor(仅报告存在性与长度)。不要把密钥放进命令行、URL、自写配置文件或日志。TYPESAFE_BASE_URL 是显式兼容端点覆盖,用于本地 mock 或 HTTPS 代理,官方 URL 默认固定;客户端不会把已保存或提供的凭据转发给覆盖端点,需要 bearer 的网关改用 JEV_PROXY_API_KEY,仅在数字回环地址允许明文且不跟随重定向。多密钥并存时默认用 TypeSafe,可用 JEV_PROVIDER=openrouter 或 zen 显式切换,仅在该提供方确有密钥时生效。无密钥时决策调用保持原有 fail-open 行为。