ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理

# ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理

开源地址:github.com/371684029/ll-llm

## 背景

日常开发中经常要在不同 LLM 后端间切换------Cursor CLI 做代码、OpenCode 跑分析、OpenAI 调接口。每个后端格式不同、认证不同、模型名不同,切一次改一堆配置。更麻烦的是,大多数 AI 工具(Continue.dev、Aider、VS Code 插件)只认 OpenAI API 格式。于是写了 ll-llm------零运行时依赖的 HTTP 代理,统一包装成 OpenAI 兼容接口。

## 一句话讲清楚

把任何 LLM 后端包装成标准 OpenAI API,对接任何 OpenAI SDK 客户端。

复制代码
你的代码 / IDE 插件
      │  POST /v1/chat/completions
      ▼
   ll-llm (端口 6666)
      │
      ├── cursor Provider   → spawn cursor agent
      ├── opencode Provider → HTTP API (规划中)
      └── openai Provider   → HTTP API (规划中)

## 目前做了什么

第一个版本完成 Cursor CLI 后端代理:模型映射(gpt-4o/claude-3.5-sonnet → Cursor 内部 ID)、流式+非流式双模式、base64 图片多模态、agent 模式切换(ask/agent/plan)、三种密钥配置方式 + 启动格式校验。

复制代码
from openai import OpenAI
client = OpenAI(base_url="http://localhost:6666/v1", api_key="any-key")
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "解释量子计算"}],
)

## 技术设计

1. 零运行时依赖------只用 node:http、node:child_process、node:fs,打包 15KB,不需要 node_modules。

2. Provider 可插拔架构------核心接口只有两行:

复制代码
export interface LLMProvider {
  readonly name: string;
  chat(options): AsyncGenerator<ChatChunk>;
}

路由层 handleChat 只调 provider.chat(options),不碰内部实现。加新后端零改动路由。

3. 模型解析三层优先级------显式 mode 字段 > 模型名后缀(gpt-4-ask) > 默认 agent。

4. Fail-fast 启动校验------密钥缺失或格式不对直接 exit(1),避免"服务跑了才发现 500"。

## 如何扩展新后端

三步:1) 写 ~50 行实现 LLMProvider 接口 → 2) index.ts 注册一行 → 3) model-map.ts 加映射。路由代码不动。

## 部署

复制代码
tar -xzf ll-llm.tar.gz && cd dist
echo 'CURSOR_API_KEY="crsr_你的密钥"' > .env
node index.js   # 无需 npm install

## 后续计划

接入 OpenCode Go 的 deepseek-v4-pro 作为第二个后端,改 model 字段即可在多个后端间透明切换。


GitHub: github.com/371684029/ll-llm | MIT | Node.js ≥ 20 + Cursor CLI

相关推荐
AI砖家5 分钟前
React Native 打包体积优化指南:在保证功能正常的前提下把包压到最小
javascript·react native·react.js·打包优化
无糖可可果1 小时前
从零看懂 JWT 登录鉴权:一个 React Demo 的完整拆解
前端·javascript
BreezeJiang1 小时前
JWT 登录不是存个 token:React 鉴权真正要闭合的是一条数据流
javascript·react.js·axios
四千岁1 小时前
稀疏向量BM25Retriever不支持中文怎么办?jieba来帮忙
前端·javascript·后端
这是个栗子1 小时前
【JS代码分析】前端鉴权基础:Token 的本地存储与状态重置实践
开发语言·前端·javascript
界面开发小八哥2 小时前
界面控件DevExpress Blazor v26.1新版亮点 - TreeList & 数据编辑器
javascript·编辑器·.net·界面控件·blazor·devexpress·用户界面
风月说与山鬼2 小时前
二、uni-app入口文件(main.js)
javascript·uni-app
mCell11 小时前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
伟大的兔神12 小时前
我做了一个本地优先的 AI 图片工作台:Loomora v1.0.0 正式发布
前端·javascript·vue.js
fangzhanpeng16814 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript