單一 port 三協議
以 Go 原生 http.Server.Protocols 做 h2c 多工,一個 port 同時收 gRPC、HTTP/JSON 與 MCP。
單一 port 三協議
以 Go 原生 http.Server.Protocols 做 h2c 多工,一個 port 同時收 gRPC、HTTP/JSON 與 MCP。
固定順序攔截器鏈
recover → request-id → logger → load-shed → rate-limit → circuit-breaker → auth → validation。八段順序固定,缺件即啟動失敗。
統一錯誤模型
單一對應表輸出 gRPC status、HTTP status 與 MCP error envelope,內部原因不外洩。
AI tool calls 過同一條鏈
MCP tools/call 走 in-process loopback,AI 的呼叫和人的請求一樣要過 auth 與 validation。
內建組件
分層 config、三態 health、slog + OTLP、pgx + sqlc、cache(in-memory 預設)、NATS/JetStream。
可作為模組單獨引用
go get 直接 import 框架 package——非 AI 服務取 kernel/interceptor/mq,AI 服務加 mcp bridge 與 gortexa.ai.v1 annotations,不必走 scaffold。見組件用法。
想讓 coding agent 從提示詞快速建立可執行服務骨架,請使用用 AI 快速開始:它固定 release、驗證 toolchain、清掉 scaffold 生成的可用 secret,並在同一個 shell 做 HTTP/MCP smoke test。要自己逐步執行,請走手動快速開始。
兩條路都只建立 prototype;production 必做事項見部署。
或把框架當 Go module 直接引用——go get 後直接 import 各 package,不必走 scaffold:
go get github.com/yshengliao/gortexa@latest各 package 用法見組件用法,最小 app 見以模組使用。
依照其中一條流程讓伺服器起在 :8080 後,可各打一發:
curl localhost:8080/healthz # 200:健康檢查開放curl -XPOST localhost:8080/mcp \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' # MCP:列出 proto 定義的 AI toolscurl localhost:8080/v1/resources/x # 401:auth 三協議共用Gortexa 是什麼? Contract-first、batteries-included 的 Go gRPC 框架:Protobuf 是單一事實來源,一個 h2c port 同時服務 gRPC、HTTP/JSON(grpc-gateway)與 MCP,三協議共用同一條攔截器鏈、錯誤模型與 auth。
需要哪個 Go 版本? 目標 Go 1.27。機器上有 Go 1.21+ 即可:GOTOOLCHAIN 會自動下載 go1.27.0。
三個協議怎麼共用一個 port? 用 Go 原生 http.Server.Protocols 做 h2c 多工;HTTP gateway 與 MCP bridge 經 in-process loopback 回撥 gRPC server,因此 auth、rate-limit、validation 與錯誤對應三協議完全一致。
一定要 Redis 或 Kafka 嗎? 不用。cache 預設 process-local in-memory(可選 redis);訊息佇列用 NATS(core,at-most-once)或 JetStream(durable,at-least-once),沒有 Kafka 依賴。
AI agent 怎麼呼叫我的 API? 在 proto 標上 gortexa.ai.v1 annotations,MCP bridge 就把這些 RPC 變成 MCP tools;AI 的 tools/call 和人的請求一樣要通過 auth 與 validation。細節見 MCP transport。
可以不建 scaffold、只用部分組件嗎? 可以。go get github.com/yshengliao/gortexa 之後直接 import kernel、interceptor、mq、mcp 等公開 package,逐個單獨使用。見組件用法。