惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
量子位
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
博客园_首页
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC

DEV Community

Membangun Kompetensi dan Relasi: Mengapa Ekosistem Kampus Itu Penting Codex Team Usage SOP How to Actually Become a Programmer: The Hard Part Nobody Wants to Explain Building a Production-Style Multi-Tool AI Agent with Python, Flask, React & Gemini AI The Caretaker Sandbox: An Offline-First Visual Playground & Template Engine powered by Gemma 4 # Building Instagram OSINT Projects with HikerAPI Your AI can read. Gemma 4 can see The Battle of the Senior Dev: Why AI Gives You Wings But Only If You're Ready to Pilot HiDream Raw Output Failed Tried Dev-2604 VRAM Math Killed It Won with a Prompt Enhancer Instead I Finally Finished a Project I Abandoned — And GitHub Copilot Helped Me Ship It SafeSMS: On-Device Threat Detection with Gemma 4 E4B, no internet required I Built OpenKap — A Loom Alternative for Small Teams Who Just Want to Ship Gemma 4 is Here: The Dawn of Local Multimodal Reasoning Offline-First Flutter: How We Built a CRM That Manages 100K+ Leads With No Internet Memory for Agents: When Vectors Meet Graphs, Bugs Drop 4 The Rise of Production-Grade AI Infrastructure I ran my idea-validation product through its own validator. The verdict was PIVOT. We Built an Agent Commerce API. Google I/O 2026 Changed Our 3-Month Roadmap in 24 Hours. "My Partner's Memory Was Full. I Didn't Know — Until We Tried to Talk." I’m a Front End Web Developer Learning Machine Learning From Scratch Laravel Waiting Request I Built a Chrome Extension to Track How Long You Actually Spend on Each Tab Why Google Can't See Your React Breadcrumbs (And the 4-Line Fix) AI Travel Assistant Powered by Gemma 4; With Streaming, Image Input, and Visual Recommendation Cards Microsoft tried to kill the printer driver. Healthcare said no. The Blueprint Beneath the Blueprint: Designing Data Model and Choosing Its Database REST APIs vs Webhooks in Telecom Billing - Which One Actually Makes Sense? Accounting Made Simple: AI-Powered Financial Insights of Japanese Companies with Gemma 4 The append-only AST trick that makes Flutter AI chat actually smooth Designing the Future of Payments — Why XML Still Matters in the Age of APIs From Legacy to Live — Reviving XMLPayments with GitHub Copilot Two Weeks Into Learning Solana XMLPayments — The Hidden Backbone of Modern Financial Orchestration AI Agents in Practice — Read from the beginning Reviving My Gemma Agentic Framework: From Prototype to Polished Repo Smart Contracts Demand Better Infrastructure: Building on contract.dev Self-Hosted LLM Tool Calling: Forge and the Build-vs-Buy Decision ORA-00072 오류 원인과 해결 방법 완벽 가이드 OpenWA for CTOs: Self-Hosted WhatsApp Gateway Trade-Offs NotebookLM Automation With notebooklm-py: Useful, But Classify Data First Docker v29.5.x Operator Upgrade Checklist Coding-Agent Instruction Design: The CLAUDE.md File That Prevents Rework When I Finally Realized My Runtime Was Holding Me Back GnokeOps: Host Your Own AI House Party The Death of Static Rate Limiters: Why Your Java Virtual Threads Need BBR-Style Adaptive Concurrency AI Agents in Practice — Part 2: What Makes Something an Agent Stop scattering LLM SDK/API calls across your codebase. Here is the 2-file rule that fixed mine Beyond Prompts: Structuring AI Workflows for Real Frontend Engineering From an Abandoned Hackathon Project to an AI Study Workspace 🚀 Terraform with AI: Build AWS Infra (Cursor + MCP)
我构建了一个能决定与哪个AI交谈的AI——它从我的客厅里7/24不间断运行
Anup Sharma · 2026-05-23 · via DEV Community

今天早上我醒来时,我的AI代理审核了印度纳加尔的14家餐厅评价,更新了一个共享的Google表格,签署了我已经忽略了一周的20页PDF文件,并编写了一个bash脚本来清理我的服务器日志.

我并没有要求它做任何这些事。它只是...现在会自己做事了.

