$ man context-wiki/multi-model-optimization

基础设施advanced

多模型 AI 优化

如何用不到 1 美元/天运行 4 个 AI 模型,并使用构建时静态数据


单一模型的问题

大多数人选择一个 AI 模型用于所有场景。这就像用大锤来挂相框 - 能用,但你在多花钱和过度建设。我曾经用 Claude Opus 处理 104 个每日定时 API 调用,输出价格为 $75/百万 token。WhatsApp 自聊循环产生了级联回复。账单是每天 50 美元,而这些工作一个本地 14B 模型就能处理。解决方案不是停止使用 AI,而是根据一个问题将每个任务路由到合适的模型:有人类会阅读这个输出吗?
模式

四模型阵容

1. Ollama / Qwen 2.5 14B(免费,本地)
在 Mac Mini M4 Pro 上运行。处理所有重复性定时任务:提交追踪、RSS 监控、仪表盘数据生成、状态报告。这些任务每天运行 4 次以上。按 Opus 定价,这意味着 96 次 API 调用在为结构化数据提取烧真金白银,而一个 14B 模型完全能胜任。M4 Pro 配 24GB 内存运行约 9GB 显存。

2. Claude Sonnet 4($15/百万输出 token)
所有对话、编排和代理协调。这是主代理。聊天、WhatsApp、Discord、记忆管理。Sonnet 比 Opus 便宜 5 倍,但处理对话同样出色。质量差异只在长篇内容创作中才有体现。

3. Claude Opus 4($75/百万输出 token)
仅用于内容创作。博文、Substack 文章、LinkedIn 草稿、深度分析。内容创作是模型质量直接影响输出质量的领域。在 2000 字的文章中你能感受到差异。对于提交摘要?零差异。

4. Claude Code / Opus 4.6(免费,Max 订阅)
基础设施层。调试、部署、Git 操作、架构决策、对其他模型输出的质量审查。通过订阅无限使用,无按 token 计费。这是你做重活的地方。
公式

决策框架

一个问题决定选择哪个模型:输出质量对人类读者重要吗?

定时任务(追踪、监控、更新) -> Ollama 本地。运行频繁,输出是结构化数据,质量不重要。
对话、路由、记忆 -> Sonnet。足以应对实时交互,比 Opus 便宜 5 倍。
博文、文章、内容 -> Opus。质量就是产品,人类会阅读。
基础设施、调试、部署 -> Claude Code。订阅免费,需要完整的代码库上下文。

如果没有人类阅读输出,使用最便宜的可用模型。如果有人类阅读输出,使用你能负担得起的最好模型。如果涉及基础设施,使用 Claude Code。
模式

构建时静态 JSON 模式

这是让仪表盘在 Vercel 上运行的关键架构模式。问题:读取本地文件(如 ~/.openclaw/workspace/HEARTBEAT.md)或运行 execSync("git log") 的 API 路由在本地完美工作,但在 Vercel 上完全崩溃。构建服务器无法访问你的笔记本文件系统。

解决方案:在构建时生成静态 JSON。提交 JSON。Vercel 直接提供服务。

生成器脚本读取所有本地数据源(Markdown 文件、定时任务配置、Git 日志)并将结构化 JSON 写入 public/data/*.json。API 路由从这些 JSON 文件读取,而不是从绝对路径读取。生成器在 prebuild 中运行,因此每次部署都能获取最新数据。定时任务重新生成数据、提交并推送。推送触发 Vercel 以更新后的数据重新构建。

五个 JSON 文件覆盖整个仪表盘:tasks.json 来自 HEARTBEAT.md 复选框,calendar.json 来自 Git 提交和定时计划,memories.json 来自工作区记忆文件,team.json 来自定时任务模型统计,status.json 来自状态更新 Markdown。
代码

API 路由如何改变的

之前:每个 API 路由都有硬编码的绝对路径和 shell 命令。

const heartbeatPath = "/Users/shawnos.ai/.openclaw/workspace/HEARTBEAT.md"
execSync("git log --since=...", { cwd: "/Users/shawnos.ai/shawn-gtme-os" })
const jobsPath = "/Users/shawnos.ai/.openclaw/cron/jobs.json"

之后:每个 API 路由从相对的静态 JSON 文件读取。

const dataPath = path.join(process.cwd(), "public/data/tasks.json")
const data = JSON.parse(fs.readFileSync(dataPath, "utf8"))
return data.tasks || []

没有 execSync。没有绝对路径。没有文件系统依赖。在任何地方都能运行。生成器脚本在构建时处理所有本地文件系统访问,因此生产环境的 API 永远不需要它。
模式

保持数据新鲜

生成器在两个地方运行。首先,package.json 中的 prebuildnext build 之前运行,因此每次部署都能获取最新数据。其次,本地机器上的定时任务运行生成器、提交新的 JSON 并推送到 GitHub。推送触发 Vercel 部署。

数据新鲜度取决于定时频率。每 30 分钟意味着仪表盘永远不会过时超过 30 分钟。对于状态仪表盘来说,这完全足够了。你不需要 WebSocket 或实时订阅。定时任务加 Git 推送加重新构建,简单、可靠且免费。
专业技巧

实际节省了多少

之前:全部用 Opus。104 次每日定时 API 调用,输出价格 $75/百万 token。WhatsApp 自聊循环产生级联回复。API 成本约 50 美元/天。

之后:96 次定时调用迁移到免费的本地 Ollama。8 次剩余 API 调用使用 Sonnet,价格 $15/百万。内容创作使用 Opus,每天 1-2 次调用。自聊循环用 3 秒防抖消除。API 成本约 0.50 美元/天。

这是 99% 的成本降低。在关键处保持了相同的输出质量。仪表盘在 Vercel 上运行。团队花名册显示来自真实定时任务数据的实际模型统计。任务面板读取 HEARTBEAT.md 中的真实复选框。没有模拟数据。没有本地依赖。直接上线。
反模式

常见错误

所有任务都用 Opus。最大的烧钱坑。大多数任务不需要前沿级别的推理能力。一个 14B 本地模型处理结构化数据提取完全没问题。

从无服务器函数读取本地文件。你的生产服务器不是你的笔记本电脑。绝对路径在 Vercel、AWS Lambda 或任何云平台上都会失败。在部署前生成数据。

数据缺失时没有回退。始终返回空数组而不是崩溃。如果 tasks.json 还不存在,返回 []。仪表盘应该渲染为空,而不是报错。

在 API 路由中运行 Git 命令。execSync("git log") 在本地工作但在生产环境中失败,因为那里没有 Git 仓库。将其移到构建时。

过度设计刷新机制。状态仪表盘不需要 WebSocket。定时任务加 Git 推送加重新构建,简单且可靠。

knowledge guide
See "Agent" in Knowledge See "Vercel" in Knowledge

相关条目
模型选择定时任务部署与 Vercel技能
上下文 Wiki知识库指南
ShawnOS.ai|theGTMOS.ai|theContentOS.ai
built with Next.js · Tailwind · Claude · Remotion