Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

theory.md

maoxiaoyue edited this page May 14, 2026 · 5 revisions

人機協作設計模式:理論與構想

HypGo Framework — AI-Human Collaborative Design Patterns 版本:0.8.0 | 2026-03


前言

這篇文檔不是使用手冊,而是設計哲學。它記錄了 HypGo 由 HTTP/3 為主軸在轉型為 AI-人機協作框架過程中,所形成的設計模式(Design Patterns)、背後的理論推導、以及對未來軟體開發方式的構想。

我相信:框架的職責正在改變。過去,框架服務的對象是「寫程式的人」。現在,框架必須同時服務「寫程式的人」和「理解程式的 AI」。這不是把 AI 當成附加功能,而是從根本上重新思考框架的資訊架構。


第一部分:問題定義

1.1 AI 輔助開發的瓶頸不是智慧,是上下文

2025 年的 LLM 已經能寫出高品質的程式碼。但在真實專案中,AI 的主要障礙不是「不會寫」,而是「不知道該寫什麼」。具體來說:

上下文取得成本

AI 每次互動都需要消耗 token 來理解專案結構。專案越大,Token消耗越大,一個中等規模的 Go 專案(50 個檔案、10,000 行程式碼),AI 要理解它的 API 表面,可能需要讀取 5,000-15,000 tokens 的原始碼。這些 token 花在「理解」而非「產出」上。

上下文品質問題

即使 AI 讀了所有檔案,從散落在各處的 handler 函式中推斷出完整的 API 行為,仍然是一個有損的過程。AI 可能漏看某個中間件的副作用,可能誤解某個參數的命名慣例,可能不知道某個欄位有業務層面的約束。

驗證缺口

AI 生成了程式碼,但如何知道它是對的?傳統流程依賴人工 code review。但 reviewer 需要同時理解「AI 應該做什麼」和「AI 實際做了什麼」,這本身就是一個高認知負荷的任務。

1.2 重新定義框架的職責

傳統框架的職責:

開發者 → 寫程式碼 → 框架執行

AI 時代框架的職責:

AI 理解專案 → AI 生成程式碼 → 框架驗證 → 開發者審核
 ↑ │
 └──────────── 框架提供結構化資訊 ───────┘

框架不再只是「執行引擎」,它同時是:

  1. 資訊提供者 — 讓 AI 快速理解專案
  2. 合約定義者 — 定義什麼是「正確」
  3. 驗證執行者 — 自動檢查 AI 的產出

第二部分:六個設計模式

模式一:Metadata-First Registration(元數據優先註冊)

問題:傳統路由註冊只記錄「路徑 → 函式」的對應,AI 要理解一個路由的行為,必須讀取整個 handler 的實作。

解法:路由註冊時同時攜帶結構化的 metadata,描述路由的語義。

傳統:router.POST("/api/users", createUserHandler)
 → AI 需要讀 createUserHandler 的 200 行程式碼
HypGo:router.Schema(schema.Route{
 Method: "POST",
 Path: "/api/users",
 Summary: "建立使用者",
 Input: CreateUserReq{},
 Output: UserResp{},
 }).Handle(createUserHandler)
 → AI 只需讀 schema metadata:6 行

設計原則:

  • 宣告式 > 推斷式 — 明確宣告 Input/Output 型別,不讓 AI 從程式碼推斷
  • 非侵入式 — Schema 路由與傳統路由可並存,不強制遷移
  • 型別安全 — Input/Output 是 Go struct,編譯器保證型別存在

理論基礎:

這借鑑了 OpenAPI / Swagger 的思想,但反轉了方向。Swagger 是從程式碼生成文檔(code-first),HypGo 是在註冊時同時定義合約(schema-first)。差異在於:Swagger 的文檔是派生物,可能與程式碼不同步;HypGo 的 schema 是註冊過程的一部分,不可能不同步。

模式二:Project Manifest(專案快照)

問題:AI 每次對話都要「重新探索」專案結構,消耗大量 token。

解法:框架自動產出一份機器可讀的專案快照,AI 讀這一份就夠了。

# .hyp/manifest.yaml — 整個專案的「目錄」
version: "1.0"
framework: HypGo
server:
 addr: ":8080"
 protocol: http2
