【笔记】cllama:搜罗万象当LLM api server测qwen3.8:flash-next

cllama:搜罗万象当LLM api server

TL;DR cllama

先别急着看代码。我想先讲个故事。

这一切是从"抠门"开始的

我有一台很普通的服务器------没有 GPU,只有 CPU,但它在公网上,有个公网 IP,可以连着腾讯的 IMA。这台机器常年安静地跑着 bge-m3 做 embedding,把知识库向量化,等着被检索。

问题来了:IMA 需要一个能对话的模型,啥?每天100算力,我可是薅了一个月,每天领100然后尽量用到100把伤寒论的书自动看了一遍,总结了各种知识。但是只要不够了它会自己停下来比如用了70,另30死活不让用就过期了;我的公网服务器又跑不动大模型,但是IMA偏偏需要指定公网api。而我手头有台游戏本 Windows,能跑 qwen3.8:27b------但它在家里的 NAT 后面,没有公网地址,IMA 够不着它。薅不动算力了,还是自建infra吧。

这就像家里有台好车,但车库门只朝内开。怎么办?

于是 cllama 出生了

cllama 是一个轻量的 LLM API 转换器。它挡在一堆 LLM 后端前面(Ollama、任何 OpenAI 兼容服务器、任何 Anthropic 兼容服务器),然后把这些后端统一重新暴露成 Ollama API、OpenAI API 和 Anthropic Messages API 三套接口。你注册一个后端,三套客户端就都能用了------一个只有 Ollama 的服务器,瞬间被 OpenAI 和 Anthropic 的客户端接管。

复制代码
                 ┌──────────────────────────────┐
 Ollama/OpenAI ─▶│  公网 cllama(对外暴露)        │
 客户端           │  -name qwen3.8:27b,embeddings│
                 └─────────────┬────────────────┘
                               │ 链式(outbound SSE)
                 ┌─────────────▼─────────────┐
                 │  Windows 上的 cllama 子节点 │
                 │  (NAT 后面,无需入站连接)   │
                 └─────────────┬─────────────┘
                               │
                        本地 ollama: qwen3.8:27b

子 cllama 主动拨出连接到父 cllama,用自己本地的 GPU 来服务父节点的流量。子节点永远不需要公网地址------连接是长连接的 SSE 隧道,断了自动重连。于是我的 Windows 开机后,跑一句:

sh 复制代码
./cllama -listen :11435 -name local-qwen \
  -parent 'https://token@public.example.com:11434/qwen3.8:27b'

再把自己的本地 Ollama 注册成它的后端:

sh 复制代码
curl -X POST http://localhost:11435/admin/backends -d '{
  "type": "ollama", "endpoint": "http://127.0.0.1:11434",
  "model": "qwen3.8:27b", "upstream_model": "qwen3.8:27b"
}'

完事。现在公网服务器上的 qwen3.8 这个"虚拟模型",任何请求都会顺着隧道被转发到 Windows 上真正跑着的 qwen3.8:27b。家里那台车,终于从车库后门开出去了。额,我是不是造了一个写着mock名字qwen3.8:plus然后后面注册一个qwen3.8:27b的东西出来了 -_-///

消费级设备 vibe coding 生成 cllama

说实话,cllama 是我用 qwen3.6:35b + qwen3.8:flash-next 两个模型"vibe coding"出来的。过程没什么高深的东西,就是不停地把问题丢给模型,让它们干活:

  • qwen3.6:35b 负责快速生成第一个demo版本,以最快的速度把代码写好。按照我设想的cllama有哪些go文件,它往里面填就好了。
  • qwen3.8:flash-next 负责认真写代码,先擦好qwen3.6:35b留下来的问题,比如编译不通过等,再一点一点bug fix和重构。

你别说,qwen3.6:35b 的速度刚刚的,最快到120 token/s,最慢么 40 token/s。到了qwen3.8:flash-next,最快大概20 token/s,最慢大概 13 token/s,比antirez的混合2-4bit量化的deepseek-v4-flash稍微慢一点。这次是纯尝试下qwen3.8:flash-next,所以就没让deepseek登场。因为vibe coding,bug肯定还是不少的...我就顺手修过2行的2个bug。但是有一说一,qwen3.8的编译错误基本上很少,确实和opus 4.6有点比头了。本地现在能有这么聪明的模型,我觉得后面agent的外置知识和搜索引擎是相当重要的东西了。

小插曲是前段时间研究qwen3.6:35b给agent跑,然后关了flash attention;等3.8 flash next一出来下载完,再编译好llama.cpp一跑,Q4的80GB直接报内存不够,大哥我是128GB内存啊!啊,是了,flash attention O(N^2) 惹的祸。不过qwen迟迟不给qwen3.8:35b是不是怕大家都买本地设备去了哈...

实用的地方

  • 一个注册,三套 API 。注册一个 Ollama 后端,OpenAI 客户端能调、Anthropic 客户端能调、Ollama CLI 也能调。ollama runollama list 甚至能对着 cllama 直接跑。
  • Claude Code 兼容 。把 ANTHROPIC_BASE_URL 指向 cllama 的 /api/anthropic,Claude Code 就能驱动任何后端,不管上游是不是 Anthropic 原生。
  • Web UI 内嵌在二进制里/ui 打开就是一个单页面板:实时请求队列、模型↔后端映射、系统设置,全走 SSE 实时刷新,不用轮询。
  • 能力声明。每个后端可以声明自己能干什么(chat / vision / tools / thinking / embedding),代理按交集对外承诺,绝不吹牛。

无缝接入:IMA 直连你自己的模型

现在回到那个场景,把整条链拼起来:

  1. 服务器 (公网、纯 CPU):跑 cllama 父节点 + bge-m3 embedding,对外暴露 qwen3.8embeddings 两个模型,带上 -token-parentauth 做认证。
  2. Windows(NAT 后面、有 GPU):开机后作为 cllama 子节点反向隧道注册 qwen3.8:27b 给服务器。关掉,隧道自动断开,服务器上的请求排队等它回来。
  3. 腾讯 IMA(面向公网的智能体,连着知识库):它需要的不是"连到 cllama 服务器"------它需要一个 OpenAI 格式的 API 地址。

手机端的IMA里把 API 地址填成 cllama 的 /api/openai,再配上 token,IMA 就直接以 OpenAI 客户端身份访问你自己的模型了。再写个skill让它查询vector知识库里的检索由 bge-m3 在服务器上本地完成并投影到postgres里;而真正"会说话"的推理,则顺着隧道落到 Windows 的 qwen3.8:27b 上。

于是生活变成了这样:平时 Windows 关着,IMA 和服务器安静地待机;等我有空,把 Windows 一开,隧道自动接上,IMA 立刻就能通过公网 API token 直连我的私有模型去处理知识,中间只靠 cllama 这条隧道牵着。没有 GPU 租赁,没有复杂的端口映射,直接开始大规模学习新知识,探索新世界咯。从今天起,关心粮食和蔬菜,中医和种地我来啦...

好了,用了这么长时间大模型,第一次开始用模型提速写文章,之前怎么都在手搓我也很是诧异;看到ASCII的流程图,一眼AI哈。这篇文章先让3.6生成了一遍,就是技术description,再用3.8也不太行,切成deepseek重写了,结果还是给我一顿胡扯,尤其是IMA的部分。

相关推荐
TinyMemory14 分钟前
Java 面向对象核心入门(六):this 关键字完全解析
java·笔记·面向对象·java新手·this关键字
淬炼之火19 分钟前
笔记:Visually-Guided Policy Optimization for Multimodal Reasoning
人工智能·笔记·算法·机器学习·语言模型·自然语言处理
特立独行的猫a31 分钟前
仓颉语言原生 Coding Agent:cjh · 仓颉语言实现的 Harness
ai·agent·harmonyos·仓颉·cangjie·harness
一条破秋裤35 分钟前
STM32 学习笔记:中断系统与 EXTI 外部中断
笔记·stm32·学习
摇滚侠40 分钟前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发应用 阅读笔记 21
java·spring boot·笔记
xieliyu.1 小时前
计算机网络‑IP 协议解析:核心特性总结
网络·笔记·网络协议·学习·tcp/ip·计算机网络
陈年老古董1 小时前
PyTorch 实现 MNIST 手写数字识别学习笔记
笔记·python·深度学习·学习
风123456789~1 小时前
【架构设计】3.2 信息化系统的典型应用 3/6
笔记·系统架构设计
风123456789~1 小时前
【架构设计】第3章 信息系统基础知识 1/6
笔记·系统架构设计