WWW.YOUINFO.SITE
标签聚合 Apache

/tag/Apache

LinuxDo 最新话题 · 2026-06-11 19:58:53+08:00 · tech

PostgreSQL 14 到 Apache Doris 4.1.1 CDC 同步方案 本文档用于验证并实施 PostgreSQL 业务库 fudabd_common_plat_db.public.terminal_pos_202602 到 Apache Doris 分析库 fudabd_common_plat_db.terminal_pos 的数据同步。 实际验证环境要求 PostgreSQL 源端 PostgreSQL 版本:14。 连接地址: 127.0.0.1:15432 。 登录账号: postgres 。 登录密码: Fdbd@2013 。 源数据库: fudabd_common_plat_db 。 源 schema: public 。 源表: fudabd_user 。 主键字段: id 。 已开启 logical replication。 pg_hba.conf 已允许 Doris 所在机器或容器访问数据库和 logical replication。 PostgreSQL 账号具备 logical replication、publication、slot 操作权限。 Doris 目标端 Apache Doris要求 最低docker镜像版本 4.1.1 ,此版本支持Stream Job; Doris 版本: doris-4.1.1-rc01-b10073ad9ca 。 Doris @@version : 5.7.99 。 目标数据库: fudabd_common_plat_db 。 目标表: fudabd_user 。 目标表当前不存在,需要由方案一手动创建。 目标表需要支持 UPDATE 、 DELETE ,因此设计为 UNIQUE KEY 表。 同步要求 需要先全量初始化,再持续增量同步。 需要处理 INSERT 、 UPDATE 、 DELETE 。 当前只验证 terminal_pos_202602 单表,暂不处理后续每月新增分表。 单表数据量:日均约 500 万条。 延迟目标:10 秒内。 Doris Streaming Job 支持判断 Apache Doris 4.x 官方文档提供 CREATE JOB ... ON STREAMING ,支持以下两类模式: TVF Mode :使用 cdc_stream(...) 读取 PostgreSQL CDC,再通过 INSERT INTO ... SELECT ... 写入指定 Doris 表,适合单表 SQL 映射同步。 当前环境是 4.1.1-rc01 ,建议正式执行前在当前 Doris 集群验证 Streaming Job 语法和 FE 配置。 参考文档: CREATE STREAMING JOB : CREATE STREAMING JOB - Apache Doris PostgreSQL SQL Mapping Sync: PostgreSQL CDC with SQL Mapping - Apache Doris PostgreSQL Auto Table Creation Sync: PostgreSQL CDC with Auto Table Creation - Apache Doris Doris 4.1.1 Release Notes: Release 4.1.1 - Apache Doris 前置检查 PostgreSQL 配置检查 当前已确认 postgresql.conf 包含以下配置: wal_level = logical max_replication_slots = 10 max_wal_senders = 10 wal_sender_timeout = 0 执行以下 SQL 复核: SHOW wal_level; SHOW max_replication_slots; SHOW max_wal_senders; 检查源表主键: SELECT tc.table_schema, tc.table_name, kcu.column_name FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema WHERE tc.constraint_type = 'PRIMARY KEY' AND tc.table_schema = 'public' AND tc.table_name = 'terminal_pos_202602'; Doris 配置检查 登录 Doris FE MySQL 协议端口后执行: SELECT @@version_comment, @@version; SHOW FRONTEND CONFIG LIKE 'max_streaming_job_num'; 如果 max_streaming_job_num 为 0 或 Streaming Job 语法不可用,需要先调整 Doris FE 配置或切换到正式 4.1.1 镜像版本。 PostgreSQL JDBC Driver 准备 Streaming Job 需要 PostgreSQL JDBC Driver。建议将驱动放到 Doris FE/BE 都可访问的 HTTP 地址。 示例: postgresql-42.7.3.jar 本文 SQL 中使用 <PG_DRIVER_URL> 占位,执行前替换为实际地址,例如: https://maven.aliyun.com/repository/public/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar 源表结构 CREATE TABLE `fudabd_user` ( `id` bigint NOT NULL COMMENT "用户ID", `user_name` varchar(50) NOT NULL COMMENT "用户名", `password` varchar(255) NOT NULL COMMENT "密码(应加密存储)", `age` tinyint NULL COMMENT "年龄", `create_time` datetime NULL COMMENT "创建时间", `update_time` datetime NULL COMMENT "更新时间", `is_deleted` int NULL DEFAULT "0" COMMENT "是否删除标记" ) SQL 映射同步 推荐结论 当前验证目标是 fudabd_user 同步到 fudabd_user ,且 Doris 目标表不存在、需要设计为 UNIQUE KEY ,优先 SQL 映射同步。 该模式优势: 可将源表 fudabd_user 明确写入目标表 fudabd_user 。 可手动控制 Doris 表模型、字段类型、分桶数和副本数。 可承接 PostgreSQL 主键表的 INSERT 、 UPDATE 、 DELETE CDC 变更。 创建 Doris 数据库 CREATE DATABASE IF NOT EXISTS fudabd_common_plat_db; USE fudabd_common_plat_db; 创建 Doris 目标表 CREATE TABLE `fudabd_user` ( `id` bigint NOT NULL COMMENT "用户ID", `user_name` varchar(50) NOT NULL COMMENT "用户名", `password` varchar(255) NOT NULL COMMENT "密码(应加密存储)", `age` tinyint NULL COMMENT "年龄", `create_time` datetime NULL COMMENT "创建时间", `update_time` datetime NULL COMMENT "更新时间", `is_deleted` int NULL DEFAULT "0" COMMENT "是否删除标记" ) ENGINE=OLAP UNIQUE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 10 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "min_load_replica_num" = "-1", "is_being_synced" = "false", "storage_medium" = "hdd", "storage_format" = "V2", "inverted_index_storage_format" = "V3", "compression" = "LZ4", "enable_unique_key_merge_on_write" = "true", "light_schema_change" = "true", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", "enable_mow_light_delete" = "false" );; 参数建议: 单 BE 验证环境使用 replication_num = 1 。 生产多 BE 环境建议改为 replication_num = 3 。 日均 500 万数据验证阶段可先使用 BUCKETS 32 ,生产环境根据 BE 数量和 tablet 大小调整为 32 或 64 。 创建 SQL 映射 Streaming Job 执行前需要将 <PG_DRIVER_URL> 替换为 PostgreSQL JDBC Driver 的实际地址。 将 “offset” 从 “initial” 改为 “latest” 即可跳过全量快照,仅捕获增量变更: CREATE JOB pg_fudabd_user_to_fudabd_user ON STREAMING DO INSERT INTO fudabd_common_plat_db.fudabd_user ( id , user_name , password , age` tinyint , create_time , update_time , is_deleted ) SELECT id, user_name , password , age, create_time , update_time , is_deleted FROM cdc_stream( "type" = "postgres", "jdbc_url" = "jdbc:postgresql://127.0.0.1:15432/fudabd_common_plat_db", "driver_url" = "https://maven.aliyun.com/repository/public/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar", "driver_class" = "org.postgresql.Driver", "user" = "postgres", "password" = "Fdbd@2013", "database" = "fudabd_common_plat_db", "schema" = "public", "table" = "fudabd_user", "offset" = "initial" ); JOB 运维命令 以下命令用于查看、暂停、恢复和删除前面创建的 Doris Streaming Job。 JOB 查看所有 INSERT 类型 JOB: SELECT * FROM jobs("type" = "insert"); 查看 SQL 映射同步 JOB: SELECT * FROM jobs("type" = "insert") WHERE Name = 'pg_fudabd_user_to_fudabd_user'; 查看 JOB 产生的 TASK 查看所有 INSERT 类型 TASK: SELECT * FROM tasks("type" = "insert"); 查看 SQL 映射同步 JOB 的 TASK: SELECT * FROM tasks("type" = "insert") WHERE JobName = 'pg_fudabd_user_to_fudabd_user'; 暂停 JOB 暂停 SQL 映射同步 JOB: PAUSE JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; 恢复启动 JOB 恢复 SQL 映射同步 JOB: RESUME JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; 删除 JOB 删除 SQL 映射同步 JOB: DROP JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; PGSQL运维命令 -- 查看当前 Publication SELECT p.pubname, n.nspname AS schema_name, c.relname AS table_name FROM pg_publication p JOIN pg_publication_rel pr ON p.oid = pr.prpubid JOIN pg_class c ON pr.prrelid = c.oid JOIN pg_namespace n ON c.relnamespace = n.oid; -- 查看 Replication Slot SELECT slot_name, plugin, slot_type, active, database, restart_lsn, confirmed_flush_lsn FROM pg_replication_slots; ​ -- 如果 Slot 仍然 active,先终止连接 SELECT pid, usename, application_name, client_addr, state FROM pg_stat_activity WHERE backend_type = 'walsender'; ​ SELECT pg_terminate_backend(pid); -- pid 需要手动替换 ​ -- 删除 Replication Slot SELECT pg_drop_replication_slot('slot_name'); ​ -- 删除 Publication -- 查看当前 Publication 进行替换 DROP PUBLICATION doris_pub_1781162893358; ​ ​ -- 确认 Slot 已删除 SELECT slot_name FROM pg_replication_slots; ​ -- 检查 WAL 是否恢复正常 SELECT slot_name, active, pg_size_pretty( pg_wal_lsn_diff( pg_current_wal_lsn(), restart_lsn ) ) AS retained_wal FROM pg_replication_slots; ​ 延迟与性能建议 当前单表日均约 500 万条,验证阶段建议先使用 BUCKETS 32 。 如果同步延迟超过 10 秒,优先检查 Doris Streaming Job 状态、BE compaction、tablet 数量、网络带宽和 PostgreSQL replication slot WAL 堆积。 如果 Doris 集群 BE 数量较多,可将 BUCKETS 调整到 64 ,但不建议在 POC 初期过度增加 tablet 数。 生产环境建议使用多 BE,并将 replication_num 调整为 3 。 PostgreSQL 侧需要持续监控 pg_replication_slots ,避免 Doris Job 停止后 WAL 长时间堆积。 注意事项 STREAMING JOB 任务状态出现PENDING解决 问题根因 __internal_schema.streaming_job_meta 是 Doris 内部管理 Streaming Job 元数据的系统表, FE 未能自动创建它 。所有 Streaming Job 操作都依赖此表,缺失则全部阻塞在 PENDING。 确认 __internal_schema 库及表现状 -- 查看内部库是否存在 SHOW DATABASES LIKE '__internal_schema'; ​ -- 如果存在,查看里面有哪些表 SHOW TABLES FROM __internal_schema; 第一步:先停掉报错的 JOB 止血 TOP JOB pg_fudabd_user_to_fudabd_user; 第二步:手动创建缺失的内部表 CREATE TABLE IF NOT EXISTS `__internal_schema`.`streaming_job_meta` ( `id` bigint NOT NULL, `job_id` bigint NOT NULL, `table_name` varchar(256) NOT NULL, `chunk_list` text ) UNIQUE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_num" = "1" ); 这是基于日志中 SQL 推断的最小表结构。如果后续 FE 代码还访问了其他字段,会再次报错,届时根据错误信息用 ALTER TABLE 补充列即可。 第三步:删除旧 JOB 重新创建 3 个帖子 - 3 位参与者 阅读完整话题

