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

harness.md

maoxiaoyue edited this page May 22, 2026 · 1 revision

HypGo 與 Harness 工程

HypGo 是一個在 Go 應用層實踐 Harness 工程理念的框架。 Harness 解決「如何交付」,HypGo 解決「如何開發出值得交付的東西」——兩者共用同一套工程哲學,只是作用的層級不同。


什麼是 Harness 工程?

Harness 作為一個平台,體現了一套現代軟體工程實踐:

工程實踐 核心理念
Contract-first 先定義合約,再實作,驗證實作是否符合合約
Test Intelligence 測試不靠人寫,系統自動知道要跑哪些、怎麼跑
Change Intelligence 任何改動前,先知道影響範圍
Developer Portal 讓開發者在一個地方理解整個系統的結構
AI-Assisted Development AI 輔助生成、驗證、解釋工程產物
Reliability Engineering 系統健康狀態隨時可見,主動發現問題
Database Lifecycle 資料庫 schema 變更可追蹤、可自動化

Harness 平台在基礎設施層(Pipeline、部署、監控)實踐這套理念。
HypGo 在 Go 應用層做同樣一件事。


HypGo 實踐了哪些 Harness 工程

Harness 工程實踐 HypGo 的應用層實作
─────────────────────────────────────────────────────
Contract-first → Schema-first 路由 + Contract Testing
Test Intelligence → contract.TestAll() 自動生成測試
Change Intelligence → hyp impact 靜態影響分析
Developer Portal → hyp context / AutoSync Manifest
AI-Assisted Development → hyp ai-rules + Annotation Protocol
Reliability Engineering → /_debug/state 診斷端點
Database Lifecycle → hyp migrate diff SQL 自動生成

Human Inside — 自動化的前提是人的判斷

Harness 工程與 HypGo 共用一個更根本的設計信念:

自動化負責執行機械性工作,人類判斷負責定義「什麼才算對」。

這不是「AI 取代人」,也不是「人工監控機器」——而是人的業務判斷被結構化地嵌入系統之中,成為自動化流程的基準與邊界。

在 Harness 平台層

Harness 的自動化不會無限延伸——它在幾個關鍵點刻意留給人決策:

決策點 為什麼是人?
SLO 定義(99.9% vs 99.99%) 業務可接受的風險,只有人知道
Feature Flag 控制(推出給哪些用戶) 商業策略判斷,不能自動化
Deployment Approval Gate 生產環境變更的最後把關
Change Freeze Window 哪些時段不能部署,由業務決定
Error Budget Policy 燒完 budget 要不要停止部署,是風險偏好

Harness 自動化做的是「按照人定義的規則執行」,不是「代替人定規則」。

在 HypGo 應用層

HypGo 的分工方式完全相同,只是作用在程式碼層級:

 你(人) AI 框架
 │ │ │
 ├─ 定義 Schema ────────→│ │
 │ (業務合約) │ │
 ├─ 寫 @ai:constraint ──→│ │
 │ (業務規則) │ │
 ├─ 定義 Error Catalog ─→│ │
 │ (錯誤語言) │ │
 │ ├─ 生成 Handler ─────→│
 │ │ (機械實作) ├─ Contract 驗證
 │ │ │ (符合人定的合約?)
 ←──── 審閱業務邏輯 ──────┤ ├─ ✅ 通過
 │ (不是語法,是意圖) │ └─ ❌ 回饋 AI 修正
 └─ Done ✅ │

人決策的三件事,對應三個工具:

人的決策 HypGo 工具 說明
這個 API 的輸入/輸出長什麼樣 r.Schema(Input, Output) 業務資料結構,AI 無法自行決定
這個 API 有哪些業務規則 // @ai:constraint max=100 業務約束,從需求文件來,不從程式碼推導
系統的錯誤語言是什麼 errors.Define("E1001", 404, ...) 錯誤碼代表業務語意,必須人工設計

這三件事決定了 Contract Testing 的驗證標準、AI 生成程式碼的品質邊界,以及整個系統的業務語言。它們不能被自動化,因為它們本身就是業務判斷的結晶。

為什麼叫 Human Inside?

傳統的「AI 輔助開發」容易落入兩個極端:

  • 過度自動化:AI 從散落的程式碼推斷業務意圖 → 語法正確,業務錯誤
  • 過度手動:開發者什麼都寫 → 速度慢,重複工作多

HypGo(和 Harness)選擇第三條路:把人的判斷結構化地放在系統的核心位置,讓自動化圍繞它展開

❌ 錯誤模式:Human → AI → 產出(人在最外層,AI 黑盒決定一切)
❌ 錯誤模式:Human → Human → Human(完全手動,AI 沒有用武之地)
✅ HypGo 模式:Human(定義合約)→ AI(實作)→ 框架(驗證合約)→ Human(審閱業務邏輯)

