Skip to content

Repository files navigation

longcat2api

Node.js + SQLite 实现的 LongCat 网页端 → OpenAI 兼容 API 网关。

能力 说明
OpenAI Chat POST /v1/chat/completions 流式 / 非流式
OpenAI Responses POST /v1/responses 流式 / 非流式
模型列表 GET /v1/models
账号池 Cookie / passport_token_key 导入,SQLite 持久化
保活 定时 session-create / user-current 探测
临时邮箱 对接 cloudflare_temp_email
代理池 VLESS 订阅 + 本机 sing-box mixed 入站
注册机 邮箱准备 + 代理;Passport 完成后绑定 Cookie
管理面板 中文 Web UI(Basic 认证)

协议逆向参考:kylinpoet/longcat2apiJessonChan/longcat-web-apisfdzkj/LongCat-Web-API-Wrapper
工程结构参考:MiMo2API(临时邮箱 / 代理池 / 保活)


架构

Client (OpenAI SDK / CherryStudio / NewAPI)
        │  Bearer sk-xxx
        ▼
┌─────────────────────────────────────┐
│         longcat2api (Express)        │
│  /v1/chat/completions  /v1/responses │
│  账号池 · 保活 · 注册 · 管理面板      │
│              SQLite                  │
└──────────────┬──────────────────────┘
               │
     ┌─────────┴──────────┐
     ▼                    ▼
 oversea-V2            cn chat-completion-V2
 (免登录)              (Cookie 账号池)
     │
     ▼
 CF Temp Mail · sing-box 代理(注册/可选)

上游模式

模式 端点 鉴权
oversea(默认) /api/v1/chat-completion-oversea-V2 无需 Cookie
cn session-create + /api/v1/chat-completion-V2 passport_token_key 等 Cookie

可在配置 default_mode 切换,或在请求 body 中传 "mode":"cn" / 模型后缀 :cn


快速开始

环境

  • Node.js 18+
  • (可选)sing-box — 代理池
  • (可选)自建 Cloudflare 临时邮箱

安装运行

cd longcat2api
cp .env.example .env
cp config.example.json config.json
# 编辑 config.json:api_keys、admin_password、temp_mail、proxy_pool

npm install
npm start

默认:http://0.0.0.0:8080

  • 管理面板:http://localhost:8080/(用户名 admin,密码见 admin_password
  • 健康检查:GET /health

调用示例

curl http://localhost:8080/v1/chat/completions \
  -H "Authorization: Bearer sk-longcat" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "longcat-flash",
    "messages": [{"role":"user","content":"你好"}],
    "stream": false
  }'
curl http://localhost:8080/v1/responses \
  -H "Authorization: Bearer sk-longcat" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "longcat-thinking",
    "input": "解释一下 MoE"
  }'

模型别名

model 思考 搜索
longcat-flash / longcat-default
longcat-thinking / longcat-reason
longcat-search
longcat-reason-search / longcat-pro

协议说明(对话 / 保活 / 思考联网)

详见 docs/LONGCAT_PROTOCOL.md