v2ex · 2026-05-11 10:44:46+08:00 · tech

Causal Forge 开源项目介绍 最近自己做了个开源项目,叫 Causal Forge ,核心目标是解决因果分析中「决策不可靠」的痛点。 一、项目背景:为什么做这个工具? 我们平时接触的「因果关系」,大多来自两个孤立的维度,最终导致决策靠“拍脑袋”: 文本侧:政策文件、研究报告、分析文章中提出的因果判断(比如“调降利率会带动工业生产回升”),有语义、可解释,但主观、不可证伪。 数据侧:时间序列等数据中挖掘出的影响关系,客观、可量化,但天生不区分「因果」和「相关」,缺乏业务语义。 写报告的人讲一套,跑数据的人看一套,到底哪些因果链条可信,没有统一标准——这就是 Causal Forge 要解决的核心问题。 二、核心思路:把“文本因果”和“数据因果”放进同一条流水线 不追求“自动生成厉害的因果图”,而是聚焦更朴素、更实用的目标:让因果结论可验证、可追溯、可复盘,具体流程如下: 从文本中抽取结构化的因果关系 从数据中挖掘候选因果边 将文本侧与数据侧的结果双向对撞、对齐 通过多轮严格验证,只保留真正站得住脚的因果链条 三、适用场景 目前更适合偏研究、审计类的场景,尤其适配: 宏观 / 政策传导分析 基本面研究(如投研、行业分析) 风险归因与复盘 研究结论复核(验证研报/报告中的因果逻辑) 四、核心技术栈 不重复造轮子,基于成熟工具组合,聚焦“流水线编排+证据管理”,核心技术包括: LLM + 结构化抽取:将文本中的因果关系抽成 Decision/Callback/Link 等结构化对象,避免模型自由发挥,确保输出规范。 因果工具链组合:底层复用 causal-learn 、Tigramite 、DoWhy 、EconML 等成熟库,负责因果发现、估计、反驳与验证。 时间序列因果验证:不止看相关性,重点校验时序方向、反向因果可能性、跨窗口稳定性。 强类型 Schema 设计:将因果链、证据、验证结果均封装为可追溯的数据结构,避免散乱脚本。 可复现实验流水线:配置、运行产物、验证报告、失败原因全部沉淀,支持重复复现,拒绝一次性分析。 五、独特功能(核心优势) 文本与数据因果双向验证(核心) 区别于“只做文本抽取”或“只做数据因果发现”的项目,强制让两边结果对撞,只有双方都支持的候选,才进入后续验证。 失败也留档,不只展示成功结论 每条因果链若未通过验证,会详细记录“卡在哪一步”“失败原因”(如时序不成立、稳定性不足),为复盘和迭代提供依据。 五道闸门式严格验证 验证不止一步,需依次通过:必要性、充分性、时序性、不可逆性、跨周期稳定性,全部通过才认定为可信因果链。 因果链条全链路可追溯 最终结论不是“模型认为 A 导致 B”,而是能回查到对应的原始文本段落、数据切片、验证参数和过程,确保可信。 偏研究/审计,而非黑盒预测器 核心价值不是“给答案”,而是“说明答案为什么可信”,适配研究、复核等需要严谨证据的场景。 六、核心模块说明 模块 职责 关键依赖 schema/ 所有数据契约( Decision / Callback / CausalLink / CausalChain / Evidence ) Pydantic v2 topdown/ 文本 → 结构化 Decision/Callback 候选 LLM via instructor, spaCy, CauseNet bottomup/ 数据 → 候选因果边集(静态 + 时序) causal-learn, Tigramite, DoWhy, EconML crosscheck/ 语义对齐 + 双向取交集 + 冲突标注 sentence-transformers, networkx validate/ 五道闸门串联校验 + 失败原因记录 DoWhy, statsmodels, scipy chain/ Link 拼 DAG + 剪枝 + 综合置信度评分 networkx store/ 结果沉淀( JSONL/Parquet/GraphML/Neo4j ) — utils/ 时间轴对齐、随机种子、日志、配置加载 loguru, rich, OmegaConf 七、项目价值总结 比纯 LLM 抽取更可靠:多了数据侧的验证,避免“只讲故事不落地”; 比纯数据因果发现更可解释:有文本语义锚点,让数据结论能对应业务逻辑; 比普通分析流程更可复盘:失败链条、验证过程全部保存,便于追溯问题; 比单次研究报告更可积累:最终沉淀为因果链仓库,让组织记住因果,而非依赖个人记忆。 八、项目地址 如果你对「把文本因果叙事和数据因果验证结合」有兴趣,欢迎查看完整文档: https://github.com/zjhong/causal-forge/blob/main/README.zh-CN.md

