当前位置: 首页 > article >正文

Codex + 自建中转站,用不完的token+GPT5.4 做成了一个AI机器人

Codex 自建中转站用不完的tokenGPT5.4 做成了一个AI机器人最近因为gemini实在太贵订阅了两个月后还是和团队一起搞了自建中转站这也正是高龄程序员的痛所以也想着给自己多搞个退路对于AI我的第一感受是如何让AI把一件真正麻烦的事做顺了做准确了于是我准备试一试codex和gpt全程AI没有古法编程。核心是企鹅登录态、NapCat / OneBot 消息协议、OpenAI 兼容网关、本地会话记忆、知识库召回、桌面化运维控制台串成了一个可运行、可排障、可交付的完整链路。如果你也有想独立开发的想法这个项目一定很有参考价值如果有需要使用的我的中转站的可以后台call我不是无偿但绝对最优惠。下面是一个开发的思路想把 企鹅号接到自己的 AI 能力上做私聊或群聊机器人想把 GPT-5.4 接到本地业务而不是只在网页里聊天想做一个“开发可用、交付也可用”的桌面客户端而不是只会在命令行里跑这篇文章我会按“核心功能 - 技术栈 - 架构设计 - 关键实现 - AI系统提示词”的顺序把这个项目拆开讲清楚。1. 项目一句话概括本质上是一个运行在 Windows 上的企鹅 AI 桥接控制台前端形态是Electron桌面客户端消息入口是NapCat / OneBot 11服务端核心是Node.js ExpressAI 能力通过OpenAI 兼容协议接入会话、日志、运行状态通过SQLite本地持久化还额外做了二维码登录辅助、QQ 绑定校验、多 Bot Profile、知识库召回2. 这个项目的核心功能先说结论这个项目最有价值的不是某一个单点而是下面这几块组合起来之后的完整性。2.1 企鹅号与目标 Bot 账号绑定校验很多同类项目只要OneBot / get_login_info能返回用户信息就认为系统可用了。但这个项目更严格它会校验当前 OneBot 登录的 企鹅是谁这个 企鹅 是否等于配置里的BOT_SELF_ID如果扫错号是否要重置登录流程并重新生成二维码这意味着它解决了一个很实际的问题不是“登录了某个 账号 就行”而是“必须登录到我指定的那个机器人 账号”才算成功。2.2 自动拉起 NapCat / 企鹅项目启动时不只是起一个 HTTP 服务而是会做完整的启动编排清理旧的桥接进程、NapCat 进程和冲突端口启动本地桥接服务检查 NapCat 是否已可用必要时自动拉起 NapCat必要时自动拉起 企鹅轮询 OneBot 登录状态这部分的价值在于它把“人工点来点去”的流程尽量程序化了。2.3 二维码登录链路可视化这个项目不是只等你自己去 NapCat 看日志而是主动从多个位置提取二维码信息从 NapCat 日志里提取二维码 URL解析二维码内容在终端直接打印字符二维码在 Electron 桌面端渲染二维码图像这对实际使用体验非常关键因为登录失败的第一现场通常就卡在二维码这一段。2.4 接收消息 - AI 回复 - 回发消息核心主链路非常标准但实现得比较完整NapCat 把消息事件POST到/onebot/event服务端判断是否要处理这条消息按私聊 / 群聊 用户维度构造会话 ID读取上一次response_id续接上下文召回知识库片段请求 OpenAI 兼容模型生成回答再通过 OneBot API 发回 企鹅自定义系统提示词给机器人赋予灵魂这里参考了龙虾的soul.md所以我定义了一个能安慰人的机器人它支持私聊自动回复群聊只在被时回复群聊全量回复模式/reset或中文重置命令清空当前上下文2.5 本地轻量知识库这个项目没有上向量数据库而是做了一个很轻的本地知识库方案支持.md.txt.json.pdf它的思路是先按段落切块对中文做单字和双字切分对英文做 token 抽取用词命中做打分取 TopK 片段拼进系统上下文这不是“最重”的 RAG但非常适合本地桥接项目成本低部署简单没有额外服务依赖对 FAQ、资料型问答已经足够实用2.6 桌面运维控制台Electron 客户端不是摆设它做了很多“可交付”层的事情图形化编辑.env启动 / 停止 / 重启桥接服务查看二维码查看运行状态查看最近对话查看日志跑配置诊断拉取可用模型列表多 Bot Profile 管理这说明项目定位不是 Demo而是希望把运维门槛压低。3. 技术栈一览层次技术栈作用桌面端Electron提供图形化控制台服务端Node.js Express接收 OneBot 事件、转发 AI 回复协议层NapCat OneBot 11打通 QQ 消息收发模型接入OpenAI-compatible API兼容官方接口或自建中转站持久化node:sqlite / SQLite存会话、消息、运行快照、诊断记录知识库pdf-parse 本地文件切块做轻量召回二维码jsqr pngjs qrcode-terminal qrcode二维码识别、终端打印、桌面显示打包electron-builder输出 Windows 便携版和安装版从依赖选择上看它整体遵循的是一个非常务实的原则优先保证本地可运行、可交付、可维护而不是为了“技术先进”引入一堆额外中间件。4. 架构怎么设计的整个系统我建议你把它理解为“两套状态机 一条消息链路”。4.1 一条消息链路QQ / 群聊 / 私聊NapCat / OneBot 11POST /onebot/event消息过滤与会话路由知识库召回OpenAI Compatible APIOneBot HTTP API4.2 两套状态机第一套状态机是应用登录态应用是否已启动NapCat 是否已启动OneBot 是否可达当前登录企鹅是否等于目标企鹅号是否需要二维码是否需要回收旧登录流程第二套状态机是AI 会话态当前消息属于哪个会话上次模型返回的response_id当前 Bot 配置是否变化当前知识库指纹是否变化是否需要重置上下文这两个状态机是拆开的这一点非常重要。因为登录态解决的是“这个机器人能不能工作”会话态解决的是“这个机器人说话是否连贯”。很多项目把这两件事混在一起导致一出问题就很难排障。5. 核心模块拆解5.1bootstrap.js先起服务再后台等登录这个项目有一个很不错的工程决策先把 HTTP 服务起起来再在后台等待 企鹅 / OneBot 登录完成。这样做的好处是healthz很早就可用Electron 能立刻拿到状态启动阶段不是黑盒用户知道系统卡在“服务未起”还是“未登录”很多桌面端程序会反过来做结果就是前面一长段时间界面没有状态只能等。5.2startup.js真正的启动编排中心这个模块是项目里最有“工程味”的部分基本承担了整套 Windows 侧自动化清理旧进程与端口写入 NapCat 的 OneBot 配置检查 OneBot 是否可达自动拉起 NapCat / 企鹅解析日志里的 WebUI 地址和二维码链接从 PNG 中识别二维码打印终端二维码校验当前登录 企鹅 是否匹配目标 Bot不匹配就回收并重启登录流程如果你以后也要做类似桥接项目这个模块的设计思路比“消息回复逻辑”更值得学。5.3server.js消息处理主入口server.js主要做五件事暴露/healthz接收/onebot/event根据self_id匹配当前 Bot Profile过滤无效事件和群聊触发模式调用知识库与模型生成回复这里还有几个细节值得注意支持OneBot Post Secret做签名校验群聊默认只在被时触发避免刷屏会话 ID 是按bot 私聊/群聊 用户粒度构建的日志不仅打印在控制台还会写入持久化层5.4openai-client.js兼容层做得很实用这是我个人比较喜欢的一块。它不是简单写死某一个接口而是做了两层兼容优先走/responses如果中转站不支持再回退到/chat/completions这非常适合“官方接口 第三方兼容网关 自建中转站”混用场景。另外它还做了这些增强自动规范化OPENAI_BASE_URL支持多个 base URL 候选支持拉取/models支持reasoning.effort支持不同 Bot 使用不同模型配置一句话评价这不是只为了“能用”而是为了“你换供应商时别改一堆代码”。5.5knowledge-base.js轻量 RAG 的正确打开方式这个模块非常适合中小项目抄作业。它没有上向量数据库Embedding 服务复杂召回链路而是用了一个更接地气的思路文件切块缓存基于文件大小和修改时间做缓存键中文单字 / 双字 英文 token 混合分词命中打分TopK 拼接如果你的目标是“给 机器人加一点本地知识”这种方案的性价比是很高的。5.6persistence.js把“能跑”升级成“能追踪”项目把很多运行时数据都落进了 SQLitesessionsmessagesruntime_snapshotsdiagnostics_runs这带来的价值非常直接程序重启后还能知道上次状态最近对话可回看诊断结果可留痕旧的sessions.json还能迁移进来同时它开启了WAL模式这对桌面本地数据库是一个比较合理的选择。5.7bot-profiles.js从单 Bot 走向多 Bot这个模块说明作者已经不满足于只服务一个账号。它支持多 Bot Profile激活某个 Bot每个 Bot 拥有独立的模型、System Prompt、群聊模式、知识库配置将活动 Bot 的关键配置镜像回.env这意味着项目后面很容易扩成实际上已经实现了多个 企鹅 号不同业务人格不同知识库不同模型策略6. 为什么这个实现思路是对的如果让我用工程视角总结这个项目的实现思路我会概括成下面 4 句话。6.1 把“消息服务”与“登录运维”分层聊天回复只是表面功能真正让系统稳定的是登录流程可视化绑定状态可确认异常流程可回收这类项目一旦没有这层线上运维会非常痛苦。6.2 把“OpenAI 官方接口”抽象成“兼容网关”项目没有把模型供应商写死而是统一收口到OPENAI_BASE_URLOPENAI_API_KEYOPENAI_MODEL这一步非常关键因为你后续无论接官方 OpenAIAzure 风格兼容层自建中转站第三方代理网关整体代码都不用大改。6.3 先解决交付问题再追求算法复杂度从轻量知识库、本地 SQLite、Electron 控制台这些点可以看出项目优先级是能装起来能跑起来能排障再逐步增强智能度这是很典型、也很正确的工程化思路。6.4 尽量把“状态”变成可观测对象项目里很多设计都围绕“状态透明”展开/healthz最近会话运行快照诊断报告QR 状态当前登录企鹅号这让桌面端不再只是个壳而是真正的运维面板。7. 那么其中大模型消耗的token从哪来当然是自建中转站啦当然有需要的后台call我很优惠这部分是我认为这篇文章最适合扩展的地方。因为这个项目天然就是一个OpenAI-compatible 接入层所以它非常适合接在“自建中转站”后面。7.1 一个推荐的角色分工我建议把三者这样分工Codex负责开发阶段写代码、补测试、改 Prompt、做运维脚本、生成知识库资料GPT-5.4负责线上问答阶段承担 应用 里的高质量回复自建中转站负责统一鉴权、路由转发、额度隔离、模型切换、日志审计这样做的好处是开发和生产用的 Token 不混用线上服务稳定性更高模型切换不需要改客户端逻辑不同 Bot 可以挂不同的模型策略7.2 这个项目为什么特别适合接中转站因为它本身就已经做了兼容层设计统一收口OPENAI_BASE_URL支持/models优先/responses失败回退/chat/completions每个 Bot 可以独立配置模型这意味着你完全可以把OPENAI_BASE_URLhttps://你的中转站域名/v1OPENAI_API_KEY你的中转站令牌OPENAI_MODELgpt-5.4作为项目主配置而不是把官方地址硬编码进项目。7.3 一个实用的 Token 搭配策略如果你真的要把它落地我建议按“开发 Token”和“生产 Token”拆开。方案 A最稳的搭法Codex 用一套专门的开发 Token应用桥接服务用一套专门的生产 Token中转站里给生产 Token 设置更严格的限流和额度适合自己开发机器人稳定跑在线上不希望开发调试把线上额度打爆方案 B多模型分流私聊高质量问答走gpt-5.4群聊高频消息走更便宜的兼容模型复杂场景再切回gpt-5.4适合群聊流量大成本敏感需要把高质量能力用在更有价值的消息上方案 C多 Bot Profile 分工Bot A客服 / FAQ挂知识库模型偏稳Bot B娱乐闲聊模型偏便宜Bot C开发群助手Prompt 更技术化这个项目的bot-profiles设计天然适合做这一层扩展。8. 项目最值得借鉴的 5 个点8.1 真正把“绑定正确”当成一等公民不是“能登录就行”而是“必须登录到目标 Bot 才行”。8.2 对第三方网关兼容做得很务实/responses不行就降级/chat/completions很适合国内复杂的中转环境。8.3 本地可交付性强Electron SQLite Electron Builder 的组合让它更像一个产品而不是脚本。8.4 轻量知识库方案非常接地气不依赖额外服务适合个人项目、小团队、内网环境。8.5 可观测性做得不错运行状态、二维码、消息记录、诊断报告都有对应落点不容易“黑盒化”。用 Electron 做控制台用 OneBot 做协议桥用 OpenAI-compatible 做模型抽象用 SQLite 做本地持久化再用 Codex GPT-5.4 自建中转站把开发效率和生产能力真正打通。AI是一个生产工具很多年前出现了新的生产工具淘汰了那些看不起它的人现在新的生成工具出现了

