# XBuckle — full documentation for LLMs > Local cloud runtime for apps and AI coding agents. Generated from the docs tree. Source: https://github.com/21stware/xbuckle Site: https://21stware.github.io/xbuckle/ Index: https://21stware.github.io/xbuckle/llms.txt ## Default endpoints - HTTP: http://127.0.0.1:3100 - MCP: http://127.0.0.1:3101 - Postgres: postgresql://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable - Redis: redis://127.0.0.1:6379 - SMTP: 127.0.0.1:1025 - anon: xbuckle-anon-key · service_role: xbuckle-service-role-key --- # Source: docs/guide/what-is-xbuckle.md # 产品介绍 **XBuckle** 让你在开发时**不必四处注册云服务**:在本机直接启动一套仿真环境(数据库、登录、存储、缓存、邮件等),用真实 SDK 对接。 AI 编程助手可以**自动配置** env 与连通;功能跑通后,再把地址与密钥换成云上的,**平滑迁到生产**。 ## 核心卖点 | 卖点 | 含义 | |---|---| | **不用四处注册** | 开发阶段不必先办一堆云账号才能写代码 | | **本机仿真环境** | 电脑上直接启动,真协议、真 SDK,不是手写假接口 | | **Agent 自动配置** | 对接说明可交给 AI 助手改配置、做自检 | | **生产平滑迁移** | 本地与云上同一套 SDK 用法;上线时换端点与密钥即可 | ## 适合谁 - 想先写功能、后办云账号的开发者 - 本地联调云能力(登录 / 库 / 存储等)的人 - 希望 AI 助手也能接上同一套本机环境的人 ## 它不是什么 | 是 | 不是 | |---|---| | 本机开发与联调环境 | 生产环境 / 托管云 | | 常见协议与 API 形状 | 完整兼容每一家云厂商 | | 桌面应用 + AI 可自动配置 | 又一个远程 BaaS | 能力是**子集**——够本地开发与验收。详见 [能做什么](/reference/services)。 ## 怎么用(一句话) **下载安装 → 本机起项目 → 自己或 Agent 对接 → 上线时迁到真实云。** - 步骤:[三分钟上手](/guide/quickstart) - 日常:[使用说明](/humans/) - AI:[给 AI 用](/agents/) - 上线检查:[Connect / Ship](/humans/connect-ship) ## 项目与端口 每个项目有自己的配置与端口。应用和 AI 连的是**当前项目**的地址。 多项目可同时开,各自改端口。说明见 [端口怎么配](/guide/ports)。 --- # Source: docs/guide/quickstart.md # 三分钟上手 不用先去各家云控制台注册。本机装好、起环境、对接应用;上线时再迁到真实云。 ## 1. 下载安装 1. 打开 [下载页(GitHub Releases)](https://github.com/21stware/xbuckle/releases) 2. 下载最新的 **macOS** 安装包(`.dmg` 或 `.zip`) 3. 把 **XBuckle** 放进「应用程序」 4. 打开应用 不需要安装 Node,不需要在终端里敲命令,也**不需要先注册云服务**。 若系统提示无法验证开发者:系统设置 → 隐私与安全性 → 仍要打开。正式签名版本一般不会遇到。 ## 2. 本机启动仿真环境 1. 新建项目(或打开已有项目文件) 2. 勾选你需要的服务,例如登录、数据库、缓存 3. 启动服务 每个项目会保存自己的端口。若和别的程序冲突,在项目菜单或设置里改端口,也可以一键「建议空闲端口」。 ## 3. 对接应用(人或 Agent) 1. 打开 **Connect** 2. 复制整页说明 3. 自己改配置,或交给 **AI 助手自动配置** 4. 用官方 SDK 访问说明里的本机地址 应用连的是**当前这个项目**的地址。功能跑通后,上线时把端点与密钥换成云上的即可(平滑迁移)。 ## 接下来 | 你想… | 去这里 | |---|---| | 熟悉桌面里有哪些页面 | [桌面应用](/guide/desktop) | | 日常怎么用 | [使用说明](/humans/) | | 让 AI 助手自动配置 | [给 AI 用](/agents/) | | 上线前检查 | [Connect / Ship](/humans/connect-ship) | ## 给贡献者 只有你在改 **XBuckle 源码** 时,才需要: ```bash git clone https://github.com/21stware/xbuckle.git cd xbuckle && npm install npm run electron:dev ``` 日常当用户使用,请始终走上面的「下载安装」。 --- # Source: docs/guide/ports.md # 端口怎么配 ## 先记住一句 **端口跟着项目走。** 应用和 AI 连的是「当前打开项目」的地址。改端口、换项目之后,以 **Connect** 里显示的为准。 ## 在哪里改 | 入口 | 做什么 | |---|---| | 标题栏项目菜单 → **Ports…** | 改当前项目的端口 | | **Settings** 里当前项目的 Ports | 同上;可点 **Suggest free ports** 自动找空闲端口 | | Settings → **新建项目默认端口** | 只影响以后新建的项目 | 两个项目不要抢同一端口。同时开多个 XBuckle 时,建议给每个项目不同端口。 ## 新建项目时的默认值 未改过时大致是: | 用途 | 默认端口 | |---|---:| | 应用 HTTP / 登录 / 存储等 | 3100 | | AI 助手(MCP) | 3101 | | 数据库 | 5432 | | 缓存 | 6379 | | 邮件捕获 | 1025 | 这些只是起点。真正连应用时,请用 Connect 复制出来的地址。 ## 本地密钥(Supabase 形) 仅本机有效,**不要**当成云上的正式密钥: | 用途 | 值 | |---|---| | 前端 anon | `xbuckle-anon-key` | | 服务端 service_role | `xbuckle-service-role-key` | ## 更多 - 速查表:[端口速查](/reference/ports) - 项目文件里怎么存端口:[项目文件](/reference/xbujson) --- # Source: docs/guide/desktop.md # 桌面应用 从 [Releases](https://github.com/21stware/xbuckle/releases) 安装后打开即可。下面是界面里你会用到的部分。 ## 主要页面 | 页面 | 做什么 | |---|---| | **Services** | 安装、启停服务;看数据、日志、对接提示 | | **Connect** | 一键生成对接说明,复制给自己或 AI | | **Control** | 看流量、做故障模拟等(进阶) | | **Ship** | 上线前检查、带密钥本地跑命令(进阶) | | **Settings** | 主题、新建项目的默认端口等 | ## 项目 - 一个项目 = 一套服务与端口配置 - 可随时改端口;多项目同时开时建议错开 - 可导出快照、在访达中显示文件 端口说明:[端口怎么配](/guide/ports)。 ## Connect 1. 服务在跑 2. 打开 Connect,复制 3. 改你的应用配置,或交给 AI Connect **不会自动改**你别的代码仓库,只生成说明。 更多:[Connect 与 Ship](/humans/connect-ship)。 --- # Source: docs/guide/serve.md # 无界面运行 大多数人直接打开桌面应用即可。 如果你只想在后台跑本机服务(CI、脚本、常驻),可以用同一份安装包加参数,不必打开窗口。 端口仍以**当前项目配置**为准;下表是新建未改时的默认值。 | 默认端口 | 用途 | |---:|---| | 3100 | HTTP / 应用对接 | | 3101 | AI(MCP) | | 5432 | 数据库 | | 6379 | 缓存 | | 1025 | 邮件捕获 | ## 怎么选 | 方式 | 适合谁 | |---|---| | 双击打开桌面应用 | 绝大多数用户 | | 安装包 `--serve` | 已安装、只要后台服务 | | 源码 `npm run serve` | 改 XBuckle 本身的贡献者 | ## 安装包:只起服务 与 GUI 是**同一份**应用,加参数即可: **macOS** ```bash /Applications/XBuckle.app/Contents/MacOS/XBuckle --serve ``` 或: ```bash open -a XBuckle --args --serve # 若 open 不传参,用直接执行 Contents/MacOS/XBuckle ``` **也可用环境变量** ```bash XBUCKLE_SERVE=1 /Applications/XBuckle.app/Contents/MacOS/XBuckle # 兼容旧名:XBUCKLE_HEADLESS=1 ``` 行为: - 不创建窗口;macOS 下隐藏 Dock 图标 - 仍读写正常的 Electron `userData`(与 GUI 同一份 handler 状态) - Ctrl+C / SIGTERM 退出 ## 生产环境怎么理解「生产」 XBuckle **不是** 线上业务后端。这里的「发布后生产」指: - 把 XBuckle **分发给开发者 / CI**,在他们机器上当本地云 - 业务生产(Origin 线上)仍走云 Supabase / Workers 推荐拓扑: ```text 开发者本机 / CI ├─ xbuckle --serve (或 npm run serve) └─ origin frontend → http://127.0.0.1:3100 ``` 可用 launchd / systemd / 进程管理器把 `XBuckle --serve` 做成登录自启,不必开 GUI。 ## 健康检查 ```bash curl -sf http://127.0.0.1:3100/health ``` ## 与 acceptance:server 的区别 - `acceptance:server`:给黄金测试用,默认挂 `fixtures/functions` - `serve` / `--serve`:给日常开发与发布后无 UI 使用;functions 目录由你设置 `XBUCKLE_FUNCTIONS_DIR` --- # Source: docs/humans/index.md # 使用说明 开发时不必先四处注册云服务。装好 XBuckle 之后,日常大致是: 1. **打开项目**(或新建一个) 2. **本机启动**需要的仿真服务 3. 在 **Connect** 复制对接说明——自己改配置,或交给 **Agent 自动配置** 4. 用真实 SDK 开发;上线前再把地址与密钥换成云上的,**平滑迁移** ## 常见场景
## 建议记住 - **生产构建**里不要写死本机地址 - 上线时换云端点与密钥,SDK 用法可保持一致 - 端口看 **Connect** 或当前项目设置 - 交给 AI 时,优先贴 **Connect** 全文 ## 更多 - [三分钟上手](/guide/quickstart) - [桌面应用](/guide/desktop) - [常见用法](/humans/workflows) - [对接各厂商面](/humans/vendor-faces) --- # Source: docs/humans/replace-supabase.md # 替代本机 Supabase 目标:在 **不改线上、不写坏其他仓库** 的前提下,用 XBuckle 替换 `supabase start`(Docker)做日常开发,降低内存与启动成本。 ## 已验证能覆盖的主路径 Origin dogfood(只读 Origin 仓库)已覆盖: - 全部 migrations 应用(含 pgcrypto) - signup → `auth.users` 同步 → `handle_new_user` → profiles - projects / rpml_files CRUD + RLS - `create_access_token` / `publish_release` - Storage bucket - `agent-chat` → 本机 LLM mock(SSE) 跑分: ```bash npm run origin:dogfood # 或 ORIGIN_ROOT=/path/to/origin npm run origin:dogfood ``` ## 人怎么切(以 Vite 前端为例) 1. 启动 XBuckle(推荐无 UI): ```bash XBUCKLE_FUNCTIONS_DIR=/path/to/your-app/supabase/functions \ XBUCKLE_AGENT_MOCK=1 \ npm run serve # 或发布后的安装包: # /Applications/XBuckle.app/Contents/MacOS/XBuckle --serve ``` 2. **只改本机** `frontend/.env.local`(不要提交、不要用于 prod build): ```bash VITE_SUPABASE_URL=http://127.0.0.1:3100 VITE_SUPABASE_ANON_KEY=xbuckle-anon-key ``` 3. 若需要跑 edge:安装 Deno;`XBUCKLE_FUNCTIONS_DIR` 指向应用的 `supabase/functions`。 - 无真实 LLM key 时加 `XBUCKLE_AGENT_MOCK=1`(打到 XBuckle `/llm`,并把 `AGENT_MODEL` 一并钉成 `gpt-mock`,覆盖 `functions/.env` 里为真实厂商写的模型名) - 想保留应用自己的模型名,用 `XBUCKLE_LLM_MODELS=模型名` 注册,或在 shell 里显式设 `AGENT_MODEL` - 有 key 时可去掉 mock,仍会强制 `SUPABASE_URL` 为本机 4. 首次空库时,用控制面或脚本应用 migrations(dogfood 使用 `POST /db/exec`)。桌面 Data 面板也可执行 SQL。 ## 仍然更适合留在 Docker / 云的场景 - 真 Google/GitHub OAuth(XBuckle 仅本地 auto-code) - 依赖完整 WAL Realtime / Presence 的产品路径 - 官方 E2E 若写死 `127.0.0.1:54321` 与 Supabase CLI 行为 - 需要 `pg_cron` 真调度外发邮件(本机为 stub + 不外发) ## 安全约束(硬) | 做 | 不做 | |---|---| | 只写 loopback URL | 把 dogfood 指到 `*.supabase.co` | | 只读其他产品仓库做验证 | 在 XBuckle 任务里改 Origin 产品代码(除非你明确要求) | | 本地 anon/service_role 固定串 | 把云密钥写进 functions `.env` 还指望 XBuckle 去打云 | ## 相关 - [端口与密钥](/guide/ports) - [Acceptance / Dogfood](/agents/testing) - [环境变量](/reference/env) --- # Source: docs/humans/connect-ship.md # Connect 与 Ship ## Connect:对接说明 根据**当前项目**已启动的服务,生成一段说明:该装什么 SDK、env 怎么写、本机地址是什么、有哪些限制。 | 场景 | 用哪个 | |---|---| | **第一次**把应用接到本机 | From scratch | | 已经接好,继续日常开发 | Develop | ### 怎么用 1. 服务在跑 2. 打开 Connect,选好 tab 3. 复制全文 4. 自己改应用配置,或整段交给 AI 助手 Connect **只生成说明**,不会自动改你别的代码仓库。 ### Develop 适合什么时候 项目已经用 XBuckle 跑起来了,新人或不熟悉的 AI 要在同一本机环境上继续改功能、迁库、联调——用 Develop,而不是重新「接线」一遍。 ## Ship:上线前 偏「快要上线」时用: - 检查清单 - env 模板 - 扫项目里用到的环境变量 - 带本机钥匙串密钥本地跑命令(日志会打码) Ship 是检查和本地验证,**不是**一键部署到云上。 生产密钥请放钥匙串或你们自己的密钥系统,不要当成 mock 里的生产真相。 ## Control(进阶) 看最近请求、模拟故障、固定某条路径的响应。适合联调「下游挂了怎么办」。 --- # Source: docs/agents/index.md # 给 AI 用 XBuckle 支持 **Agent 自动配置**:人在本机起好仿真环境后,编程助手可以读对接说明、改应用 env、接 SDK、做连通自检——减少手工搬砖。 ## 它需要知道的几件事 - 这是 **本机仿真环境**,不是远程云;开发时不必先办一堆云账号 - 应用应使用 **真实 SDK** 连当前项目的本机地址 - 上线时再换成生产端点与密钥(**平滑迁移**),不要把 loopback 写进生产构建 - 能力是子集;不确定时读 [能做什么](/reference/services) - **不要**把验收流量打到用户的生产云,除非人明确要求 ## 怎么接 1. 人先在桌面打开项目、启动服务 2. 把 **Connect** 说明交给助手,或让助手连上 MCP 3. 助手改应用 env / 初始化代码(自动配置) 4. 跑自检确认能打通本机 端口以 **当前打开的项目** 为准。 ## 深入 | 文档 | 内容 | |---|---| | [接上 MCP](/agents/mcp) | 工具、资源、常用顺序 | | [推荐流程](/agents/workflow) | 从接到验收的一步步 | | [可粘贴说明](/agents/prompt) | 直接塞进系统提示 | | [验收](/agents/testing) | 回归与 dogfood | 给爬虫 / 长上下文:站点根目录的 [llms.txt](/llms.txt)。 --- # Source: docs/agents/mcp.md # MCP 对接 ## 连接 - 默认:`http://127.0.0.1:3101` - 桌面应用启动时会拉起 MCP;headless 用 `npm run serve` / `npm run acceptance:server` 在 Cursor 等客户端里把该地址配成 MCP server(HTTP MCP)。 Agent 自助搭云的首选路径见 skill [`skills/xbuckle-local-cloud`](../../skills/xbuckle-local-cloud/SKILL.md):**打开 / 绑定应用仓库里的 `*.xbujd` 包**,按包内 `.xbuj` 用 `services.*` 对齐 runtime。 ## 项目包(真相源) ```text app/**/my-app.xbujd/ my-app.xbuj ← 提交 handler.json ← 提交 database/pg.dump ← 已被包内 .gitignore 排除;网盘 / .xbudump 共享,勿 force-add ``` 不要在应用仓库根另写 `xbuckle.stack.json`(legacy)。 ## 控制面:服务生命周期 | Tool | 用途 | |---|---| | `services.register` | 安装并启动 catalog 服务(`installed` + `running`) | | `services.unregister` | 卸载(`installed=false`,`stopped`) | | `services.configure` | 写入 per-service config bag | | `services.start` / `services.stop` | 启停(start 也会 mark installed) | | `services.list` / `services.describe` | 目录、限制、envHints、当前 config | | `stack.plan` / `stack.apply` / `stack.status` | **Legacy** — 旧 `xbuckle.stack.json` 客户端;新流程勿用 | Env 由 Agent / 人类写入应用仓库(Connect 文案或 catalog `envHints`)。XBuckle **不会**代写 `.env`。 ## 观测 | Tool | 用途 | |---|---| | `observe.tables` | 列表(public) | | `observe.query` | 只读 SQL(单条 SELECT/WITH) | | `observe.traffic` | 按 `serviceId` / `pathPrefix` / `since` 过滤流量 | | `observe.events` | mail / queue / functions / edge / billing 等缓冲 | | `traffic.recent` | 未过滤的最近流量 | | `runtime.selftest` / `compat.check` | 健康与分层检查 | ## 内容突变(数据面仍优先官方 SDK) | Tool | 用途 | |---|---| | `data.query` / `data.tables` | 控制面 SQL / 表(DDL/DML;应用应走 `:5432`) | | `auth.mint` / `auth.users.*` | 本地用户与 token | | `s3.*` / `queue.*` / `cache.*` / `mail.*` / `flags.*` / `llm.*` / … | 各 vendor face | ## 故障与 Ship | Tool | 用途 | |---|---| | `chaos.*` / `route.override.*` | 故障注入与固定响应 | | `ship.checklist` / `env_template` / `scan` / `run` | 上线检查与密钥注入跑命令 | ## Resources `resources/list` → `xbuckle://agent-guide`、`catalog`、`coverage`、`connect`、`ship` 等。 ## 反模式 - 新建 `xbuckle.stack.json` 当第二份服务清单 - 用 `data.query` 代替应用里的 `pg` 客户端 - 把云端 URL 写进本地 env 再跑 destructive 工具 - 假设 S3 / Search / Gateway 等是完整云厂商 - 指望 MCP 写出应用的 `.env`,或以 `.xbudump` 当作活绑定 --- # Source: docs/agents/workflow.md # 推荐工作流 ## 场景:帮人类把应用接到 XBuckle ```text 1. health + runtime.selftest 2. 读桌面 Connect → From scratch 的 prompt(或 services.describe) 3. 在应用仓库改 env(仅 loopback) 4. 用真实 SDK 发一个最小请求并确认 traffic.recent 5. 更新/补充测试;不要改 XBuckle 除非任务要求 ``` ## 场景:已有 .xbuj,继续开发(功能 / 数据) ```text 1. 人类 Open 仓库里的 .xbuj(旁路 .xbujd/ 复用数据) 2. 复制 Connect → Develop tab 的 prompt 3. selftest;迁移/灌数打 :5432;业务用真实 SDK 4. traffic.recent / Control 验收 5. 这不是 Connect,也不是 Ship ``` ## 场景:实现依赖 Postgres / Redis 的功能 ```text 1. 确认 database / cache 服务在跑(Develop prompt) 2. DATABASE_URL / REDIS_URL → 本机 wire 3. 迁移或建表:可用 MCP data.query / 应用 migration 跑到 :5432 4. 业务代码只用官方 SDK 5. 用 chaos.inject 验证超时/重试(可选) ``` ## 场景:Supabase 形应用(Auth + REST + RLS) ```text 1. 指 VITE_SUPABASE_URL=http://127.0.0.1:3100 2. anon key = xbuckle-anon-key 3. 应用 migrations 到 PGlite(/db/exec 或 psql :5432) 4. signup → 带 JWT 调 /rest/v1 5. 需要 edge:XBUCKLE_FUNCTIONS_DIR + deno;无 key 时 XBUCKLE_AGENT_MOCK=1 ``` ## 场景:修 flaky 联调 ```text 1. traffic.recent 看实际 path/status 2. route.override.set 固定下游 3. 或 chaos.inject 制造 500/延迟 4. 修应用重试/错误处理 5. chaos.clear ``` ## 场景:上线前检查 ```text 1. ship.scan + ship.checklist 2. ship.env_template 对齐部署密钥(不是 mock 值) 3. 提醒人类:生产构建不要 bake localhost ``` ## 输出期望 向人类汇报时写清: - 改了哪些 env(值是否仅 loopback) - 打过哪些端点 / selftest 结果 - 已知能力缺口(对照 services.describe) --- # Source: docs/agents/prompt.md # 给 Agent 的短指令 把下面整段发给 agent(可再附上桌面 Connect 页内容)。 ````md 你在使用 XBuckle —— 本机云运行时(不是托管云)。 若已通过 `npx skills add` 安装 `xbuckle-local-cloud`,先阅读该 skill 并按 bootstrap 清单执行。 ## 端点 - HTTP / Supabase 形: http://127.0.0.1:3100 - MCP: http://127.0.0.1:3101 - Postgres: postgresql://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable - Redis: redis://127.0.0.1:6379 - SMTP capture: 127.0.0.1:1025 ## Supabase 形本地 key - anon: xbuckle-anon-key - service_role: xbuckle-service-role-key ## 规则 1. 只用真实 SDK / 官方客户端打上述本机地址。 2. 业务代码不要依赖 POST /db(那是控制面);DB 走 :5432。 3. 先 MCP `runtime.selftest`,再改应用。 4. 禁止把验收流量发到 *.supabase.co 或其他生产后端,除非人类明文要求。 5. 能力是子集:先 `services.describe` 或阅读 docs 里的服务边界,不要假设完整 AWS/Supabase。 6. 需要 edge 时:人类应设置 XBUCKLE_FUNCTIONS_DIR;无 LLM key 时用 XBUCKLE_AGENT_MOCK=1。 7. 不要修改无关仓库;XBuckle 与业务仓分离。 ## 完成标准 - selftest/acceptance 相关项通过 - 汇报改动的 env(必须是 loopback)与验证过的路径 ```` ## 更短版(上下文紧张时) ```text XBuckle local runtime: HTTP :3100, MCP :3101, PG :5432, Redis :6379. Supabase anon=xbuckle-anon-key. Use real SDKs. No prod URLs. Run runtime.selftest first. Honest subsets only — check services.describe. App DB via :5432 not POST /db. ``` --- # Source: docs/agents/testing.md # 验收与 Dogfood ## 单元测试(Vitest) ```bash npm test # vitest run npm run test:watch # interactive ``` 覆盖(`tests/**/*.test.ts`): | 套件 | 内容 | |---|---| | `config-data-binding` | `.xbuj` / manifest v2 `data` 绑定解析、路径 helpers | | `xbu-merge` | Load data **merge** 规则 + `hasInstanceData` | | `profile-archive` | `.xbu` v2 ZIP 往返(FORMAT / manifest.xbuj / data/*)、legacy 读 | | `project-package` | `prepareOpenPath` / 包内 config 解析 | | `project-data-guards` | `loadProjectData` 注入 `pg.dump`、绑定空包 | | `xbu-load-ui` / path helpers | 进度 UI store、链接路径解析 | `npm run acceptance` 会先跑 `npm test`。 `.xbu` 归档往返也在 acceptance:`profile.archive_roundtrip`(`scripts/acceptance/profile-roundtrip.mjs`)。 ## 契约层:acceptance ```bash npm run acceptance ``` 会先 `typecheck`、**单元测试**、重新打包 `server.cjs`,再对 headless proxy 跑黄金脚本(LLM、Auth、S3、DB wire、Redis、Secrets、Queue、Search、MCP、Ship、PostgREST、GoTrue、Storage、Realtime、Edge …)。 期望:**全部 PASS**(当前 82 项)。细节见 [Acceptance 参考](/reference/acceptance)。 Agent 侧也可先调 `runtime.selftest`(更快的探针集合)。 ## 场景层:Origin dogfood 在 **不修改 Origin 仓库** 的前提下,只读其 migrations/functions,验证「能否当本地 Supabase」: ```bash ORIGIN_ROOT=/path/to/origin npm run origin:dogfood ``` 会: 1. 起 proxy,并设置 `XBUCKLE_FUNCTIONS_DIR` 到 Origin 的 `supabase/functions` 2. `XBUCKLE_AGENT_MOCK=1`(LLM 走本机,并把 `AGENT_MODEL` 一并钉成 `gpt-mock`) 3. 应用全部 SQL migrations 4. signup / profile / project / RLS / access_token / publish_release / storage / agent-chat 期望:**21 项全 PASS**。需要本机装 `deno` 才能跑 edge 两项。 失败时不要改 Origin;在 XBuckle 或测试脚本侧修。这类失败最常见的形态是应用 `functions/.env` 给真实厂商钉了模型名或 base URL,而 XBuckle 只改写了其中一部分—— 覆盖要成套,否则应用会打到本机 mock 却带着云厂商的模型名。 ## Agent 验收清单(复制用) ```text [ ] GET :3100/health [ ] runtime.selftest → 0 failures [ ] 应用 env 仅为 127.0.0.1/localhost [ ] 最小业务路径(登录或一条 REST/SQL)成功 [ ] traffic.recent 能看到对应请求 [ ] 若声称 Supabase 替换:migrations + RLS +(可选)agent-chat [ ] 未对 *.supabase.co 发送写操作 ``` --- # Source: docs/reference/ports.md # 端口与端点 端口是 **每个 Profile(`.xbuj`)自己的** `ports` 字段,不是全局常量。完整说明见 [指南:端口与密钥](/guide/ports)。 ## Listeners(新建未改时的默认值) | 字段 | 默认端口 | 用途 | |---:|---:|---| | `proxy` | 3100 | HTTP 代理 / SDK base / Supabase 形路径 | | `mcp` | 3101 | MCP(Agent 工具) | | `pg` | 5432 | Postgres (PGlite) wire | | `redis` | 6379 | Redis RESP | | `smtp` | 1025 | SMTP 捕获 | 应用与 Agent 应使用 Connect / MCP 给出的**当前项目**地址;多实例并行时请改各 Profile 的 ports。 ## Supabase-shaped paths(在 proxy 端口上) - `/auth/v1/*` - `/rest/v1/*` - `/storage/v1/*` - `/realtime/v1/websocket` - `/functions/v1/