routes:
 - method: POST
 path: /api/users
 summary: "建立使用者"
 input_type: CreateUserReq
 output_type: UserResp
 handler_names: [controllers.CreateUser]

設計原則:

  • 一次讀取 — AI 讀一個檔案就理解整個專案的 API 表面
  • 自動同步 — Server 啟動時自動更新,不需要手動維護
  • 安全過濾 — 不包含 DSN、密碼、token 等敏感資訊
  • 原子寫入 — temp file + rename,防止寫入中途損壞

理論基礎:

Manifest 本質上是專案的「壓縮表示」(compressed representation)。一個 50 個路由的專案,handler 原始碼可能有 10,000 行(~30,000 tokens),但 manifest 只有 ~200 行(~600 tokens)。壓縮比約 50:1。

這不是有損壓縮 — manifest 包含了 AI 做出正確決策所需的全部結構資訊。它省略的是實作細節,而 AI 在大多數情況下不需要實作細節就能理解 API 的意圖。

模式三:Contract-Driven Validation(合約驅動驗證)

問題:AI 生成了 handler,如何自動驗證它符合預期?

解法:Schema 不只是文檔,它同時是可執行的合約。框架內建驗證工具,根據 schema 自動測試。

// 一行測試所有 schema 路由
contract.TestAll(t, router)
// 內部行為:
// 1. 遍歷 Schema Registry 的所有路由
// 2. 為每個路由生成最小有效的 Input JSON
// 3. 發送 HTTP 請求
// 4. 驗證 status code(POST → 201、GET → 200)
// 5. 驗證 response body 符合 Output struct 的欄位
// 6. 驗證必填欄位存在

設計原則:

  • 零配置TestAll 不需要任何測試資料,自動生成
  • Schema 即合約 — 同一份 Route 定義同時用於路由註冊、Manifest 生成和測試驗證
  • 雙向驗證 — 同時驗證 Input(請求 body)和 Output(回應 body)

理論基礎:

這是 Contract Testing(合約測試)在 AI 上下文中的應用。傳統的 contract testing(如 Pact)用於微服務間的介面驗證。HypGo 將它應用於 AI-人機介面:Schema 是 AI 和 handler 之間的「合約」。

關鍵洞察:當 AI 生成 handler 時,它不需要保證「內部邏輯正確」(那是人的責任),它只需要保證「介面符合合約」(Input/Output 型別正確、狀態碼正確)。Contract Testing 恰好驗證這一點。

模式四:Structural Annotation(結構化標註)

問題:程式碼註解是自由文本,AI 很難從中提取結構化的約束資訊。

解法:定義標準化的註解前綴 // @ai:,讓 AI 從註解中直接讀取業務約束。

// @ai:constraint max_items=100
// @ai:security requires_auth
// @ai:deprecated use V2 instead
func ListUsers(c *context.Context) { ... }

設計原則:

  • 機器可讀@ai: 前綴 + key=value 格式,不是自由文本
  • 人類友善 — 仍然是標準 Go 註解,不影響編譯
  • 可審計hyp chkcomment 掃描所有 exported 區塊,報告缺少標註的位置
  • 安全 — 純 AST 分析,不執行使用者程式碼

理論基礎:

這借鑑了 Java 的 Annotation 和 Python 的 Decorator,但刻意選擇了「註解」而非「程式碼」的形式。原因是:

  1. 註解不改變程式行為 — 移除所有 @ai: 標註,程式完全不受影響
  2. 註解是漸進式的 — 不需要一次標註所有程式碼,可以逐步添加
  3. 註解是跨語言的 — 同樣的 @ai: 慣例可以移植到任何語言

模式五:Impact-Aware Modification(影響感知修改)

問題:AI 修改一個檔案時,不知道會影響多少其他模組。

解法:框架提供 import graph 分析工具,在修改前顯示影響範圍。

$ hyp impact pkg/errors/catalog.go
Impact Analysis: pkg/errors/catalog.go
Package: pkg/errors
Direct dependents (import this package):
 → pkg/contract
 → pkg/diagnostic
 → pkg/scaffold