相关文章:

Codex + 自建中转站,用不完的token+GPT5.4 做成了一个AI机器人

Codex 自建中转站,用不完的tokenGPT5.4 做成了一个AI机器人 最近因为gemini实在太贵,订阅了两个月后还是和团队一起搞了自建中转站,这也正是高龄程序员的痛,所以也想着给自己多搞个退路,对于AI,我的第一感…...

白宫拟开放Claude漏洞挖掘AI,军方禁令与民用部署冲突激化

美国政府正计划授权主要联邦机构使用Anthropic公司Claude Mythos模型的修改版本。该AI模型能够快速识别网络安全漏洞并具备漏洞利用能力,引发了广泛关注。据彭博社援引内部备忘录报道,白宫管理与预算办公室(OMB)联邦首席信息官Gre…...

推荐系统实时更新策略

推荐系统实时更新策略:让内容推荐更懂你 在信息爆炸的时代,推荐系统已成为用户获取内容的核心工具。传统的推荐模型往往依赖离线训练,难以捕捉用户兴趣的实时变化。实时更新策略通过动态调整推荐结果,让系统更敏捷地响应用户行为…...

警惕AI全自动攻击!Claude Opus成功构建Chrome漏洞武器化链路

在 Anthropic 公司发布 Mythos 和 Project Glasswing 模型引发激烈争论之际,一位安全研究人员展示了前沿 AI 技术对网络安全的实际影响。该研究突破了理论警告的局限,成功利用 Claude Opus 构建出针对 Google Chrome 复杂 V8 JavaScript 引擎的完整漏洞利…...