主题 要点
海外注册 passport.mykeeta.com 邮箱 OTP(非 meituan 国内手机)
对话(唯一) session-create + chat-completion-V2 + Cookie(无免登
思考 / 联网 请求体 reasonEnabled / searchEnabled(0/1,无多档 effort)
保活 周期 session-create 探测 Cookie

模型别名:longcat-thinking(思考)、longcat-search(联网)、longcat-reason-search(两者)。

账号与保活

  1. 海外:邮箱在 passport.mykeeta.com 注册后回到 longcat.chat;或直接登录 longcat 选择海外邮箱
  2. DevTools → Application → Cookie,复制整段,或至少 passport_token_key
  3. 管理面板 账号 → 导入 Cookie,或:
POST /api/account/import-cookie
Authorization: Basic YWRtaW46YWRtaW4=
Content-Type: application/json

{"cookie":"_lxsdk_cuid=...; passport_token_key=...; _lxsdk_s=..."}
  1. 后台定时保活(默认 6h)调用 session 探测;连续失败会标记 invalid。

注册机说明

美团 Passport 注册含 Yoda 风控,无法保证纯 API 全自动完成。当前流程:

  1. 配置 临时邮箱 +(推荐)代理池
  2. 准备邮箱 / 批量准备 → 生成 temp-mail + draft 账号
  3. 用返回邮箱在浏览器完成 LongCat/美团注册登录
  4. 将 Cookie 绑定到对应 account_id

后续若补齐 Passport 协议,可在 src/services/register.js 扩展自动化钩子。


配置

config.json(也可用管理面板):

{
  "api_keys": "sk-longcat",
  "admin_password": "admin",
  "default_mode": "oversea",
  "keepalive_interval_seconds": 21600,
  "temp_mail": {
    "api_base": "https://apimail.example.com",
    "admin_password": "xxx"
  },
  "proxy_pool": {
    "enabled": false,
    "sub_url": "https://proxy.example.com/sub?token=xxx",
    "listen_port": 17890,
    "singbox_path": ""
  }
}

SQLite 默认路径:data/longcat2api.db


项目结构

longcat2api/
├── package.json
├── config.example.json
├── src/
│   ├── index.js              # 入口
│   ├── config.js
│   ├── db/index.js           # SQLite
│   ├── middleware/auth.js
│   ├── openai/               # 模型别名 + 协议转换
│   ├── routes/
│   │   ├── openai.js         # chat + responses
│   │   └── admin.js
│   └── services/
│       ├── longcatClient.js  # 上游客户端
│       ├── sseParser.js
│       ├── tempMail.js
│       ├── proxyPool.js
│       ├── register.js
│       └── keepalive.js
└── public/index.html         # 管理面板

管理 API(Basic admin)

方法 路径 说明
GET/POST /api/config 系统配置
GET /api/accounts 账号列表
POST /api/account/import-cookie 导入 Cookie
POST /api/account/:id/test 测试账号
POST /api/accounts/renew-all 全量保活
POST /api/account/:id/refresh-mail-jwt 从 Temp Mail 重新签发并保存单账号邮箱 JWT
POST /api/accounts/refresh-mail-jwts 批量重新签发邮箱 JWT(响应不含 JWT 明文)
POST /api/account/auto-register 单次注册准备
POST /api/account/auto-register-batch 批量异步任务
GET /api/account/auto-register-batch/active 当前活动注册任务(页面恢复与 single-flight)
GET/POST /api/temp-mail/* 临时邮箱
POST /api/proxy/start|stop|rotate|test 代理池

Oracle Cloud K8s 部署(mnnu 集群)

部署约定对齐 mimo2api / grok2api,清单在 GitOps 仓库:

D:\WorkSpace\Project\服务器管理\private\gitops\ircs-prod-config\longcat2api\

公网 https://longcat2api.mnnu.eu.org
命名空间 longcat2api
镜像 speedproxy/longcat2api:sha-<gitsha>(Oracle ARM64 / linux/arm64
运行时 Node.js 22 + Python 本地验证码运行时
状态卷 Longhorn PVC longcat2api-state/var/lib/longcat2api
节点 infra.mnnu/node-class=core-public
流式超时 HTTPRoute 标签 infra.mnnu/traffic-class=streaming-ai

本地私密凭据:

  • D:\WorkSpace\Project\服务器管理\private\longcat2api\credentials.env
  • D:\WorkSpace\Project\服务器管理\private\longcat2api\config.json

详细步骤见 GitOps 文档:

private/gitops/ircs-prod-config/docs/longcat2api-deployment.md

首次上线 checklist

  1. 推送本仓库并构建镜像(.github/workflows/docker-publish.yml
  2. ircs-prod-configlongcat2api/apps/longcat2api-application.yaml 推到 main
  3. 集群一次性创建 bootstrap / dockerhub Secret(见 longcat2api/README.md
  4. Cloudflare 增加 longcat2api.mnnu.eu.org 多 A 记录(与其它 *.mnnu.eu.org 相同 NLB)
  5. Argo CD 同步后访问 /health 与管理面板

K8s 环境变量(Secret)会覆盖 PVC 内 config.json 的密钥类字段,前缀统一为 LONGCAT2API_*


许可

MIT

About

LongCat web to OpenAI-compatible API (Node.js + SQLite)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages