1. 为什么我要把 Codex 和 QVeris 串成一条研究流水线
先说清楚这套东西是什么、能做什么、适合谁。Codex 是本地跑的编码智能体,QVeris 是一套面向产业链研究的 Skill 加数据调用能力,两者拼起来,能让我从「AI 基建很火」这种模糊判断,走到「产业链分几层、卡点在哪、哪些公司离卡点最近、证据来自哪份公告」这种可复盘的结论。适合个人投资者、行业研究爱好者,以及需要快速搭研究框架的投研辅助人员。不适合想直接要买卖点的人。
我之前的痛点很具体:信息太散,一家公司有公告、财报、互动问答、新闻,东一块西一块;概念太多,算力芯片、光模块、PCB、液冷、电源、先进封装、半导体设备,每个环节都有人说重要,但哪个是真卡点判断不了;研究过程不稳定,今天看光模块明天看芯片,框架没沉淀,最后变成追热点。
真正卡住我的其实不是 Codex 本身,而是工具侧的 Key 和通道配置。QVeris 是外部数据能力,要配 API Key;Codex 要读 config.toml;PowerShell 环境变量还得让新窗口生效。这几步任何一环没通,Skill 装好了也调不动数据。所以这篇的重点放在配置和验证上,让研究流程能真正跑起来。
2. TaoToken 前置:统一 Key 与 API 通道
我试过把不同工具的 Key 分散在各自配置文件里,结果换机器、重装、排查连通性时到处找。后来改成用 TaoToken 做统一入口,一个 Key 管模型对话、编码、数据类调用,配置集中,排障也集中。
TaoToken 在这里的角色是统一 Key 和 API 通道:官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址 https://taotoken.net/api (不加 UTM)。你需要先去控制台建 Key,再把它写进 Codex 的 config.toml 和 PowerShell 环境变量。
几个入口按用途分流,别只记首页:
- 建 Key、管额度:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
- 生成 API Key:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
- 验证模型是否通:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
- 长期编码 / Agent 场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
- Claude Code 接入:https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode-anthropic&utm_campaign=rewrite
注意:Key 只存在本地配置和环境变量里,不要贴进聊天、不要截图、不要提交到 Git。一旦怀疑泄露,直接去控制台吊销重建。
3. 可复制配置:config.toml 与 settings.json 骨架
3.1 Codex 的 config.toml
Codex 读取本地配置,路径一般在C:\Users\你的用户名\.codex\config.toml。下面是我在用的骨架,把base_url指向 TaoToken 的 API 基址,Key 用环境变量引用而不是硬编码:
# C:\Users\你的用户名\.codex\config.toml model = "gpt-4o-mini" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat" [skills] # Skill 安装后会自动落到这个目录,无需手动登记 path = "C:\\Users\\你的用户名\\.codex\\skills"关键点:env_key写的是环境变量名,不是 Key 本身。这样配置文件可以安全备份,Key 单独放环境变量。
3.2 QVeris Skill 的 settings.json
QVeris Skill 装完后在C:\Users\你的用户名\.codex\skills\qveris-supply-chain-research,里面通常有个settings.json管数据侧参数。骨架如下:
{ "qveris": { "api_base": "https://taotoken.net/api", "api_key_env": "QVERIS_API_KEY", "workflow": ["discover", "inspect", "call"], "max_paid_calls": 20, "output_format": "memo" }, "research": { "default_theme": "AI 基建产业链卡点", "candidate_pool_size": 20, "shortlist_size": 5, "require_counter_evidence": true } }api_key_env同样指向环境变量名,max_paid_calls是我给自己设的成本闸门,避免 Call 阶段乱调。require_counter_evidence打开后,输出必须带反证条件。
3.3 PowerShell 环境变量设置
Windows 下用 PowerShell 写用户级环境变量,两个 Key 分别设:
[Environment]::SetEnvironmentVariable("TAOTOKEN_API_KEY", "你的TaoToken Key", "User") [Environment]::SetEnvironmentVariable("QVERIS_API_KEY", "你的QVeris Key", "User")设完必须关掉 PowerShell 和 Codex 再重开,环境变量通常要新窗口才生效。检查是否写入成功:
if ($env:TAOTOKEN_API_KEY) { "TAOTOKEN SET" } else { "TAOTOKEN NOT_SET" } if ($env:QVERIS_API_KEY) { "QVERIS SET" } else { "QVERIS NOT_SET" }两个都返回SET才算配置到位。返回NOT_SET一般是当前窗口没读到新配置,重开窗口再试。
4. 验证请求:一次可复现的连通性动作
配置写完不代表通道通,得做一次真实请求验证。我习惯分两步:先验 TaoToken 通道,再验 QVeris Skill 能否调数据。
4.1 验证 TaoToken 通道
用 PowerShell 直接打一次模型列表接口,确认 Key 和基址都对:
$headers = @{ "Authorization" = "Bearer $env:TAOTOKEN_API_KEY" "Content-Type" = "application/json" } Invoke-RestMethod -Uri "https://taotoken.net/api/models" -Headers $headers -Method Get | ConvertTo-Json -Depth 4返回里能看到可用模型列表,说明 Key 有效、基址正确、网络可达。如果返回 401,是 Key 问题;返回 404,检查base_url有没有多写或少写路径。
4.2 验证 QVeris Skill 调用
回到 Codex,用结构化 prompt 触发一次最小研究动作,先只跑 Discover 和 Inspect,不急着 Call:
用 QVeris 调研 AI 基建产业链卡点。 第一步只做 Discover:列出可用的行情、公告、财务报表、公司资料、新闻数据能力。 第二步做 Inspect:对每个能力说明参数、成功率、计费规则。 先不要 Call,等我确认后再调用。如果 Codex 能列出数据能力清单并给出参数说明,说明 Skill 装好了、Key 通了、工作流能跑。这一步成功的结果是:你看到一份带工具名、参数、计费规则的清单,而不是一句「我没有数据权限」。
4.3 跑一次完整 Call
确认 Inspect 没问题后,再放开 Call:
现在对 AI 基建产业链执行 Call: 调用公司资料、财务报表、公告三类数据源, 给出 5 个优先研究标的, 说明用了哪些 QVeris 能力、付费 Call 次数和 credits 消耗, 以及什么情况会削弱每个判断。 最后整理成投研备忘录格式。成功的话,你会拿到一份备忘录:研究范围、核心发现、证据表、风险与反证、调用记录、证据缺口。到这一步,整条 SOP 就跑通了。
5. 本篇常见错排查
5.1 环境变量返回 NOT_SET
最常见。原因基本是没重开窗口,或者变量设到了当前会话而不是 User 级。确认写法带"User"参数,然后彻底关掉 PowerShell 和 Codex 重开。还有一种情况是设变量时用了单引号包 Key,PowerShell 里单引号不解析变量,但这里 Key 是字面量,问题不大,真正要小心的是别把$env:写进值里。
5.2 config.toml 改了不生效
Codex 启动时读配置,改完要重启 Codex。另外 TOML 对缩进和引号敏感,base_url必须是完整 URL,结尾不要多斜杠。env_key写错成实际 Key 值也会出问题,它要的是变量名。
5.3 Skill 装了但调不到数据
先确认 Skill 目录在skills下且名字对得上。再确认settings.json里api_key_env指向的环境变量确实有值。最后看是不是max_paid_calls设成 0 了,那样 Call 阶段会被直接拦住。
5.4 Call 阶段 credits 消耗异常
Inspect 没做就 Call,容易重复调同一个数据源。养成先 Discover 再 Inspect 再 Call 的顺序,Inspect 阶段看清计费规则和成功率,把max_paid_calls当硬闸门用。
5.5 输出不像备忘录
在 prompt 里明确要求包含研究范围、核心发现、证据表、风险与反证、调用记录、证据缺口、非投资建议声明。不写清楚,模型容易输出一篇读着顺但没证据的文字。
6. 把研究流程固定下来
排障和接入相关的配置,集中在 API Keys 和接入文档两处:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 和 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。想先验证模型通不通,用模型对话页 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。如果你要长期跑编码和 Agent 类任务,Coding Plan 更合适:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。
我最后沉淀下来的 SOP 就十步:定主题、拆产业链、找卡点、建候选池、Discover 找数据能力、Inspect 看参数和计费、Call 调必要数据、输出备忘录、做反证检查、明确非投资建议。每一步都有对应的配置或 prompt 支撑,换主题时只改主题名,流程不动。
这套东西的价值不在某一次结论,而在流程可重复。配置一次,之后每次研究都从同一套骨架出发,证据和反证都留在备忘录里,回头能复盘。