www.ithome.com · 2026-04-27 14:01:36+08:00 · tech

IT之家 4 月 27 日消息,OpenAI 于 4 月 22 日发布了一款用于脱敏文本中个人身份信息 (PII) 的前沿模型 Privacy Filter。 该模型已以 Apache 2.0 许可协议在 Hugging Face 和 GitHub 平台同步开源,供开发者下载、定制及商业部署。 OpenAI 表示,开发者在自己的环境中运行这一模型后,可针对特定用例进行微调,在训练管线、索引流程、日志记录和审核环节中构建更强的隐私保护机制。 与传统依赖规则匹配的隐私过滤工具不同,OpenAI Privacy Filter 内置了更深层次的语言理解能力,能够根据上下文语境识别非结构化文本中的个人信息,在准确保留公开信息的同时,对与特定个体相关联的敏感数据进行遮盖或脱敏。 据 OpenAI 介绍,该模型采用了双向 Token 分类架构,版本总参数规模为 15 亿,但每次仅激活约 5000 万个参数,这一混合专家(MoE)设计使其能够运行于笔记本电脑甚至浏览器等资源受限的设备上。 该模型支持高达 12.8 万个 Token 的上下文窗口,单次前向传播即可对整个输入序列完成标注,并采用受限维特比算法解码出连贯的片段。 在隐私分类体系方面,Privacy Filter 可识别八类个人敏感信息:姓名(private_person)、地址(private_address)、邮箱地址(private_email)、电话号码(private_phone)、URL 链接(private_url)、日期(private_date)、账号信息(account_number,涵盖银行卡号、信用卡号等金融信息)以及机密信息(secret,如密码和 API 密钥)。 评估过程中,该模型在 PII-Masking-300k 基准测试中取得了 96% 的 F1 分数(准确率 94.04%,召回率 98.04%)。 由于 PII-Masking-300k 数据集的初始注释存在多处遗漏,OpenAI 在对评估中发现的标注问题进行修正后,模型在该修正版基准测试上的 F1 分数进一步提升至 97.43%(准确率为 96.79%,召回率为 98.08%)。 OpenAI 指出,该模型在少量数据上进行微调即可快速提升在特定领域的准确性,且能够在高精度与高召回率之间按需调整。 OpenAI 承认,Privacy Filter 并非匿名化工具,亦不替代合规认证,在法律、医疗和金融等高敏感性场景中,人工审核及领域特定的评估与微调依然是必要的。 在用户日常使用中不慎将包含个人信息的文本粘贴到 AI 工具的行为并不罕见,Privacy Filter 定位为在本地即可运行的预过滤层 —— 数据在不离开用户设备的前提下即可完成 PII 的检测与脱敏处理,此后再将已脱敏内容发送至云端 LLM,从而在使用强大 AI 服务的同时有效控制个人信息的暴露风险。

