$ 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 计费。这是你做重活的地方。
在 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。
定时任务(追踪、监控、更新) -> Ollama 本地。运行频繁,输出是结构化数据,质量不重要。
对话、路由、记忆 -> Sonnet。足以应对实时交互,比 Opus 便宜 5 倍。
博文、文章、内容 -> Opus。质量就是产品,人类会阅读。
基础设施、调试、部署 -> Claude Code。订阅免费,需要完整的代码库上下文。
如果没有人类阅读输出,使用最便宜的可用模型。如果有人类阅读输出,使用你能负担得起的最好模型。如果涉及基础设施,使用 Claude Code。
模式
构建时静态 JSON 模式
这是让仪表盘在 Vercel 上运行的关键架构模式。问题:读取本地文件(如
解决方案:在构建时生成静态 JSON。提交 JSON。Vercel 直接提供服务。
生成器脚本读取所有本地数据源(Markdown 文件、定时任务配置、Git 日志)并将结构化 JSON 写入
五个 JSON 文件覆盖整个仪表盘:
~/.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 命令。
之后:每个 API 路由从相对的静态 JSON 文件读取。
没有 execSync。没有绝对路径。没有文件系统依赖。在任何地方都能运行。生成器脚本在构建时处理所有本地文件系统访问,因此生产环境的 API 永远不需要它。
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 中的
数据新鲜度取决于定时频率。每 30 分钟意味着仪表盘永远不会过时超过 30 分钟。对于状态仪表盘来说,这完全足够了。你不需要 WebSocket 或实时订阅。定时任务加 Git 推送加重新构建,简单、可靠且免费。
prebuild 在 next 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 中的真实复选框。没有模拟数据。没有本地依赖。直接上线。
之后: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 推送加重新构建,简单且可靠。
从无服务器函数读取本地文件。你的生产服务器不是你的笔记本电脑。绝对路径在 Vercel、AWS Lambda 或任何云平台上都会失败。在部署前生成数据。
数据缺失时没有回退。始终返回空数组而不是崩溃。如果 tasks.json 还不存在,返回 []。仪表盘应该渲染为空,而不是报错。
在 API 路由中运行 Git 命令。execSync("git log") 在本地工作但在生产环境中失败,因为那里没有 Git 仓库。将其移到构建时。
过度设计刷新机制。状态仪表盘不需要 WebSocket。定时任务加 Git 推送加重新构建,简单且可靠。
knowledge guide
相关条目