Affected tests:
 → pkg/errors/*_test.go (19 tests)
 → pkg/contract/*_test.go (24 tests)
 Total: 43 tests
Risk: MEDIUM (3 packages depend on this)

設計原則:

  • 純讀取 — 不修改任何檔案,只分析
  • 量化風險 — LOW / MEDIUM / HIGH 三級,依據依賴數和測試數
  • 可行動 — 列出所有受影響的測試,修改後可直接跑

理論基礎:

軟體工程中的 Change Impact Analysis 已有數十年歷史。HypGo 的創新在於將它整合進 AI 工作流:AI 在修改前先跑 hyp impact,根據風險等級決定是「直接改」還是「先問人」。

這建立了一個自動化的「審慎修改」機制:高風險修改(5+ 依賴、50+ 測試)會被 AI 標記為需要人工確認,低風險修改可以直接執行。

模式六:Zero-Cost Abstraction for AI(AI 零成本抽象)

問題:AI 協作功能會不會拖慢生產環境?

解法:所有 AI 協作機制要嘛在啟動時執行,要嘛只在開發時使用,不進入請求熱路徑。

啟動時(一次性成本):
 Schema Registry → 記憶體中的 map(O(1) 查找)
 Manifest 生成 → 寫一次檔案
 AutoSync → temp + rename 原子寫入
開發時(不進入生產):
 Contract Testing → go test
 Impact Analysis → hyp impact
 Annotation Check → hyp chkcomment
每請求(零額外成本):
 路由查找 → Radix Tree(與無 schema 時完全相同)
 中間件鏈 → 與無 AI 功能時完全相同
 回應生成 → 與無 AI 功能時完全相同

設計原則:

  • 啟動成本 ≠ 運行成本 — Schema metadata 佔用啟動記憶體,但不影響每請求延遲
  • 開發工具 ≠ 生產依賴 — Contract Testing、Impact Analysis 是 CLI 工具,不編譯進生產二進位
  • 可測量 — 有 AI 功能和無 AI 功能的 benchmark 應該在誤差範圍內

理論基礎:

這借鑑了 C++ 的「零成本抽象」哲學:你不使用的功能不應該有成本,你使用的功能應該和手寫一樣高效。

在 HypGo 的語境中,這意味著:

  • 如果你不使用 Schema(),路由的效能與傳統框架完全相同
  • 如果你使用 Schema(),每請求的效能仍然與傳統框架完全相同(metadata 只在啟動時和測試時被存取)
  • 唯一的成本是啟動時多花幾毫秒建構 Schema Registry 和寫 Manifest 檔案

第三部分:閉環架構

六個模式不是獨立的功能,它們形成一個閉環:

 ┌──────────────────────────────────────┐
 │ │
 ▼ │
 1. Schema-first 註冊 │
 │ │
 ▼ │
 2. Manifest 自動生成 ──→ AI 讀取 │
 │ │
 ▼ │
 3. AI 理解專案 ──→ AI 生成程式碼 │
 │ │
 ▼ │
 4. Contract Testing 自動驗證 │
 │ │
 ├─ 通過 → 合併程式碼 │
 │ │
 └─ 失敗 → AI 修正 ──→ Impact Analysis │
 │ │
 ▼ │
 確認影響範圍 ─────────┘

每個環節都有明確的輸入和輸出:

環節 輸入 輸出 工具
註冊 Go struct + 路由路徑 Schema Registry 條目 router.Schema()
快照 Schema Registry + Config YAML/JSON manifest hyp context / AutoSync
理解 manifest.yaml AI 的專案理解 LLM 讀取
生成 AI 的理解 + 需求 handler 程式碼 LLM 生成
驗證 handler + Schema 測試結果(pass/fail) contract.TestAll()
影響 修改的檔案 依賴圖 + 風險等級 hyp impact

閉環的關鍵特性:

  1. 自動化 — 從 Schema 註冊到 Contract 驗證,無需人工介入
  2. 增量 — 每次只需處理變更的部分,不需要重新理解整個專案
  3. 可回溯 — 任何環節失敗,都有明確的上游原因和修復路徑

第四部分:與現有方法論的關係

與 TDD 的關係

HypGo 的 Contract Testing 不是取代 TDD,而是補充它。

TDD: 寫測試 → 寫程式碼 → 測試通過
HypGo: 寫 Schema → AI 寫程式碼 → Contract 驗證 → 人寫業務測試

Contract Testing 驗證的是「介面合約」(型別對不對、狀態碼對不對),TDD 驗證的是「業務邏輯」(計算結果對不對、邊界條件對不對)。兩者互補。

與 DDD 的關係

Schema-first 路由和 Typed Error Catalog 與 DDD(Domain-Driven Design)的 Ubiquitous Language 有相似之處:它們都在程式碼中建立了一套共享的詞彙表。

差異在於 DDD 的詞彙表服務於「團隊溝通」,HypGo 的詞彙表服務於「AI-人溝通」。但兩者可以合一:一個好的 Schema 定義同時是好的 DDD 語言。

與 Design by Contract 的關係

Bertrand Meyer 在 1986 年提出的 Design by Contract(契約式設計)強調前置條件、後置條件和不變式。HypGo 的 Contract Testing 是它在 AI 上下文中的現代實現:

  • 前置條件 = Input Schema(請求 body 必須符合 struct 定義)
  • 後置條件 = Output Schema + Status Code(回應必須符合宣告)
  • 不變式 = Annotation Protocol(@ai:constraint 標註的業務約束)

第五部分:對未來的構想

5.1 從「AI 輔助」到「AI 主導」

我相信AI是工具,而人的角色必不可少

目前的流程是:人決定做什麼 → AI 執行 → 人驗證。

下一步可能是:AI 主動提議 → 人審核 → AI 執行。在這個模式下,框架需要提供更多「意圖推斷」的能力:

  • Schema 中的 Tags 可以讓 AI 推斷「這個路由屬於哪個業務模組」
  • Annotation 中的 @ai:owner team=backend 可以讓 AI 知道「誰負責這段程式碼」
  • Impact Analysis 的風險等級可以讓 AI 自動決定「這個修改需不需要人工確認」

5.2 跨專案知識遷移

Manifest 的格式是標準化的。理論上,一個 AI 如果理解了 A 專案的 manifest,它對 B 專案的 manifest 的理解成本趨近於零。

這意味著 AI 可以在專案之間遷移「架構知識」:

  • 「A 專案的 user 路由是這樣設計的,B 專案也需要 user 路由,那就用類似的結構」
  • 「A 專案的 error catalog 用了 E1001 到 E1050,B 專案可以從 E2001 開始」

5.3 自適應安全等級

目前的安全設計是靜態的(所有路由共用同一套中間件)。未來可以根據 Schema 的 @ai:security 標註自動調整安全等級:

// @ai:security level=public
r.GET("/health", healthHandler) // 不需要 auth
// @ai:security level=authenticated
r.GET("/api/profile", profileHandler) // 需要 JWT
// @ai:security level=admin
r.DELETE("/api/users/:id", deleteHandler) // 需要 JWT + admin role

框架可以根據標註自動選擇中間件鏈,而不是讓開發者手動配置。


結語

HypGo 的人機協作設計模式不是一套「AI 功能」,而是一種資訊架構的重新設計

核心洞察只有一個:程式碼是給機器執行的,但理解程式碼的成本是給人(和 AI)承擔的。框架可以降低這個理解成本,方法是在程式碼旁邊放置結構化的 metadata。

六個模式的本質:

  1. Metadata-First — 降低理解成本
  2. Manifest — 降低探索成本
  3. Contract — 降低驗證成本
  4. Annotation — 降低約束發現成本
  5. Impact — 降低風險評估成本
  6. Zero-Cost — 以上所有都不增加運行成本

當這六個成本都趨近於零時,AI-人機協作就不再是「AI 幫你寫程式碼」,而是人和 AI 共同維護一個持續演進的系統


HypGo · AI-Human Collaborative Design Patterns · 2026-03

HypGo

繁體中文 | English


中文文件

設計文件

套件

AI 協作工具鏈

CLI 命令


English Docs

Design Docs

Packages

AI Collaboration Toolchain

CLI Commands

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /