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 憑證。
一次配置一項服務並完成驗證,再繼續下一項。批次請求節省不了多少時間,卻會令人更難判斷是哪一份合約執行失敗。
驗證完整生命週期
設定完成後:
- 透過管理平面查詢資源狀態。
- 執行一次伺服器端應用程式調用。
- 使用同一個冪等鍵重複一次寫入,確認只產生一次效果。
- 確認瀏覽器資產、日誌和版本控制中都沒有
coh_*值。 - 記錄租戶到期時間和認領邊界。
- 記載每項可隨時棄用資源的移除方式。
下方提示會要求程式開發代理提出最精簡的資源集合,並在建立任何內容前停止。