算法训练营第八天|88.合并两个有序数组

题目链接:https://leetcode.cn/problems/merge-sorted-array/ 视频链接:https://www.bilibili.com/video/BV1Gr16B2EGf/状态:做出来了思路:双指针法:我们为两个数组分别设置一个指针 p1​ 与 p2​ 来作为队列的头部指针…...

攻击者可利用的 FortiSandbox 漏洞 PoC 公开,可执行任意命令

网络安全研究人员已公开披露针对 Fortinet 旗下 FortiSandbox 产品高危漏洞(CVE-2026-39808)的概念验证(PoC)利用代码。该漏洞允许未经身份验证的攻击者以 root 最高权限执行任意操作系统命令,且无需任何登录凭证。 该…...

从航拍到模型:手把手教你用‘焦距’和‘像元尺寸’反算无人机航高(附Excel计算工具)

从航测参数到飞行方案:无人机航高计算的工程实践指南 当大疆M300RTK搭载P1全画幅相机盘旋在工地上空时,机载计算机显示的实时航高数字背后,隐藏着一套精密的计算逻辑。对于航测工程师而言,掌握从相机参数到飞行参数的转换能力&…...

**构建去中心化金融新范式:基于Solidity的DeFi协议开发实战解析**在区块链技术飞速发展的今天,**

