Home - maoxiaoyue/hypgo GitHub Wiki
讓 AI 用最少的 token 理解你的專案,用更準確的方式生成程式碼,用零人工、框架驗證的方式驗證結果。
早期開發時,我原本希望以 QUIC(HTTP/3)作為主要特色。但 2026 年 AI 工具的使用環境變化較大,因此後續調整了設計方向,轉向讓「人機協作」更有效率的開發體驗。 在 AI 輔助開發中,常見的挑戰是 AI 需要花費大量 token 去理解整個專案。傳統框架中,AI 通常必須閱讀分散在各檔案的 handler、service 與 model,才能推斷 API 結構與業務約束,這不僅消耗 token,也容易產生誤解。
在 AI 輔助開發中,最大的瓶頸不是 AI 不夠聰明,而是 AI 每次都要花大量 token 去「理解」你的專案。
要節省Token,則需要人類的協助
一個 50 個路由的專案,AI 要讀完所有 handler 才能理解 API 結構,可能消耗 15,000+ tokens — 這些 token 花在「理解」而非「產出」上。而且 AI 從散落各處的程式碼推斷行為,是一個有損的過程:它可能漏看中間件副作用、誤解命名慣例、不知道業務層面的約束。
HypGo 從架構層面解決這個問題。
傳統框架:AI 讀 handler → 推斷 Input/Output → 猜測約束 → 生成 → 手動測試
HypGo: AI 讀 manifest → 已知 Input/Output → 已知約束 → 生成 → 自動驗證
Token 節省帶來連鎖效益:
- 更快的回應 — AI 讀更少的程式碼
- 更準確的生成 — 結構化 metadata 比自由文本更不容易被誤解
- 更長的上下文 — 省下的 token 可用於更複雜的推理
- 更低的錯誤率 — 自動驗證取代人工 review
HypGo 的所有功能都圍繞一個迴圈設計:
你 AI 框架
│ │ │
├─ 定義 Struct ──────────→│ │
├─ 寫 Schema 路由 ───────→│ │
├─ hyp context ──────────→├─ 讀 manifest ──────────→│
│ ├─ 理解 API 結構 │
├─ 描述需求 ─────────────→├─ 生成 Handler ─────────→│
│ │ ├─ Contract 驗證
│ │ ├─ ✅ 通過 → 合併
│ │ └─ ❌ 失敗 → 回饋
│ ├─ 修正程式碼 ─────────────→│
├─ 審核業務邏輯 ←──────────┤ │
└─ 完成 ✅ │ │
你負責「什麼」(Schema),AI 負責「怎麼做」(Handler),框架負責「對不對」(Contract)。
| 原則 | 意義 | HypGo 的做法 |
|---|---|---|
| 可發現性 | AI 用最少的 token 理解專案全貌 | Schema-first 路由 + Manifest 自動生成 + hyp ai-rules 跨工具配置 |
| 可預測性 | AI 生成的程式碼位置和風格一致 | 強制慣例(Schema 註冊、Error Catalog、MVC 結構) + hyp generate 骨架生成 |
| 可驗證性 | 生成後立刻能驗對錯 | Contract Testing(contract.TestAll(t, router) 一行驗證) |
HypGo 的 Server 完全由 config.yaml 驅動,無需修改任何程式碼:
server:
addr: ":443"
protocol: "auto" # http1 | http2 | http3 | auto
tls:
enabled: true
cert_file: "/path/to/cert.pem"
key_file: "/path/to/key.pem"設定 protocol: auto 後,Server 在同一個 process 內同時運行:
| 協議 | 傳輸層 | 適用情境 |
|---|---|---|
| HTTP/1.1 | TCP + TLS | 相容舊客戶端、Proxy 中間層 |
| HTTP/2 | TCP + TLS | 多工串流、Server Push |
| HTTP/3 | QUIC(UDP) | 高延遲網路、行動端弱網環境 |
瀏覽器透過 ALPN 自動協商最佳協議;Server 回傳 Alt-Svc: h3=":443" header,讓支援 HTTP/3 的客戶端自動升級,開發者無感介入。
┌──── HTTP/1.1 + HTTP/2 (TCP :443)
Client ─── TLS ──┤
└──── HTTP/3 / QUIC (UDP :443)
↑
Alt-Svc 自動升級
HypGo 在每個請求生命週期的熱路徑上系統性消除臨時分配,降低 GC 觸發頻率:
| 優化點 | 技術 | 效果 |
|---|---|---|
| Context 物件 |
sync.Pool 複用,reset() 改 map 重建 |
消除每請求 make(map) 分配 |
| 路由參數 Params |
paramsPool — AcquireParams / ReleaseParams
|
消除每請求 []Param 分配 |
| LRU 快取 cacheItem |
cacheItemPool 複用被淘汰的節點 |
消除每次 cache miss 的 &cacheItem{} 分配 |
| WebSocket 廣播 slice |
clientSlicePool — broadcast 後歸還 |
消除每次廣播的 make([]*Client) 分配 |
| DB 讀副本輪詢 |
atomic.Pointer 無鎖讀路徑 |
消除讀路徑 RWMutex 競爭 |
| Middleware Header | 初始化時預計算 HSTS 等 header 字串 | 消除每請求 fmt.Sprintf 分配 |
實測效果:在高並發場景下,GC 暫停時間降低 40–60%,P99 延遲更穩定。
| 功能 | 說明 | 節省 token 的原理 |
|---|---|---|
| Schema-first 路由 | 路由攜帶 Input/Output 型別、描述、標籤 | AI 從 metadata 理解 API,不需讀 handler 原始碼 |
| Project Manifest |
hyp context 產出 YAML/JSON 專案描述 |
AI 讀一個檔案就掌握全部路由、型別、設定 |
| Contract Testing |
contract.TestAll(t, router) 一行驗證 |
AI 不需要寫測試程式碼,框架自動驗證 |
| AI Rules |
hyp ai-rules 生成 5 種 AI 工具配置檔 |
任何 AI 工具開啟專案就知道慣例,零 prompt 設定 |
| Typed Error Catalog | errors.Define("E1001", 404, "Not found") |
AI 使用已定義的錯誤碼,不自行發明 |
| Annotation Protocol |
// @ai:constraint max=100 結構化標註 |
AI 從註解讀取業務約束,不需讀函式實作 |
| Change Impact |
hyp impact <file> 分析修改影響 |
AI 在修改前知道影響範圍,減少錯誤修改 |
| AutoSync | Server 啟動時自動更新 .hyp/context.yaml
|
Manifest 永遠與程式碼同步,不需手動維護 |
| Migration Diff | Model struct 變更後自動產生 SQL | AI 不需要手寫 migration,減少 SQL 錯誤 |
| Diagnostic |
GET /_debug/state 系統快照 |
AI debug 時一個請求就能取得完整狀態 |
| 功能 | 說明 |
|---|---|
| HTTP/1.1 + HTTP/2 + HTTP/3 | 三協議同時運行,自動 ALPN 協商 |
| Radix Tree 路由 | O(k) 路徑查找 + LRU 快取 + 參數池化 |
| WebSocket 四協議 | JSON / Protobuf / FlatBuffers / MessagePack |
| 0-RTT Session Cache | TLS 1.3 快速恢復,LRU + TTL + replay attack 防護 |
| GC 優化 | Context pool、Params pool、cacheItem pool、broadcast pool、map 重建 |
| Graceful Restart | Unix SIGUSR2 觸發,FD 傳遞,零停機 |
| 功能 | 說明 |
|---|---|
| 由Bun延伸 | MySQL / PostgreSQL / TiDB 讀寫分離(lock-free round-robin) |
| Redis / KeyDB | 35 個高階方法(KV、Hash、List、Set、ZSet、Pub/Sub、Pipeline) |
| Cassandra 插件 | 動態載入 |
| 層級 | AI 可見 | AI 不可見 | 原理 |
|---|---|---|---|
| Manifest | 路由路徑、型別名稱 | DSN、密碼、token | AutoSync 過濾敏感欄位 |
| Diagnostic | 連線狀態、記憶體用量 | 資料庫內容、使用者資料 | DSN redact |
| Schema | 欄位名與型別 | 實際資料值 | 只存型別 metadata |
| Impact | import 依賴圖 | 檔案內容、變數值 | 只掃描 import 路徑 |
設計原則:AI 看得到結構,看不到秘密。
hypgo/workspace/
├── cmd/hyp/ CLI 工具
└── pkg/
├── server/ HTTP 伺服器(HTTP/1.1、H2、H3)
├── router/ Radix Tree 路由器 + Schema 整合
├── context/ 請求上下文(物件池、協議感知)
├── schema/ Schema-first 路由定義
├── manifest/ Project Manifest 自動生成
├── contract/ Contract Testing 內建驗證
├── airules/ 跨 AI 工具配置檔生成
├── errors/ Typed Error Catalog
├── migrate/ Migration Diff(SQL 自動生成)
├── annotation/ Annotation Protocol
├── impact/ Change Impact Analysis
├── autosync/ .hyp/context.yaml 自動同步
├── diagnostic/ Diagnostic Endpoint
├── scaffold/ 智慧 Scaffold
├── fixture/ Test Fixture Builder
├── watcher/ Hot Reload + Change Summary
├── middleware/ 中間件(CORS、CSRF、JWT、RateLimiter…)
├── hidb/ 資料庫抽象層(讀寫分離、Redis、Cassandra)
├── websocket/ WebSocket(四協議 + AES + HMAC)
├── logger/ 結構化日誌
├── config/ 設定載入與驗證
└── json/ JSON 驗證
Request → Server(HTTP/1.1 / H2 / H3 自動偵測)
→ 全域中間件鏈(BodyLimit → RateLimiter → Security Headers → CORS → CSRF)
→ Router.ServeHTTP(Radix Tree O(k) / LRU O(1) 快取命中)
→ Group 中間件 + Route Handler
→ Context(JSON / Protobuf / 檔案回應)
→ ResponseWriter → Client
go install github.com/maoxiaoyue/hypgo/cmd/hyp@latest
hyp api myservice && cd myservice && go mod tidy
hyp generate model user && hyp generate controller user
hyp ai-rules # ⚡ 必要:生成 AI 協作檔案hyp new cli mytool && cd mytool && go mod tidy
hyp generate command process
hyp generate command export
go run . processhyp new desktop myapp && cd myapp && go mod tidy
hyp generate view settings
hyp generate view dashboard
go run .| 分類 | 命令 | 說明 |
|---|---|---|
| 專案 | hyp new <name> |
全棧專案 |
hyp new cli <name> |
CLI 工具專案 | |
hyp new desktop <name> |
桌面應用(Fyne GUI) | |
hyp api <name> |
API-only 專案 | |
hyp run |
啟動(熱重載) | |
hyp restart |
零停機重啟 | |
| AI 協作 | hyp context |
生成 manifest |
hyp ai-rules |
生成 AI 工具配置檔 | |
hyp chkcomment <file> |
註解檢查 | |
hyp impact <file> |
變更影響分析 | |
| 生成 | hyp generate controller <name> |
生成 controller |
hyp generate model <name> |
生成 model | |
hyp generate service <name> |
生成 service | |
| 生成(CLI) | hyp generate command <name> |
Cobra 子命令 |
| 生成(Desktop) | hyp generate view <name> |
Fyne GUI 視圖 |
| 資料庫 | hyp migrate diff |
產生 SQL migration |
hyp migrate snapshot |
儲存 schema 快照 | |
| 部署 | hyp docker |
建構 Docker 映像 |
hyp health |
健康檢查 |
| 套件 | 文檔 | 說明 |
|---|---|---|
| server | server.md | HTTP/1.1、HTTP/2、HTTP/3 統一伺服器 |
| router | router.md | Radix Tree 路由 + Schema 整合 |
| context | context.md | 請求上下文 + 物件池 |
| schema | schema.md | Schema-first 路由定義 |
| manifest | manifest.md | Project Manifest 自動生成 |
| contract | contract.md | Contract Testing 內建驗證 |
| airules | airules.md | 跨 AI 工具配置檔生成 |
| scaffold | scaffold.md | 智慧程式碼生成(Web + CLI / Desktop / gRPC v0.8.5+) |
| grpc | grpc.md | gRPC Server + Interceptor v0.8.5+
|
| errors | errors.md | Typed Error Catalog |
| migrate | migrate.md | Migration Diff |
| middleware | middleware.md | 中間件 |
| hidb | hidb.md | 資料庫抽象層 |
| websocket | websocket.md | WebSocket 四協議 |
| config | config.md | 設定載入 |
| logger | logger.md | 結構化日誌 |
| json | json.md | JSON 驗證 |
| 文檔 | 說明 |
|---|---|
| theory.md | 人機協作設計模式理論 |
| suggestion.md | 人機協作開發實戰指南 |
| hyp-cli.md | CLI 命令完整說明 |
| hyp-difflog.md | AI 變更追蹤(可開關) |
| how_to_schema.md | Schema 路由完整指南 |
| input_output.md | Input/Output 機制詳解 |
| manifest.md(原理) | Manifest 原理與運作機制 |
| 項目 | 規格 |
|---|---|
| 語言 | Go 1.24+ |
| 模組路徑 | github.com/maoxiaoyue/hypgo |
| 協議 | HTTP/1.1、HTTP/2、HTTP/3(QUIC) |
| ORM | extending from Bun |
| 設定 | YAML(Viper) |
| 授權 | MIT |
| 測試 | 354 tests, 21 packages, 0 failures |
git clone https://github.com/maoxiaoyue/hypgo.git && cd hypgo
go mod tidy
go test ./pkg/... -v # 354 tests
go vet ./pkg/... # 零警告| 分支 | 用途 |
|---|---|
main |
最新版本 |
dev_YYYYMMDD |
功能開發 |
提交規範:feat: / fix: / refactor: / test: / docs:
問題回報:GitHub Issues