開發者從「寫每一行實作」升級為「定義每一個業務合約」——更少的機械工作,更多的業務設計


逐項說明

Contract-first → Schema-first + Contract Testing

Harness 的 Contract-first 理念是:先定義服務間的合約,再實作,驗證實作符合合約

HypGo 把這個理念落地到 Go 的 API 開發層:

// 1. 先定義合約(你)
r.Schema(schema.Route{
 Method: "POST",
 Path: "/api/orders",
 Summary: "建立訂單",
 Input: CreateOrderReq{}, // ← 合約:請求必須長這樣
 Output: OrderResp{}, // ← 合約:回應必須長這樣
 Responses: map[int]schema.ResponseSchema{
 201: {Description: "Order created"},
 },
}).Handle(createOrderHandler)
// 2. AI 實作 Handler(AI)
// 3. 框架自動驗證合約(框架)
contract.TestAll(t, router)
// → 自動生成測試資料、發送請求、驗證 Input/Output 結構
// → 不需要手寫任何測試 case

Schema 就是合約。Contract Testing 就是合約驗證器。這是 Harness Contract-first 在 Go 框架層的直接實作。


Test Intelligence → contract.TestAll()

Harness Test Intelligence 讓 CI 系統「知道這次變更需要跑哪些測試」,測試選擇由系統決定,不靠人工判斷

HypGo 在更早的一個層次做同樣的事:測試內容由系統生成,不靠人工撰寫

Harness Test Intelligence:
 分析 diff → 決定跑哪些測試 → 提交這批測試給 CI 執行
 重點:哪些測試要跑?
HypGo contract.TestAll():
 讀 Schema Registry → 自動生成每條路由的測試資料 → 執行驗證
 重點:測試從哪裡來?

兩者不衝突,而是串聯:

Harness CI 觸發
 → 用 Test Intelligence 選出需要跑的 job
 → 跑 go test(內含 HypGo 自動生成的 contract 測試)
 → 結果回報給 Harness

Change Intelligence → hyp impact

Harness Change Intelligence 讓團隊在部署後知道「哪個版本帶入了問題」。

HypGo 的 hyp impact 把這個能力前移到提交前,在靜態分析層做 Go 程式碼的影響範圍計算:

hyp impact pkg/contract/validate.go
# Impact Analysis: pkg/contract/validate.go
# Package: pkg/contract
#
# Direct dependents (import this package):
# → pkg/errors
# → pkg/scaffold
#
# Affected tests:
# → pkg/contract/*_test.go (24 tests)
# → pkg/errors/*_test.go (19 tests)
# Total: 43 tests
#
# Risk: MEDIUM (2 packages depend on this)
Harness Change Intelligence:程式碼已部署 → 這個版本的變更影響了什麼?
HypGo hyp impact: 程式碼提交前 → 這個改動會波及哪些地方?

同一個工程理念,作用在不同的時間軸上。


Developer Portal → hyp context / AutoSync

Harness IDP(Internal Developer Portal)讓開發者用一個入口理解整個組織的服務目錄。

HypGo 的 Manifest 系統做同一件事,但目標受眾是 AI:

hyp context # 輸出 .hyp/context.yaml
hyp context -f json # JSON 格式
# .hyp/context.yaml — AI 讀這個來理解你的專案
version: "1.0"
framework: HypGo
server:
 addr: ":8080"
 protocol: http2
routes:
 - method: POST
 path: /api/users
 summary: "建立使用者"
 input_type: CreateUserRequest
 output_type: UserResponse
 handler_names: ["controllers.(*UserController).Create"]

Server 啟動時自動同步(AutoSync),context.yaml 永遠與程式碼一致。

Harness IDP:讓人類開發者理解「整個組織有哪些服務」
HypGo Manifest:讓 AI 理解「這個 Go 專案的 API 結構」

兩者可以整合:HypGo Manifest 作為 Harness IDP 中單一服務的 API 元資料來源。


AI-Assisted Development → hyp ai-rules + Annotation Protocol

Harness AIDA 讓 AI 能理解 Harness Pipeline,幫助生成和除錯 Pipeline YAML。

HypGo 的 AI 協作工具讓各種 AI 工具(Claude、Cursor、Copilot)能理解你的 Go 專案慣例:

hyp ai-rules
# 生成:
# CLAUDE.md ← Claude Code 設定
# .cursorrules ← Cursor 設定
# .github/copilot-instructions.md
# .continue/config.json
# .aider.conf.yml

同時,Annotation Protocol 讓業務約束直接寫在程式碼中,AI 讀註解就能理解限制:

// @ai:constraint max_items=100
// @ai:security requires_auth
// @ai:deprecated use CreateOrderV2 instead
func CreateOrder(c *context.Context) {
 // ...
}
Harness AIDA:讓 AI 幫你用 Harness 平台
HypGo AI 工具:讓 AI 幫你開發 Go 應用