构建去中心化金融新范式:基于Solidity的DeFi协议开发实战解析 在区块链技术飞速发展的今天,DeFi(去中心化金融) 已成为推动Web3生态落地的核心引擎之一。它通过智能合约实现了无需中介的信任机制,极大提升了资产流动性…...

**点云处理新范式:基于Python的高效三维数据滤波与分割实战**在自动驾

点云处理新范式:基于Python的高效三维数据滤波与分割实战 在自动驾驶、机器人导航和工业质检等前沿领域,点云数据已成为关键输入信息。它由成千上万甚至百万级的三维坐标(x, y, z)组成,常来自激光雷达(LiD…...

当‘事实’遇见代码:用Python爬虫与NLP,亲手验证新闻中的‘莫斯科街道’悖论

当‘事实’遇见代码:用Python爬虫与NLP,亲手验证新闻中的‘莫斯科街道’悖论 在信息爆炸的时代,我们每天被无数新闻包围,但你是否想过,这些所谓的"事实"究竟是如何被构建的?1980年代,…...

Ubuntu 18.04 ROS安装遇坑记:手把手教你修复‘EXPKEYSIG’签名无效错误

Ubuntu 18.04 ROS安装遇坑记:手把手教你修复‘EXPKEYSIG’签名无效错误 第一次在Ubuntu上安装ROS时,那种兴奋感很快被终端里鲜红的错误提示浇灭——EXPKEYSIG F42ED6FBAB17C654。作为机器人开发的基础环境,ROS的安装本应是入门第一步&#xf…...

G-Helper终极指南:解锁华硕ROG笔记本隐藏性能的黑科技神器

G-Helper终极指南:解锁华硕ROG笔记本隐藏性能的黑科技神器 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix…...

【X-STILT模型第一期】X-STILT 模型概述

目录X-STILT 模型概述支持的观测平台与气体物种GitHub 仓库中的内置核心脚本/功能X-STILT 模型的下载安装一、 下载与安装模型 (Download and install model)二、 前置条件与数据准备 (Prerequisites)1. 依赖卫星观测的柱浓度模拟 (For SATELLITE-dependent column simulation)…...

在国产化ARM平台(如鲲鹏)上,用Eclipse搞定JavaFX开发的避坑指南

在国产化ARM平台(如鲲鹏)上构建JavaFX开发环境的全流程指南 当国产化替代浪潮遇上ARM架构的崛起,开发者们正面临一个全新的技术挑战:如何在华为鲲鹏等国产ARM服务器上搭建高效的JavaFX开发环境?与传统的x86平台不同&am…...

【论文学习】利用卫星观测数据的 X-STILT 模型详解

目录 J2018-提出 X-STILT (v1)模型( C O 2 CO_2 CO2​总量反演) 2. 核心研究方法:X-STILT 模型 3. 使用的数据资源 4. 案例研究:沙特阿拉伯利雅得 J2022-改进 X-STILT 模型( C O 2 CO_2 CO2​部门归因) 1. 研究核心:利用 C O 2 CO_2 CO2​ 与 C O CO CO 的排放比例 2.…...

UG/NX二次开发环境配置避坑指南:从零搭建到模板验证(nx1980+vs2019)

1. 环境准备:软件安装与版本匹配 第一次接触UG/NX二次开发的朋友,最头疼的往往不是代码本身,而是环境配置这个"拦路虎"。我当初用NX1980VS2019组合配置环境时,光版本兼容性问题就折腾了大半天。这里先划重点&#xff1a…...

两道必掌握的动态规划面试题:最长回文子串 最长公共子序列

目录 一、最长回文子串(Longest Palindromic Substring) 题目描述 1. 暴力解法(时间复杂度 O (n)) 2. 中心扩展法(时间复杂度 O (n),空间 O (1)) 核心思路 Java 代码实现 3. 动态规划解法…...

Qwen2-VL-2B-Instruct应用场景:媒体库智能打标与跨模态内容归档系统

Qwen2-VL-2B-Instruct应用场景:媒体库智能打标与跨模态内容归档系统 1. 项目背景与价值 现代企业和个人创作者都面临着一个共同的难题:随着图片、视频、文档等多媒体内容的爆炸式增长,如何高效地管理和检索这些资源?传统的文件名…...

如何防止SQL触发器导致事务超时_拆分逻辑为异步队列处理

触发器中禁止耗时操作,应改用异步方案:MySQL用消息表轮询,PostgreSQL优先用LISTEN/NOTIFY;需保障幂等、唯一ID、上下文完整及超时重试。触发器里直接调用耗时操作必然拖垮事务SQL 触发器运行在主事务上下文中,INSERT/U…...

PHP源码运行是否受硬盘转速影响_7200转vs5400转对比【指南】

PHP执行时间基本不受硬盘转速影响,但文件首次加载、opcode编译、同步I/O阻塞等环节会受5400转硬盘拖累;启用OPcache、禁用时间戳验证、缓存配置模板、优化自动加载可有效规避磁盘延迟。PHP脚本执行时间基本不受硬盘转速影响只要代码已加载进内存、OPcach…...

私有化部署企业级融媒体平台EasyDSS三大核心技术解析,筑牢校园数字化建设根基

校园数字化建设的稳步推进,离不开核心技术的支撑。EasyDSS之所以能在校园场景中实现广泛应用,核心在于其高清直播、极速点播、视频会议三大领域的技术深耕,通过持续的技术优化与创新,打造出适配校园场景的高品质数字化服务&#x…...

Redis 慢查询日志分析与性能调优

Redis作为一款高性能内存数据库,其响应速度直接影响业务体验。当出现性能瓶颈时,慢查询日志成为关键突破口。本文将深入分析Redis慢查询日志的实用技巧,并提供针对性性能调优方案,帮助开发者快速定位并解决潜在问题。 慢查询日志…...

Keil MDK-ARM编译报错‘A Label was found which was in no AREA’?手把手教你写对INCBIN汇编文件

Keil MDK-ARM编译报错‘A Label was found which was in no AREA’?手把手教你写对INCBIN汇编文件 在嵌入式开发中,直接访问二进制数据的需求非常普遍——可能是预计算的校验表、固件镜像或是其他工具生成的配置数据。当你在Keil MDK-ARM环境中尝试用汇编…...

5大核心优势:NVMe设备全生命周期管理工具深度解析

5大核心优势:NVMe设备全生命周期管理工具深度解析 【免费下载链接】nvme-cli NVMe management command line interface. 项目地址: https://gitcode.com/gh_mirrors/nv/nvme-cli 在当今数据中心和高性能计算环境中,NVMe存储技术凭借其超低延迟和高…...

Dify多模态Pipeline调试失败率下降82%的关键动作:OpenTelemetry埋点+自定义Trace Context注入实战

第一章:Dify多模态集成调试的挑战与现状Dify 作为低代码 AI 应用开发平台,原生支持文本生成、RAG 和 Agent 编排,但其多模态能力(如图像理解、语音转写、跨模态检索)仍需通过自定义模型服务、插件或外部 API 集成实现。…...

Dify日志审计配置总失败?92%团队忽略的时区陷阱、权限继承断层与审计缓冲区溢出问题全解析,立即修复!

第一章:Dify 2026日志审计配置失败的典型现象与根因图谱当 Dify 2026 版本启用日志审计功能后,运维人员常观察到审计日志缺失、时间戳错乱、关键操作事件未捕获等异常。这些表象背后往往指向统一的配置链路断裂:从环境变量注入、审计中间件加…...

057.YOLOv5代码调试技巧:用VSCode/PyCharm给深度学习“把脉”

最近在项目里遇到一个诡异的问题:YOLOv5训练时loss曲线看着挺正常,但验证集mAP就是上不去。模型推理时偶尔还会出现框位置漂移,像是特征图对齐出了问题。这种时候,光靠print和猜是没用的,得上调试器——就像给代码做一次深度CT扫描。 从一次真实调试经历说起 那天晚上十…...

爱毕业(aibiye)优化数学建模论文的复现流程,确保智能排版的高效与准确

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

爱毕业(aibiye)让数学建模论文的复现更便捷,排版更符合学术规范

还在为论文写作头痛?特别是数学建模的优秀论文复现与排版,时间紧、任务重,AI工具能帮上大忙吗?今天,我们评测10款热门AI论文写作工具,帮你精准筛选最适合的助手。 aibiye:专注于语法润色与结构…...

保姆级避坑指南:Redmi AC2100刷Breed和固件时,你可能遇到的5个‘坑’及解决方法

Redmi AC2100刷机实战:5个高频翻车点与深度救援方案 当你盯着论坛里那些"一次成功"的刷机帖时,可能没想到自己会卡在某个莫名其妙的环节。作为刷过三十多台AC2100的老玩家,我见过太多人在相同的地方跌倒——Stok码突然失效、Breed界…...