认识OpenClaw — 我那个一直运行的自主代理,住在树莓派上,接入Discord,全天候运行。它管理我的记忆,处理研究,编写代码,编辑文档,通过抓取实时评分找出班加罗尔最好的周末去处——基本上,它用自动驾驶模式运行了我一半的人生。

但几周前,我注意到一些让我困扰的事情。

我问它:"写一个Python脚本解析JSON日志。" 简单的编码任务。它向一个云API发送了请求,等待了3秒钟,消耗了我购买的token,然后返回了一个答案——而我的Mac Mini上正好有一个完全能用的本地LLM在闲置,就在三英尺远的地方。

然后我问: "逐步思考一下我的通知系统在事件驱动和轮询架构之间的权衡。" 这是一个困难的推理问题。我想让它去一个前沿模型。这是值得用token的。

同一个代理。同一个终点。完全不同的需求。

那就是时一个愚蠢的想法击中了我:

如果系统可以在请求甚至到达模型之前就能确定使用哪个大脑呢?

结果,这根本不傻。而且它花了我一个周末、一个树莓派、一个Mac Mini、50行Python代码和一个开源网关才建成。

这是怎么做到的。

设置

这是我客厅里运行的设备:

树莓派 → 运行OpenClaw,我的自主代理。它从Discord获取输入,管理上下文、内存,并协调所有事情。
Mac Mini → 大脑农场。运行三项事务:
Ollama with qwen2.5-coder:7b — 一个不会离开我网络的本地编码模型
AgentGateway — 来自Google的开源AI网关,处理路由、认证、可观测性
轻量级Python路由器 — 我用约50行代码编写的“意图分类器”
魔法?OpenClaw不知道这一切正在发生。它只是向一个端点发送请求。在幕后,系统处理剩下的部分。

架构

三个模型。三个价格点。一个统一的端点。OpenClaw只需击打http://192.168.1.15:1234/v1/chat/completions然后忘记它。

为什么是AgentGateway?

我评估了几个选项——原始的Envoy、带Lua脚本的Nginx,甚至从头构建一个完整的代理。但AgentGateway由于几个原因脱颖而出:

它开箱即给您的:
协议转换 — 它在前面端宣称兼容 OpenAI 的 API,但在后面端可以与 Gemini、Vertex AI、Bedrock、Ollama 等进行通信。我从未编写过任何特定于提供者的代码.
后端认证 — API 密钥在网关级别进行管理。OpenClaw 从不看到或存储任何 API 密钥。我只需在配置中设置 backendAuth: key: $GEMINI_API_KEY,它就会处理其余部分.
模型别名 — OpenClaw 在每个请求中都发送模型:"inteli-llm"。AgentGateway 默默地将它翻译为 qwen2.5-coder:7b、gpt-4o 或 gemini-2.5-flash,具体取决于匹配的路由。客户端对此一无所知。
可观察性 — 每个请求都会记录提供者名称、模型、令牌计数和延迟。我能精确看到有多少令牌发送给 OpenAI,有多少留在本地。
提示保护& 速率限制 — 内置基于正则表达式的PII掩码、基于webhook的内容审核和速率限制。我免费获得的企业级功能。
加权负载均衡&故障转移 — 如果Ollama崩溃(它会发生),我可以配置自动故障转移到云端模型。无停机时间。
它目前无法实现的功能: 内容感知路由。AgentGateway 基于路径、头部和方法进行路由——这是网关的正确设计。它不会窥探你的请求体来决定将其发送到何处。这是一个特性,而不是缺陷——网关应该是快速且协议级的,而不是解析 JSON 负载。

但我需要内容感知路由。所以我不是在寻找其他工具,而是扩展了它。

能让一切运行起来的50行路由器

我编写了一个微型的FastAPI代理,它位于AgentGateway之前。这是它的功能:

  • 截获传入的OpenAI兼容请求
  • 读取聊天中的最后一条消息
  • 使用简单的关键字匹配+提示长度启发式算法进行意图分类:
    • 包含 codepythonscriptfunctionbug? → 编码
    • 包含thinkanalyzereasoningdeduce? 或提示> 400 个字符? → 推理
    • 其他所有内容? → 简单
  • 注入一个 x-intent HTTP 头
  • 将请求原样转发给AgentGateway 就这样。没有分类的机器学习模型。没有向量数据库。没有语义相似度。只是传统的关键字匹配,虽然它只有90%的有效率——但对于家庭实验室来说已经足够了。
