Lynkr
一个自托管的 LLM 网关,通过 JSON 压缩、语义缓存和按复杂度分级路由,为 AI 编程工具大幅削减 token 消耗,且无需改动任何代码。
证据显示这是一个拦截全部 AI 工具流量的本地代理:它会压缩、缓存并改写请求/响应(语义缓存、TOON 压缩、SSE 重塑),但未见最小化采集、用户确认流程或敏感数据脱敏的证据;数据流向(14+ 云厂商)有文档说明故给中等分;依赖安全有 CI 审计门禁和锁文件公共注册表检查支撑(但审计超时后 warn-and-pass);install.sh 以 curl|bash 执行、postinstall 脚本运行、prestart 可拉起 docker compose,属外部副作用但均有文档;无回滚机制说明;作者姓名见于 LICENSE(Vishal Veera Reddy),发布者身份未验证。
README 有详尽的常见启动错误与修复清单(pino-pretty、tier 警告、ECONNREFUSED 等),失败信息处理充分;大量测试脚本和 CI 矩阵支持自洽性,但存在文档内部不一致(provider 数量在 12+/14+ 间摇摆、docs/ 与 documentation/ 两套路径、版本叙述跨度大),扣分;依赖可用性由重试/熔断/降级测试文件名佐证。
受众与场景界定清晰(Claude Code/Cursor/Codex 用户,本地免费 vs 云端付费,wrap 模式),这是亮点,给满分;能力边界部分诚实(Baidu 标注 unverified、基准承认 home-field advantage),但顶层营销数字(84%、53%、对比 GPT-5)缺乏边界限定,扣分;路由触发条件描述详细(FORCE_REASONING、风险分类、agentic 检测)但均为声明未验证;环境适配覆盖 Node 20+、Docker、Homebrew。
Apache-2.0 全文存在,许可满分;FAQ/常见问题与安装说明非常详尽;信息架构有瑕疵(文档目录两套命名、链接可能失效);无 CHANGELOG 文件,版本发布靠工作流,扣分;维护责任仅一名具名作者,无治理/贡献者/更新承诺说明,扣分;命名(lynkr/lynkr-setup/lynkr-statusline)稳定。
输出可用性有 dashboard、statusline、CSV 导出等证据;边际价值声明(token 节省、路由省钱)具体且可运行基准脚本可复核,但均为未执行声明,静态审查只能给中等分;成本收益叙事相对 LiteLLM 有数据支撑但源自自家基准。
声明基本可追溯到命名脚本(benchmark-tier-routing.js、docs/benchmarking.md)和配置(litellm-autorouter-v2.yaml);但第三方佐证薄弱——引用的 RouterArena 'ICLR 2026' 基准日期在未来且仓库归属不可核实,扣分;事实与推断区分做得较好(unverified 标注、fairness notes、明确 'not measured yet ≠ all-clear')。
- 该代理默认拦截并缓存全部 AI 工具流量(含代码、密钥可能出现的提示内容),敏感数据会流向所配置的任意云厂商,企业环境使用前需审查数据出境路径;
- 语义缓存将提示/响应留存本地,未见加密或清理说明;
- install.sh 采用 curl|bash 直接执行、postinstall 运行原生模块检查脚本,供应链风险需自行评估;
- 所有性能与省钱数字均来自项目自带基准,第三方 RouterArena 基准来源存疑(日期在未来),静态审查未验证;
- CI 审计在 npm 注册表故障时降级为警告通过,不构成干净的安全审计;
- 无 CHANGELOG 与回滚机制说明,升级前请备份 .env 与本地缓存数据。
这个 Agent 能做什么,适合哪些场景?
Lynkr(GitHub: Fast-Editor/Lynkr)是一个基于 Node.js 20+ 的自托管 LLM 网关,以 HTTP 代理形式部署在本地 8081 端口,拦截 Claude Code、Cursor、Codex CLI、Cline、Continue 等编程工具发出的请求。它在请求到达模型前做四件事:剥离未使用的工具、用 TOON/RTK 压缩大型 JSON 工具结果(官方基准称减少 84% token)、以语义缓存命中重复查询(官方称 171ms、零 token 计费)、按请求复杂度在 SIMPLE/MEDIUM/COMPLEX/REASONING 四个层级间路由到 14 家以上供应商(含 Ollama、llama.cpp、LM Studio 等本地免费选项,以及 Bedrock、Azure、OpenRouter、Databricks 等)。路由决策由锚点嵌入分类器加本地 LLM 难度分类器驱动,并具备会话粘滞与自动升级机制。内置 dashboard 可查看支出、层级分布、路由准确率与请求日志。采用 Apache-2.0 许可,支持 npm、Homebrew、Docker 和源码安装。
Lynkr 以 lynkr start 启动后在 http://localhost:8081/v1 暴露 Anthropic 兼容端点,编程工具只需把 Base URL 指向它即可工作。请求进入后依次经过:工具精简(剔除未用工具,官方称工具密集请求省 53% token)、TOON 二进制压缩大型 JSON 工具结果、语义缓存查重、由锚点嵌入分类器加本地 LLM 难度分类器(qwen2.5:3b)组合的意图评分器判定层级,然后按 .env 中的 TIER_SIMPLE 到 TIER_REASONING 配置路由到对应供应商。支持 lynkr wrap claude 包装模式,用会话指纹做粘滞路由并自动升级。所有层级均支持 SSE 流式传输(原生透传与跨格式转换两种机制)。内置 MCP 集成、Titans 风格记忆系统、基于 LiteLLM 价格注册表的成本追踪、可选的 Graphify AST 代码分析,以及 /dashboard 处的遥测面板和 lynkr-statusline 状态栏。
- Claude Pro/Max 订阅用户想把简单请求分流到免费的本地 Ollama 模型,让订阅额度只用于真正复杂的任务。
- 重度使用 Cursor 或 Codex CLI 的开发者,日常 grep、文件读取和测试输出产生大量 JSON 工具结果,需要压缩以降低成本。
- 希望在 Databricks、Azure 或 Bedrock 等公司基础设施内统一路由团队 AI 编程工具流量的工程负责人。
- 预算敏感的自由开发者,想用 Ollama/llama.cpp/LM Studio 实现完全免费、离线的编程辅助。
- 需要审计 AI 编程支出的团队,可利用内置 dashboard 查看节省金额、层级混合、路由准确率和按会话的成本明细。
- 想要验证路由质量的用户,可运行
node benchmark-tier-routing.js(含 19 个场景的路由回归测试)对比 LiteLLM。
这个 Agent 有哪些优点和局限?
- TOON JSON 压缩是具体差异点:官方基准中 60 项 grep JSON 从 3,458 token 压到 427 token(87.6%),LiteLLM、OpenRouter 均无此功能。
- 分级路由带验证级联(FORCE_REASONING 正则、风险分类器、代理检测、锚点嵌入加本地 LLM 分类器),自报 11/11 路由正确,且分数只基于清洗后的用户文本,不受工具模式影响。
- 语义缓存命中官方实测 171ms 且零 token 计费,近似重复提示可直接命中。
- 支持 4 个本地供应商(Ollama、llama.cpp、LM Studio、另有本地选项)实现完全离线免费使用,同时可路由到 14+ 云供应商。
- 内置 dashboard 不只展示支出,还展示相对旗舰模型反事实成本的节省额、路由准确率自审计和按过往超支排序的证据型建议。
- 零代码改动,对 Claude Code、Cursor、Codex 是即插即用的 Base URL 替换。
- 性能声明主要来自项目自带的基准脚本和自述第三方数据(RouterArena、与 LiteLLM 的对比),基准场景源自 Lynkr 自己的回归套件,存在主场优势;独立验证有限。
- 路由质量依赖嵌入模型和本地 LLM 分类器,预热分类调用约 500ms,本地分类模型不可用时部分级联环节失效。
- 运行需要 Node.js 20+ 的常驻本地服务,占用 8081 端口;使用 Ollama 等本地后端还需额外安装与内存(大模型可能超出 RAM)。
- 部分供应商配置未经验证,README 明示 Baidu Qianfan 为 unverified(未对真实密钥探测)。
- 分层配置(TIER_*)缺失只出警告但功能降级;多个高级功能(Graphify 需要 Rust 编译、语义缓存、记忆系统)需要额外安装或配置。
如何安装或部署这个 Agent?
npm 全局安装(推荐):npm install -g lynkr。其他方式:一行脚本 curl -fsSL https://raw.githubusercontent.com/Fast-Editor/Lynkr/main/install.sh | bash;Homebrew brew tap fast-editor/lynkr && brew install lynkr;Docker git clone https://github.com/Fast-Editor/Lynkr.git && cd Lynkr && docker-compose up -d;或源码安装(clone 后 npm install && cp .env.example .env && npm start)。需要 Node.js 20+;若使用 Ollama 需先安装并 ollama pull qwen2.5-coder:latest。
如何使用这个 Agent?
1) 运行 lynkr init 进入交互式向导,回答四个问题(使用模式、各层级的模型选择、凭据、路由调节项)后自动生成 .env;或手动从 .env.example 复制编辑,例如 MODEL_PROVIDER=ollama 加 TIER_SIMPLE=ollama:qwen2.5:3b 等层级配置。2) lynkr start 启动服务,默认端口 8081。3) 连接工具:Cursor 中将 Base URL 覆盖为 http://localhost:8081/v1(API Key 填任意值);Codex CLI 在 ~/.codex/config.toml 设置 base_url = "http://localhost:8081/v1";Claude Code 用 lynkr wrap claude 包装启动。4) 访问 http://localhost:8081/dashboard 查看支出与路由遥测。可选:PROMPT_CACHE_ENABLED=true 和 SEMANTIC_CACHE_ENABLED=true 开启全部优化。
这个 Agent 与同类方案有什么区别?
README 提供了与 LiteLLM、OpenRouter、PortKey 的功能对比表,并附基准数据:在与 LiteLLM v1.94 Auto Router v2 的同后端对比中,LiteLLM 启发式路由 11 场景仅 4/11 正确且系统性向过便宜层级欠路由,其 LLM 分类器每请求需额外付费 GPT-5.2 调用;Lynkr 自报 11/11。LiteLLM 需要 Python + Docker + PostgreSQL 技术栈,Lynkr 只需 Node.js。OpenRouter 是 SaaS 不可自托管且无本地模型支持。安装方应根据自己工作负载验证这些数字。
常见问题
使用 Lynkr 需要花多少钱?
必须配置全部四个层级才能工作吗?
lynkr init 向导可以轻松生成完整配置。它怎么接入我现有的 Claude Code 或 Cursor?
lynkr wrap claude 包装启动;Cursor 在 Settings → Models 中把 Base URL 覆盖为 http://localhost:8081/v1,API Key 填任意值;Codex CLI 修改 ~/.codex/config.toml 中的 base_url。均为零代码改动的配置替换。