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

相关推荐
mayaairi3 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen4 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
BillKu4 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss
默_笙5 小时前
❗ 给金鱼装记忆(上):从白板到笔记本,AI 的短期记忆生存指南
前端·javascript
兜里只有三分钱~6 小时前
翻卡_3D 的仪式感,和三个让它穿帮的写法
javascript·css·3d
mayaairi6 小时前
Vue2 组件通讯(四):v-model、scoped样式、mixins与plugins
前端·javascript·vue.js
前端炒粉6 小时前
DOM 常用 API 速查表
开发语言·javascript·ecmascript
星云API技术支持7 小时前
企业微信二次开发:如何建立统一的错误处理、日志与请求追踪机制
javascript·企业微信·ruby
mayaairi10 小时前
Vue2 组件通讯(二):ref、自定义事件与provide/inject实战
前端·javascript·vue.js
开开心心就好10 小时前
PDF图片去水印软件,支持批量处理页面
前端·javascript·人工智能·智能手机·pdf·语音识别