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_*值。 - 記錄租戶到期時間與認領邊界。
- 記載每項可拋棄資源的移除方式。
下方提示詞會要求程式開發代理提出最精簡的資源集合,並在建立任何內容前停止。