Anarlog 1.4.15 修复 ChatGPT 订阅连接从 Bad Request 到正常生成摘要与增强内容【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlog本篇技术指南围绕 Anarlog 1.4.15 版本的 Intelligence智能模块更新展开该版本修复了使用 ChatGPT Plus / Pro 订阅生成会议摘要Summaries与增强内容Enhancements时返回 Bad Request 的问题并让被拒绝的请求在 Intelligence 设置中显示真实的 ChatGPT 错误信息。读完本文你将理解 Anarlog 的 ChatGPT 订阅 OAuth 连接链路、令牌刷新机制、流式生成中间件以及错误信息提取逻辑并掌握如何验证与排查该版本修复。版本背景1.4.15 修复了什么packages/changelog/content/1.4.15.md 是本次文章的主体依据其发布说明date: 2026-08-29聚焦于两个核心修复生成能力恢复连接了 ChatGPT Plus 或 Pro 订阅后可以正常生成摘要与增强内容而不再看到笼统的 Bad Request 错误错误可观测性提升当请求被 ChatGPT 拒绝时Intelligence 设置中会显示实际的 ChatGPT 错误而不是只显示 Bad Request。这两条修复分别对应 Anarlog 桌面端 AI 链路中的两个环节订阅凭据的正确获取与使用决定请求能否通过认证以及错误信息的透传与展示决定问题能否被准确定位。下面分别从源码层面深入这两条链路。Intelligence 模块与 ChatGPT 订阅登录链路Anarlog 是一款开源的开会录音与智能总结工具其 Intelligence 设置区负责为会议生成摘要、笔记、行动项等增强内容。在 AI 提供方中ChatGPT 走的是订阅制 OAuth 授权路线——用户不需要手动粘贴 API Key而是用 ChatGPT Plus 或 Pro 账号完成登录授权Sign in through Connect — well finish the handshake automatically 见 configure.tsx。OAuth 客户端配置与 PKCE 授权码流程ChatGPT 订阅连接的完整客户端参数定义在 oauth.tsexport const CHATGPT_CALLBACK_PORT 1455; const CHATGPT { clientId: app_EMoamEEZ73f0CkXaXp7hrann, authorizeUrl: https://auth.openai.com/oauth/authorize, tokenUrl: https://auth.openai.com/oauth/token, redirectUri: http://localhost:${CHATGPT_CALLBACK_PORT}/auth/callback, scope: openid profile email offline_access, } as const; export const CHATGPT_API_BASE_URL https://chatgpt.com/backend-api/codex; export const CHATGPT_REQUEST_HEADERS { originator: codex_cli_rs, OpenAI-Beta: responsesexperimental, User-Agent: codex_cli_rs, } as const;关键点解读回调端口固定为 1455回调地址为http://localhost:1455/auth/callback属于本地回环loopback回调用于接收浏览器授权后的跳转scope 包含offline_access意味着授权时同时申请刷新令牌Refresh Token这是长周期可用订阅连接的前提API 基址指向 ChatGPT 的 codex 后端https://chatgpt.com/backend-api/codex请求头携带originator: codex_cli_rs、OpenAI-Beta: responsesexperimental与官方 Codex CLI 客户端保持一致。授权采用 PKCE 授权码模式startChatgptConnect生成 PKCE challenge 与随机 state构造授权 URL 并交给浏览器见 oauth.ts。state 用于防 CSRFverifier 在兑换令牌时使用。桌面端连接对话框的完整交互流程连接 UI 实现在 connect.tsx其流程体现了对 ChatGPT 回调的特殊处理启动本地回调服务通过deeplink2Commands.startCallbackServer(scheme, CHATGPT_CALLBACK_PORT)在localhost:1455监听回调打开浏览器授权调用startSubscriptionConnect(providerId)获取授权 URL 并用系统浏览器打开自动完成握手监听deepLinkEvent收到/auth/callback且 state 匹配后调用completeCodeConnect用授权码兑换令牌并保存见 connect.tsx粘贴兜底若本机无法启动回调服务如端口被占用对话框会退化为将浏览器地址栏的 redirect URL 粘贴回来的手动模式showPasteFallback。该对话框文案也明确区分了模式自动模式下提示 Well open Anarlog and finish connecting手动模式下提示 paste the redirect URL from your browser。订阅令牌的自动刷新机制订阅连接保存的是 OAuth 凭据access token refresh token 序列化后的字符串而不是明文 API Key。每次发起 AI 请求前access.ts 中的resolveSubscriptionAccess会执行以下判断凭据新鲜isOAuthCredentialFresh判断 access token 未过期时直接使用过期时调用refreshOAuthCredential用 refresh token 换新通过refreshLocks键控的 Map 实现同提供方刷新互斥避免并发请求重复刷新刷新成功后回写setAiProvider并保持 ChatGPT 的base_url为CHATGPT_API_BASE_URL见 access.ts。Bad Request 的成因与 1.4.15 的修复方向在 1.4.15 之前用户即使成功连接了 ChatGPT Plus / Pro 订阅生成摘要与增强内容时仍会收到Bad Request。结合源码可以推断这类 400 错误的典型来源有两类请求未被识别为订阅调用ChatGPT 的 codex 后端要求请求头携带正确的originator、OpenAI-Beta与订阅携带的 bearer token若令牌缺失、过期或刷新失败服务端会以 400 拒绝而非友好的错误提示错误信息未透传生成请求走的是 Vercel AI SDK 的流式接口底层的 HTTP 错误信息没有进入设置界面用户只能看到一个笼统的 Bad Request。1.4.15 的修复围绕这两点展开确保订阅凭据正确参与每次生成请求通过上文的 access.ts 刷新链路与 CHATGPT_REQUEST_HEADERS以及把真实错误从流中提取出来展示。值得一提的是桌面端的streamOnlyGenerationMiddleware见 stream-only-generation.ts会把doStream的流式输出收集为完整生成结果其中对error类型的流分片会直接throw value.error——这为错误信息透传到上层 UI 提供了通道。在 Intelligence 设置中看到真实错误第二个修复点落在错误展示层。Intelligence 设置中的连接健康检查实现在 health.tsxuseConnectionHealth用一次极小的探针请求system 提示词要求对 Hi 回复 hello检查模型连通性失败时进入 error 状态llmHealthErrorMessage负责从错误对象中逐层提取真实错误文本依次检查data、responseBody支持 JSON 解析、message字段并递归解析嵌套的error对象取message/detail/error最终用firstUsefulLine截取首个非空行并限制在 200 字符内见 health.tsx。因此 1.4.15 之后当 ChatGPT 端拒绝请求如配额不足、订阅失效、模型不可用时设置页不再显示 Bad Request而是显示 ChatGPT 返回的具体错误文本用户能据此判断是订阅问题、参数问题还是服务端限制。相应的llmHealthErrorMessage行为也有测试用例覆盖health.test.ts。如何验证 1.4.15 的修复效果重新连接订阅打开桌面端 AI 设置选择 ChatGPT通过 Connect 完成 OAuth 授权自动回调或粘贴 redirect URL确认凭据已保存检查连接健康设置页的健康指示器应显示成功若失败应能看到来自 ChatGPT 的具体错误文本而非 Bad Request触发真实生成对一场会议生成摘要Summary或增强内容Enhancements确认输出正常返回跨天使用利用offline_access刷新机制在 access token 过期后再次生成验证自动刷新是否生效。小结Anarlog 1.4.15 的 Intelligence 更新是一套连接可用性 错误可观测性的组合修复前者依托 PKCE 授权码流程、本地 1455 端口回调与带互斥锁的 OAuth 自动刷新让 ChatGPT Plus / Pro 订阅真正成为可用的生成后端后者通过健康检查中的多层错误提取把 Bad Request 背后的真实原因暴露给用户。对于接入订阅制 AI 服务的桌面应用这两条链路的设计值得借鉴——认证必须完整闭环错误必须可见可查。【免费下载链接】anarlogOpen source Granola AI Alternative项目地址: https://gitcode.com/GitHub_Trending/hy/anarlog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考