v2ex.com · 2026-04-20 12:30:38+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 12:30:38+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 12:30:38+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 12:08:22+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 11:58:24+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 11:36:16+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 11:36:16+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 11:23:39+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO

v2ex.com · 2026-04-20 10:45:07+08:00 · tech

大家好,我是帅进超,曾参与并主导过 Apache APISIX 、CNCF APIOAK 、Orange 等 API 网关的开发。最近我在做一个新项目 — Nyro ,一个专为 Agent 设计的原生 AI 网关。 一、AI Coding Agent 的现状 OpenAI 、Anthropic 、Google 等各家一线 LLM 厂商都提供了自家的 AI Coding Agent —— Codex CLI 、Claude Code 、Gemini CLI 且迭代速度之快,几乎以周为单位在刷新,上周还是新功能,这周就已经全部成为了标配。 厂商不计成本的投入 Agent 的开发,这背后共同逻辑是: 把开发者锁定在自家的模型生态内,完成从工具到模型的端到端闭环。 而数据交互技术协议就是锁定工具与模型的一种重要手段,Claude Code 只走 Anthropic 协议,Codex CLI 绑定 OpenAI Responses API 协议,Gemini CLI 依赖 Google 自家的 GenerateContent 协议,工具越好用,对原厂模型的依赖就越深,迁移成本也越高。 二、AI Coding Agent 的使用问题 虽然各大 LLM 厂商都提供了功能强大、生态完善的 CLI 工具,但国内开发者来说,带来了几个现实问题: 原厂模型:网络和费用是门槛 Anthropic 、OpenAI 、Google 在国内均无法直接访问,需要代理,Anthropic 更是对国内访问严格限制;原厂旗舰模型的 API 百万 Token 输出价格均在 20 美元左右,开发场景的高强度使用成本是必须要考虑的问题。相比之下,国内的 DeepSeek 、GLM 、Kimi 、MiniMax 在价格和访问上有明显优势,部分模型的性能已经相当可观。 国产模型:协议支持好,但限速 / 配额是硬伤 好消息是,国内的 GLM (智谱)、Kimi (月之暗面)、MiniMax 都陆续跟进,提供了 OpenAI 兼容协议和 Anthropic 协议,接入 Claude Code 这类工具在技术上已经没有障碍。 坏消息是, 各家推出的 Coding Plan 普遍有比较严格的限速和配额限制 。真正重度使用下来,很容易碰到 429 报错、响应变慢、或者单日配额跑完等问题,用起来体验大打折扣。 Codex CLI & Gemini CLI 的协议壁垒:国产模型全军覆没 Codex CLI 走 OpenAI Responses API ,Gemini CLI 走 Google GenerateContent ——这两套都是各家相对较新的接口规范。而目前国内主流模型提供商( DeepSeek 、GLM 、Kimi 、MiniMax 等)只跟进实现了 OpenAI Chat Completions 兼容层。这意味着,即使你有这些模型的 API Key ,也无法直接把它们接入 Codex CLI 和 Gemini CLI 。 三个工具,三套协议,三套配置 Claude Code 用 Anthropic 协议,Codex CLI 用 Responses API 协议,Gemini CLI 用 Gemini GenerateContent 协议。想把某个模型同时接入这三个工具,要么自己写协议转换程序,逐一修改各工具的配置文件 —— 格式不同、路径不同,换个模型还得重来一遍。 三、什么是 Nyro ? Nyro 是一个桌面原生的 AI 网关。 它让 Claude Code 、Codex CLI 、Gemini CLI 等任意 AI 工具,无需改动任何配置,就能无缝接入 100+ LLM 提供商。Nyro 实现了 OpenAI 、Anthropic 、Gemini 等主流协议的毫秒级协议重写和跨协议工具调用适配。在此基础上,还提供负载均衡、语义缓存、访问控制和用量监控等能力。 Claude Code · Codex CLI · Gemini CLI · OpenCode OpenAI SDK · Anthropic SDK · Gemini SDK Any HTTP API Client ↓ Nyro AI Gateway (localhost:19530) ↓ OpenAI · Anthropic · Google · DeepSeek MiniMax · xAI · Zhipu · Ollama · ... GitHub: https://github.com/NYROWAY/NYRO 四、使用场景对比 场景:把 DeepSeek V3 同时接入 Claude Code 、Codex CLI 、Gemini CLI 之前的做法 # 第一步:自己实现或找一个 Anthropic Messages → OpenAI Completions 的协议转换服务 # 第二步:改 Claude Code 配置 vim ~/.claude/settings.json # 第三步:自己实现或找一个 OpenAI Responses → OpenAI Completions 的协议转换服务 # 第四步:改 Codex CLI 配置 vim ~/.codex/auth.json vim ~/.codex/config.toml # 第五步:自己实现或找一个 Google GenerateContent → OpenAI Completions 的协议转换服务 # 第六步:改 Gemini CLI 配置 vim ~/.gemini/.env vim ~/.gemini/settings.json # 三个工具,三套协议,五个配置文件,格式不同、路径不同,换个模型还得重来一遍。 用 Nyro 的做法 第一步:Providers → New ,填入 DeepSeek 的 Base URL 和 API Key 第二步:Routes → New ,设置虚拟模型名,选择 DeepSeek 作为目标 第三步:Connect → 选择 Claude Code / Codex CLI / Gemini CLI ,点击 Sync 后续更换模型或提供商,只需在路由配置中修改目标即可,客户端无需做任何调整。 三个工具、三套协议、五个配置文件 → 三步操作、一次同步、客户端零改动。 五、快速上手 安装 macOS (推荐) brew tap nyroway/nyro brew install --cask nyro 其他平台 # macOS / Linux curl -fsSL https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.sh | bash # Windows (PowerShell) irm https://raw.githubusercontent.com/nyroway/nyro/master/scripts/install/install.ps1 | iex 也可以直接从 GitHub Releases 下载对应平台的安装包,支持 macOS / Windows / Linux ,Intel 和 ARM 全覆盖。 安装完成后启动应用: ![Nyro 应用启动页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 应用启动页面.png) 配置 第一步:创建提供商 点击 提供商 → 新增提供商 ,通过快捷选项选择目标提供商。可选供应商已预设基础配置,只需填写 名称 和 API Key ,点击 创建 即可。 如果厂商的 Base URL 需要代理访问,可以在「系统设置 → 代理」中开启代理转发。 ![Nyro 提供商创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 提供商创建页面.png) 第二步:创建路由 完成提供商创建后,点击 路由 → 新增路由 ,填写 名称 、 虚拟模型 ID ,选择 目标提供商 ,点击 创建 即可。 路由支持以下进阶能力: 负载均衡 :配置多个目标供应商时,支持加权轮询和主备分级两种策略,满足不同场景下的调度需求 访问控制 :开启后需在 API Key 中创建访问密钥并绑定路由 精确匹配缓存 :基于请求级别的精确缓存,命中后由 Nyro 直接代应答(系统设置 → 精确匹配缓存 → 启用) 语义相似缓存 :基于语义相似度的缓存,支持本地 Embedding 模型(如 Ollama ),可自定义相似度阈值,命中后支持流式输出(系统设置 → 语义相似缓存 → 启用) ![Nyro 路由创建页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 路由创建页面.png) 第三步:工具接入 完成路由创建后,点击 接入 → 工具接入 → 选择工具 → 同步配置 。 Nyro 会自动检测本机已安装的 AI 工具,生成对应的配置文件并写入正确路径,原配置自动备份。 ![Nyro 工具接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 工具接入页面.png) 同步完成后,打开终端启动对应工具,可以看到模型 ID 已更新为 Nyro 虚拟模型 ID ,Vibe Coding 开始。 ![Nyro 终端工具运行效果.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端工具运行效果.png) 代码接入 如果你是通过 SDK 或 HTTP 直接调用,点击 接入 → 代码接入 → 选择协议 → 选择路由 → 复制代码 ,即可获取对应语言的示例代码。 ![Nyro 代码接入页面.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 代码接入页面.png) 打开终端 -> 粘贴代码,即可进行验证。 ![Nyro 终端执行示例代码.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 终端执行示例代码.png) 六、服务端部署 Nyro 除桌面客户端外,同时支持服务器端部署,适合团队共享或生产环境使用。 从 GitHub Releases 下载对应平台架构的二进制文件: ![Nyro 发布平台架构列表.png]( https://raw.githubusercontent.com/shuaijinchao/docs/master/images/Nyro 发布平台架构列表.png) Server 模式(带控制台 + 数据库) ./nyro-server-linux-x86_64 \ --storage-backend postgres \ --postgres-dsn "postgres://user:pass@host:5432/db" 启动后通过 http://127.0.0.1:19531 访问控制台,通过 http://127.0.0.1:19530 访问接入端点。 Standalone 模式(纯 YAML 配置,无控制台) # config.yaml providers: - name: openai endpoints: openai: base_url: https://api.openai.com/v1 api_key: sk-xxx routes: - name: gpt-4o vmodel: gpt-4o targets: - provider: openai model: gpt-4o ./nyro-server-linux-x86_64 --config config.yaml Standalone 模式不启动控制台,启动后直接通过 http://127.0.0.1:19530 访问接入端点。 接入验证 启动后可通过以下方式验证三种协议均已正常工作: OpenAI Completions curl http://localhost:19530/v1/chat/completions \ -H "Authorization: Bearer sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }' Anthropic Messages curl http://localhost:19530/v1/messages \ -H "x-api-key: sk-00000000000000000000000000000000" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' Google GenerateContent curl http://localhost:19530/v1beta/models/gpt-4o:generateContent \ -H "x-goog-api-key: sk-00000000000000000000000000000000" \ -H "Content-Type: application/json" \ -d '{ "contents": [{"role": "user", "parts": [{"text": "Hello"}]}] }' 最后 Nyro 目前还处于早期阶段,还有很多功能想做、还有很多细节值得打磨。 如果你在使用过程中遇到了问题,或者对 AI 网关有任何想法和建议,欢迎直接来留言评论或者去 GitHub 提 Issue 都行,我都会认真看并回复。 如果觉得这个工具对你有帮助,去 GitHub 点个 Star 是对开发者最直接的支持。 https://github.com/NYROWAY/NYRO