Skip to content

spec: daemon 侧 provider 授权架构——订阅族(openai-codex 等)真路径(#284 裁决产物,触发线前不排期) #301

Description

@xiechimon

spec: daemon 侧 provider 授权架构——订阅族(openai-codex 等)的真路径

来源:#284 裁决收口(2026-09-26)。票面「OAUTH_FAMILIES 加行」被证伪——openai-codex 的 PKCE 锁死 localhost:1455 回环,server-callback(本仓唯一握手形态)架构上收不到授权码;#34 正典维持单族。本票 = 唯一能真正打通订阅族的架构路径,触发线前不排期。

Problem

订阅类模型(OpenAI Codex / SuperGrok 等)的 OAuth 均为 PKCE + 本机回环 redirect(为本地 CLI 设计),与 pacman「server 可远端、机器可在他机」(BYOC)拓扑下的 server-callback 握手根本冲突。族表加行只会产出永远无法完成的死钮(#222 律)。

Solution 方向(spec 阶段钉死,此处仅轮廓)

授权发起方从 server 移到 daemon:执行机本地完成 PKCE 回环(pi 系 @earendil-works/pi-ai 已带 OpenAI OAuth 的 PKCE 回环实现,可考证复用面),凭据落 daemon 侧或加密回传 server。需要钉的决策点:

  1. 授权命令形态(pacman auth <provider>?)与 UX(浏览器开在 daemon 机器上——headless 执行机怎么办:URL 转发给 web 面?)
  2. 凭据存放:daemon 本地(provider 调用也走 daemon?)vs 回传 server(secretBox 加密位已有)——决定 provider 调用拓扑
  3. per-family OAuth client 凭证位(现单对 PACMAN_GITHUB_OAUTH_CLIENT_ID/SECRET,config 四处消费单源)
  4. xai 端点考证(research 项):authorize/token/scope 三件公开记录极薄;「Sign in with SuperGrok or X Premium」双通道是否存在第三方可注册的 client 程序。无考证结论前 xai 不进任何族表
  5. github-copilot 现路径不动(server-callback 对 GitHub 成立),双形态并存的族表字段设计(如 authFlow: 'server-callback' | 'daemon-pkce')

可复用地基(#284 侦察成果)

触发线

订阅类模型接入的真实使用诉求涌现(自用即第一用户,06 册 D1),或产品负责人显式启动。触发后先走 grilling 钉上述 5 决策点,再拆 task 票。

Acceptance criteria(spec 票)

  • 5 个决策点全部有裁决记录(ADR 或 06 册增补)
  • xai 考证有结论(可注册 → 进族表设计;不可 → 记录并除名)
  • 拆出的 task 票带 blocking 边

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions