網誌
代理原生後端

發佈日期 更新日期

Arag 及 Shouryamaan

AI 程式開發代理如何配置數據庫、身份驗證、儲存空間和託管

以 Markdown 閱讀

AI 程式開發代理可以建立一個 Cohesivity 項目租戶、讀取每項所需服務的即時合約、逐項配置資源,再驗證傳回的端點。代理應重用現有的 .cohesivity 檔案,並避免把兩種 Cohesivity 憑證放入瀏覽器程式碼。

這份操作說明着重於流程,而不是把每種資源的請求內容固定寫在文章中。代理執行工作時,應以 offering 頁面為準。

從應用程式需求開始

先列出應用程式需要的狀態和外部副作用:

  • 關聯式數據可能需要 postgres;
  • Google 登入可能需要 social-login;
  • 檔案上載可能需要 object-storage;
  • 公開伺服器可能需要 railway-hosting 或 cloudflare-workers;
  • 非同步電郵可能需要 inbox;
  • 即時訊息扇出可能需要 realtime。

不要因為應用程式包含 AI 功能,就直接配置向量數據庫。Postgres 與向量數據庫指南解釋語意檢索何時才需要獨立的儲存系統。

建立或重用項目

先檢查是否有有效的 .cohesivity 檔案;如果存在,就重用該租戶。另建一個租戶會拆散相關資源,也會增加清理難度。

如果還沒有項目,先預覽初始設定:

npx @cohesivity/init --dry-run

接着建立暫時項目:

npx @cohesivity/init

這個指令會寫入項目上下文,其中包含管理密鑰、應用程式密鑰、租戶 ID、生命週期、執行期設定檔和到期時間。初始租戶有效 72 小時,無須註冊;日後認領租戶則是另一個需要人同意的步驟。

讀取每項即時 offering 合約

配置前先取得該資源的目前頁面,例如即時的 Postgres offering 合約。透過 HTTP 直接請求 Cohesivity 時,必須使用非預設的 User-Agent:

curl -sS -A "MyCodingAgent/1.0" \
  https://cohesivity.ai/offerings/postgres

檢查必要的請求內容、固定的地區、目前限制、驗證方式、破壞性操作和驗證欄位。每項資源都要重複這個步驟。代理可操作後端指南解釋為甚麼狀態和清理也是合約的一部分。

先配置數據庫

目前的即時 Postgres 合約使用類似以下的管理平面請求:

curl -sS -A "MyCodingAgent/1.0" -X POST \
  https://cohesivity.ai/api/resources/postgres \
  -H "Authorization: Bearer <coh_management_key>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: provision-postgres-v1" \
  -d '{}'

Postgres 只在單一地區(新加坡)運行;請求中的 region 欄位會被接受但忽略。只有當回應明確指出資源已就緒,並傳回文件中定義的端點時,資源才算可用;不能只因請求傳回 200 就推斷已就緒。

在伺服器端應用程式碼中,Postgres 接受單一 SQL 陳述式或不可分割的批次。PostgreSQL 使用 $1 預留位置:

curl -sS -A "MyAppServer/1.0" -X POST \
  "https://cohesivity.ai/edge/postgres?key=<coh_application_key>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: create-signups-schema-v1" \
  -d '{"query":"CREATE TABLE IF NOT EXISTS signups (id BIGSERIAL PRIMARY KEY, email TEXT UNIQUE NOT NULL)"}'

查詢字串中的憑證是文件所載的備用方式。伺服器也能以應用程式密鑰交換短效邊緣工作階段權杖,再改用 bearer 驗證。兩種憑證都不能放進客戶端 JavaScript。

加入所有回調 URL 來設定身份驗證

配置社交登入時,會取代完整的回調 URL 清單,因此同一個請求必須同時包含開發和生產環境 URL:

curl -sS -A "MyCodingAgent/1.0" -X POST \
  https://cohesivity.ai/api/resources/social-login \
  -H "Authorization: Bearer <coh_management_key>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: provision-social-login-v1" \
  -d '{"callback_urls":["http://localhost:3000/auth/done","https://example.cohesivity.app/auth/done"]}'

請使用託管流程傳回的實際部署主機名稱。如果日後用只含一個 URL 的清單取代原清單,被省略的回調就會被移除。

按照各自合約配置儲存空間和託管

物件儲存設定檔、上載行為、託管檔案格式、環境變數、網域和就緒檢查,都有各自的 offering 頁面,使用前應立即重新取得。Cohesivity 目前主要的託管路徑會透過 Railway 託管 API 上載檔案,無須 Railway CLI、GitHub 連線或租戶持有的 Railway 憑證。

一次配置一項服務並完成驗證,再繼續下一項。批次請求節省不了多少時間,卻會令人更難判斷是哪一份合約執行失敗。

驗證完整生命週期

設定完成後:

  1. 透過管理平面查詢資源狀態。
  2. 執行一次伺服器端應用程式調用。
  3. 使用同一個冪等鍵重複一次寫入,確認只產生一次效果。
  4. 確認瀏覽器資產、日誌和版本控制中都沒有 coh_* 值。
  5. 記錄租戶到期時間和認領邊界。
  6. 記載每項可隨時棄用資源的移除方式。

下方提示會要求程式開發代理提出最精簡的資源集合,並在建立任何內容前停止。