coding_keywords = ["code", "python", "javascript", "bash", "script", "function", "bug"]
reasoning_keywords = ["think", "analyze", "explain in detail", "reasoning", "logic", "deduce"]

if any(k in prompt_lower for k in coding_keywords):
    intent = "coding"
elif len(prompt) > 400 or any(k in prompt_lower for k in reasoning_keywords):
    intent = "reasoning"
else:
    intent = "simple"

进入全屏模式 退出全屏模式

成本方程

这套设置实际为我节省了这些:

意图 模型 运行位置 每1M个token的成本
编程 qwen2.5-coder:7b 本地(Ollama) $0
简单Q&A gemini-2.5-flash Google Cloud ~$0.15
深度推理 gpt-4o OpenAI ~$2.50

在这个设置之前,每个请求都发往云API。现在,大约60-70%的查询都留在本地——编程问题、快速查找、简单的格式化任务。它们快速、免费且私密.

只有在我确实需要时,才会调用昂贵的推理模型。而中端的Gemini处理中间的所有事务。

我的每月API账单显著下降,而且本地响应实际上更快了。

设计选择 & 它们为何有效

1. 基于头的路由胜过基于路径的路由 最初,我打算使用URL路径 (/coding/reasoning/simple) 并通过URL重写进行剥离。但头部注入更干净——原始请求路径保持完整,而且AgentGateway的头部匹配是一流的.

2. 代理端分类,而非网关端 我本可以尝试使用 AgentGateway 的 CEL 表达式或 ExtProc 策略进行分类。但那些是在后端选择之后运行的,而不是之前。将分类保持在单独的轻量级层意味着我可以更换算法,而无需触碰我的网关配置.

3. 关键词启发式方法胜过机器学习分类器 我能用一个小分类器模型,甚至 RouteLLM 来实现更智能的路由吗?当然可以。但对于家庭实验室来说,关键字匹配是:

  • 零延迟开销
  • 零依赖
  • 易于调试(只需查看日志)
  • 对我的用例来说出人意料地准确

4. 一个统一的模型名称 OpenClaw 发送模型:"inteli-llm" 用于一切。AgentGateway 的 modelAliases 功能按路由翻译它。这意味着我可以更换后端模型,而无需触碰 OpenClaw 的配置的一行代码。上周是 gemini-1.5-flash,这周是 gemini-2.5-flash。OpenClaw 从未知道。

下一步是什么

更智能的分类 — 也许是一个微型的本地分类器模型,甚至使用响应的前几个标记在更好的模型上重新分类并重试。
指标面板 — AgentGateway已经发出OpenTelemetry跟踪。我想连接一个Grafana面板来查看哪些模型在处理什么,以及延迟和标记细分情况。
故障转移链 — 如果 Ollama 负载过重,自动回退到 Gemini 执行编码任务。AgentGateway 支持为这个目的设置优先级组。
更多代理 — OpenClaw 只是开始。我想为不同领域运行专门的代理,所有流量都通过同一个网关路由。

总结

你不需要一个 Kubernetes 集群或一个 $10K 的 GPU 服务器来构建一个多模型 AI 系统。一个树莓派、一个 Mac Mini、一个开源网关和 50 行 Python 代码就让我实现了:

✅ 一个始终在线的自主代理 ✅智能路由 ✅跨越 3 个不同的 LLM ✅本地优先以确保隐私和速度 ✅需要计算能力时连接云端 ✅零 API 密钥暴露给客户端 ✅一个我实际上不介意支付的月度账单

最好的部分是什么?整个配置就是一个YAML文件和一个Python脚本。没有Docker。没有Kubernetes。没有Terraform。只是在Mac Mini上运行两个进程,在Pi上运行一个代理。

有时候最好的基础设施就是你能在餐巾纸上解释清楚的。

如果你在构建类似的东西或者想看看配置文件,留言一下——很乐意分享完整设置。

AI #家庭助手 #大语言模型 #代理网关 #Ollama #OpenAI #Gemini #家庭实验室 #公开构建 #MacMini #树莓派 #人工智能工程