Reliability Engineering → /_debug/state

Harness SRM(Service Reliability Management)在生產環境追蹤 SLO、Error Budget,讓問題在影響到使用者之前被發現。

HypGo 的診斷端點把「系統狀態可見」的理念帶進開發與除錯階段:

GET /_debug/state
Authorization: Bearer <token>
{
 "goroutines": 42,
 "memory": { "alloc_mb": 18.3, "gc_cycles": 7 },
 "routes": [
 { "method": "POST", "path": "/api/users", "schema": true }
 ],
 "redis": { "connected": true, "latency_ms": 1.2 },
 "db": { "master": "ok", "replicas": 2 }
}

一個請求,AI 就能取得完整的系統快照,不需要到處翻 log。

Harness SRM:生產環境 → SLO 監控、Error Budget、告警
HypGo 診斷端點:開發 / 除錯 → 單次快照、AI 可讀的系統狀態

Database Lifecycle → hyp migrate diff

Harness DB DevOps 整合 Liquibase / Flyway,讓資料庫變更與 deployment 綁定、可追蹤、可回滾。

HypGo 解決這條鏈上的最前端問題:從 Go Model struct 自動推導出需要哪些 SQL 變更:

# 開發者修改了 User struct,加了兩個欄位
hyp migrate diff
# 輸出:
# [up]
# ALTER TABLE "users" ADD COLUMN "bio" TEXT;
# ALTER TABLE "users" ADD COLUMN "avatar_url" TEXT;
#
# [down]
# ALTER TABLE "users" DROP COLUMN "bio";
# ALTER TABLE "users" DROP COLUMN "avatar_url";
hyp migrate snapshot # 儲存快照,作為下次 diff 的基準
HypGo hyp migrate diff:Go struct → 生成 SQL migration 腳本
Harness DB DevOps: SQL migration → 安全部署到生產環境

HypGo 的輸出是 Harness DB DevOps 的輸入。


層級分工

┌─────────────────────────────────────────────────────┐
│ Harness 平台層 │
│ │
│ CI Pipeline → CD 部署 → SRM 監控 → Feature Flags │
│ │
│ Test Intelligence Change Intelligence DB DevOps │
└─────────────────────────┬───────────────────────────┘
 │ go test / SQL / Docker image
┌─────────────────────────▼───────────────────────────┐
│ HypGo 應用框架層 │
│ │
│ Schema-first 路由 Contract Testing │
│ hyp context hyp ai-rules │
│ hyp impact hyp migrate diff │
│ /_debug/state Annotation Protocol │
│ │
│ → 讓「進入 Harness Pipeline 的程式碼」本身更可靠 │
└─────────────────────────────────────────────────────┘

Harness 工程的前提是:進入 Pipeline 的程式碼本身必須是高品質的。HypGo 負責這一層。


整合流程

開發者
 ├─ 定義 Schema(合約)
 ├─ hyp context → AI 讀 manifest 理解專案
 ├─ AI 生成 Handler
 ├─ contract.TestAll() → 合約驗證通過
 ├─ hyp impact → 確認影響範圍可接受
 ├─ hyp migrate diff → 生成 SQL migration
 └─ git push
Harness Pipeline
 ├─ Test Intelligence:選出需要跑的測試 job
 ├─ go test(含 contract.TestAll):合約驗證
 ├─ STO:Security 掃描
 ├─ DB DevOps:執行 migration SQL
 ├─ CD:Blue/Green 部署
 └─ SRM:SLO 監控,確認新版本穩定

摘要

HypGo 不是 Harness 的競品,也不只是 Harness 的補充工具——HypGo 是在 Go 應用框架層實踐 Harness 工程理念的具體方法。

Harness 工程實踐 Harness 平台做法 HypGo 框架做法
Human Inside SLO / Approval Gate / Feature Flag Schema / @ai:constraint / Error Catalog
Contract-first Pipeline 合約驗證 Schema + Contract Testing
Test Intelligence CI 智慧選測試 自動生成測試資料
Change Intelligence 部署後影響追蹤 提交前靜態影響分析
Developer Portal IDP 服務目錄 AI-readable Manifest
AI Assistance AIDA Pipeline 輔助 ai-rules + Annotation
Reliability SRM / SLO 監控 診斷端點快照
DB Lifecycle DB DevOps 部署 struct → SQL 自動生成

如果你認同 Harness 的工程哲學,HypGo 就是把這套哲學帶進你的 Go 程式碼的方式。
兩者都把人放在最關鍵的決策點上,讓自動化做剩下的事。


HypGo · v0.8.5 · harness.md

HypGo

繁體中文 | English


中文文件

設計文件

套件

AI 協作工具鏈

CLI 命令


English Docs

Design Docs

Packages

AI Collaboration Toolchain

CLI Commands

Clone this wiki locally

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