相關主題
商品描述
本書圍繞大語言模型應用從演示走向工程落地的關鍵問題,在業界Harness Engineering實踐基礎上,總結出一套面向Agent落地的工程框架,系統講解如何在模型之外建立約束、工具、上下文、記憶、驗證、反饋,使Agent能夠穩定、安全、可覆現地完成真實任務。
本書從AI編碼任務失敗案例出發,逐步實現一個Harness框架,並通過工具系統、MCP、Prompt Cache、上下文壓縮、驗證閉環、反饋調節和多Agent協作等內容,展示生產級Agent系統的構建方法。
本書適合AI應用開發者、後端工程師、平臺工程師、架構師和技術管理者,以及希望系統理解Agent工程化的讀者閱讀。
作者簡介
陸徐洲,北京化工大學控制工程專業碩士,醫療信息化行業AI算法負責人、AI算法高級工程師,擁有8年AI算法研發與工程化落地經驗,長期從事LIS、疾控信息系統和企業級 AI 應用建設。研究方向包括Harness Engineering、Coding Agent、多Agent編排、上下文工程和生產級AI系統治理。持續發布AI Agent工程化實踐文章,關註如何將大模型能力轉化為穩定、可審計、可覆用的工程系統。
目錄大綱
第1章 3重防線:Harness如何決定Agent的生死 1
1.1 一次真實的AI編碼任務 2
1.2 使用3種Harness得到3個不同的結果 3
1.2.1 Claude Code:5步閉環,一氣呵成 4
1.2.2 Codex:沙箱隔離,另辟蹊徑 5
1.2.3 Claw Code:上下文溢出崩潰 6
1.2.4 成敗之間:一張表看懂差距 7
1.3 3類典型的失敗模式:Harness對Agent運行的影響 9
1.4 3道防線為何全部失守 10
1.5 Agent=Compose(Model, Harness) 14
1.6 Harness Engineering:AI工程的第三次躍遷 16
1.6.1 從Prompt Engineering到Harness Engineering 16
1.6.2 從零構建Harness:要代價,更要可解釋性 16
第2章 Harness Engineering方法論 18
2.1 Harness的5個設計原則及它們之間的關系 19
2.1.1 約束:3條紅線 19
2.1.2 告知:縮短試錯路徑 20
2.1.3 驗證:閉環反饋 21
2.1.4 糾正:4級恢覆階梯 21
2.1.5 人在環中:分級授權 22
2.1.6 5個設計原則的遞進關系 23
2.2 Harness的6層參考架構 25
2.2.1 全景與協作關系 25
2.2.2 Harness的架構為什麼劃分為6層 25
2.2.3 代碼模塊映射 26
2.2.4 業界公開實踐與參考架構的對應關系 27
2.2.5 可觀測性 28
2.3 補償面:Harness的動態演化 29
2.3.1 模型能力不足與組件補償 29
2.3.2 構建—觀測—移除的疊代循環 31
2.4 3類Harness實現方案的設計哲學 32
2.4.1 3類Harness實現方案的信任假設 32
2.4.2 開源Harness的可行性 33
2.5 常見的Harness能力檢查清單 34
2.5.1 清單結構 34
2.5.2 清單應用示例 35
2.6 漸進式構建路徑 37
第3章 Agent循環與約束層 39
3.1 最小可用的Agent循環 40
3.1.1 Agent循環的5個步驟 40
3.1.2 從Harness骨架到生產級框架 42
3.2 約束層的3項核心機制 44
3.2.1 路徑安全檢查 44
3.2.2 危險命令攔截 45
3.2.3 危險內容檢測 45
3.3 漸進式安全實驗 47
3.3.1 無防護運行 47
3.3.2 單層繞過 47
3.3.3 多層攔截 48
3.3.4 實驗總結 49
3.4 沙箱隔離機制 50
3.4.1 3層防禦模型 50
3.4.2 進程內策略沙箱 51
3.4.3 網絡訪問控制 53
3.4.4 敏感路徑保護 55
3.4.5 容器級隔離 56
3.5 權限模式與運行時守衛 58
3.5.1 權限模式 59
3.5.2 工具調用Hook(鉤子) 61
3.5.3 預算熔斷 62
3.5.4 LoopGuard 64
3.6 約束陷阱與進階 67
3.6.1 約束與效率 67
3.6.2 Harness與提示詞約束 68
3.6.3 規則攔截與沙箱防護 68
3.6.4 從攔截率到行為收斂度 69
第4章 工具系統與MCP 72
4.1 工具接口的設計原則 73
4.1.1 設計工具的4個標準 73
4.1.2 工具描述的精度對工具選擇的影響 74
4.2 基礎工具的實現 75
4.2.1 文件操作工具 76
4.2.2 文件與內容搜索工具 79
4.2.3 命令執行工具與超時控制 81
4.3 工具註冊與動態管控 82
4.3.1 註冊與分發機制 82
4.3.2 接口描述與模型協商 84
4.3.3 分階段動態加載 85
4.4 MCP與外部能力接入 86
4.4.1 傳輸機制與工具發現 87
4.4.2 數據庫接入示例 88
4.4.3 工具集規模的權衡 91
4.5 常見的問題與調優實踐 93
4.5.1 工具誤用的排查方法 93
4.5.2 工具數量膨脹的上下文開銷 94
4.5.3 接口描述的隱性消耗 95
4.6 工具描述的實驗評估 96
4.6.1 工具描述評測方法 96
4.6.2 工具描述提示詞的對照實驗 97
4.6.3 工具描述長度的最優區間 99
4.6.4 系統提示詞的邊界效應 101
4.6.5 評測基礎設施優化 102
第5章 上下文工程與Prompt Cache 103
5.1 倉庫即現實:Agent的操作目錄 104
5.1.1 環境線索決定行為質量 104
5.1.2 精簡AGENTS.md文件的4類關鍵信息 104
5.1.3 負向與正向措辭的對比 107
5.1.4 文檔瘦身與維護策略 108
5.2 3層文檔架構 109
5.2.1 3層發現機制 110
5.2.2 輔助配置 112
5.2.3 分層實踐 112
5.2.4 Express.js項目案例 113
5.3 系統提示詞的組裝與註入 115
5.3.1 拼接順序:base+project+rules 115
5.3.2 按工作目錄和任務類型條件註入 118
5.3.3 動態信息與靜態前綴的分離 120
5.4 Prompt Cache原理與成本優化 122
5.4.1 前綴匹配與KV緩存機制 122
5.4.2 靜態前綴最大化與動態後綴分離 123
5.4.3 命中率實測與調優實踐 124
5.4.4 長間隔會話與邊界控制 126
5.4.5 緩存策略對長會話Token累積量的影響 127
5.4.6 無原生緩存時的替代方案 128
第6章 記憶管理與上下文壓縮 130
6.1 上下文腐爛 131
6.1.1 長會話後的信噪比塌陷 131
6.1.2 有效窗口萎縮的癥狀 133
6.2 漸進式有損壓縮 134
6.2.1 L0級壓縮:工具返回結果的即時裁剪 136
6.2.2 L1級壓縮:將舊工具返回結果替換為摘要 137
6.2.3 L2級壓縮:模型生成全局上下文摘要 139
6.2.4 緊湊指令防止目標丟失 141
6.2.5 L3級壓縮:窗口溢出時的緊急截斷 142
6.2.6 壓縮後工具調用的配對修覆 143
6.2.7 壓縮機制在長會話中的實際效果 144
6.3 壓縮觸發與分級響應 145
6.3.1 壓縮觸發與預算約束 146
6.3.2 4級壓力響應 148
6.4 跨會話的長期記憶 150
6.4.1 6層記憶架構 150
6.4.2 自動記憶讀/寫機制 151
6.4.3 離線去重與整理 154
6.5 會話持久化與斷點續傳 157
6.5.1 JSONL格式保存 157
6.5.2 中斷恢覆 159
6.5.3 3步喚醒流程 161
第7章 驗證與對抗評估 163
7.1 自評偏差與驗證層 164
7.1.1 自評偏差:從個案到業界共識 164
7.1.2 雙Bug實驗:假陽性量化 166
7.1.3 驗證層在6層參考架構中的位置 167
7.2 驗證閉環 168
7.2.1 計算性驗證與推理性驗證 168
7.2.2 驗證職責的歸屬實驗 170
7.2.3 Harness框架強制驗證的最小實現 172
7.3 最佳實踐評估者 174
7.3.1 為什麼需要獨立Evaluator 174
7.3.2 Evaluator的系統性偏差 176
7.3.3 評估判定的5個維度 178
7.3.4 驗收清單與Sprint Contract 180
7.3.5 從偽對抗到真對抗 181
7.4 循環守衛 182
7.4.1 工程定位 182
7.4.2 4層防禦實驗 183
7.4.3 檢測機制 185
7.4.4 適用邊界 187
7.5 事前驗證 188
7.5.1 4種實現方式的對比 188
7.5.2 機械式只讀階段的反模式 189
7.5.3 Plan Mode 與 Plan Artifact 191
7.5.4 適用邊界與決策依據 192
7.6 驗證層的整體設計 193
7.6.1 驗證層整體結構:4個防禦機制的時間軸排列 193
7.6.2 組件激活策略 195
7.6.3 驗證粒度與反饋回路 196
7.6.4 其他5層的耦合 198
7.6.5 失敗模式與緩解 199
第8章 反饋調節:讓Harness自我演化 201
8.1 為什麼需要反饋 202
8.1.1 靜態 Harness的退化曲線 202
8.1.2 控制論視角:Plant與Controller 203
8.1.3 控制器狀態機 204
8.1.4 6層補償面的退化映射 207
8.2 反饋信號與信號仲裁 208
8.2.1 離線信號 208
8.2.2 在線信號 209
8.2.3 對抗信號 209
8.2.4 信號仲裁規則 210
8.3 離線評估基礎設施 210
8.3.1 Subject-Task-Runner抽象 211
8.3.2 Capture-only Runner 213
8.3.3 雙軌指標與統計顯著性 214
8.3.4 跨層對照實測 214
8.4 在線觀測 216
8.4.1 會話日誌結構化 216
8.4.2 聚合指標 217
8.4.3 異常檢測與漂移告警 218
8.4.4 LLM行為指標:Agent系統的特有維度 218
8.5 失敗挖掘與規則沈澱 220
8.5.1 失敗挖掘 220
8.5.2 半自動生成CLAUDE.md規則 221
8.5.3 失敗分診規則 223
8.5.4 技能自主進化 224
8.5.5 Dream 記憶整理 224
8.6 安全發布與灰度控制 225
8.6.1 候選變更契約 225
8.6.2 影子測試 226
8.6.3 灰度發布策略 227
8.6.4 發布門禁、多目標權衡與停止條件 228
8.6.5 反饋閉環的運營成本與執行節奏 230
8.7 安全反饋 231
8.7.1 安全防禦的4層機制 231
8.7.2 Red Team對抗評估 233
8.7.3 編排層反饋特例 235
8.7.4 失敗覆盤 236
8.8 元評估與閉環進化 237
第9章 實戰一:遺留系統重構 240
9.1 萬行級Java臨床路徑管理系統的技術債務 241
9.2 重構任務的Harness配置設計 245
9.2.1 任務邊界與約束層 246
9.2.2 工具層與上下文策略 248
9.2.3 CLAUDE.md文件與驗證層 250
9.2.4 配置代碼與運行入口 252
9.3 執行過程、結果與關鍵發現 254
9.3.1 執行概況與工具調用分布 254
9.3.2 God Service的職責拆分與Facade模式 254
9.3.3 從驗收失敗到成功的反饋閉環 256
9.3.4 Hook與只讀路徑的物理約束 257
9.3.5 自動化重構的關鍵工程結論 257
9.4 從實踐到生產級重構的遷移 258
9.4.1 遷移3步法 258
9.4.2 多語言項目的驗收適配 259
9.4.3 大規模項目的分模塊策略 259
9.4.4 常見的失敗模式與檢查清單 260
第10章 實戰二:醫療數據服務的合規加固 263
10.1 醫療數據服務的合規漏洞 264
10.1.1 3類系統性漏洞模式 264
10.1.2 10個漏洞的分類與風險等級 265
10.2 《網絡安全等級保護基本要求》與《數據安全法》的工程化
解讀 267
10.2.1 從法規條款到代碼檢查項的解讀 267
10.2.2 漏洞與法規違反項的交叉對照 268
10.3 沙箱-Hook-CLAUDE.md文件3層防禦設計 269
10.3.1 禁止外網與數據目錄隔離 270
10.3.2 PII檢測與自動脫敏Hook 272
10.3.3 在醫療場景中CLAUDE.md文件的修覆邊界 276
10.4 SQL參數化、PII脫敏與審計日誌修覆 277
10.4.1 查詢層的參數化改造 277
10.4.2 響應層的PII脫敏 281
10.4.3 審計日誌的結構化增強 282
10.4.4 硬編碼路徑與調試開關的清理 284
10.5 驗收通過與完整的審計證據鏈 285
10.5.1 verify.py文件的離線驗收框架 285
10.5.2 從Hook攔截到日誌歸檔的審計證據鏈 288
10.5.3 結構化合規日誌的JSONL格式 288
10.6 合規改造的常見失敗模式與設計權衡 290
10.6.1 沙箱開口過大與Hook正則表達式漏匹配 290
10.6.2 Schema偷換與規則稀釋 291
10.6.3 檢測強度、脫敏位置與日誌持久化的權衡 292
10.6.4 效率問題的本質:把流程變成框架行為 294
10.7 3層防禦架構的跨行業遷移 296
10.7.1 不同行業的PII正則模式替換 296
10.7.2 金融場景的網絡白名單與加密要求 296
10.7.3 跨行業不變的3層防禦架構 297
第11章 實戰三:跨語言系統集成的多Agent協作 299
11.1 編排層:從單Agent到多Agent的治理躍遷 300
11.1.1 跨系統協作的覆雜度躍遷 300
11.1.2 臨床路徑管理系統中智能預警的雙端需求 301
11.1.3 為什麼需要角色隔離而非更大的上下文窗口 302
11.1.4 編排層的設計原則 302
11.1.5 編排層的對象模型 304
11.2 角色設計與權限邊界 306
11.2.1 Architect:制訂全局計劃,只讀業務代碼 306
11.2.2 兩個Developer:對稱權限,隔離目錄 307
11.2.3 QAEngineer:跨端驗證,獨立報告 308
11.2.4 角色邊界的設計方法 309
11.3 編排方式:計劃、並行開發、驗收閉環 311
11.3.1 輪次計劃與協作順序 311
11.3.2 並行開發的前提:契約與邊界 312
11.3.3 文件作為協作接口 313
11.3.4 狀態機與收斂判斷 314
11.3.5 契約漂移與防禦機制 315
11.4 驗收設計:從基線失敗到完整通過 315
11.4.1 基線運行與預期失敗 315
11.4.2 verify.py的8項檢查 316
11.4.3 收斂條件與機器可讀報告 317
11.5 交付物與契約映射 318
11.5.1 Java端:Python服務客戶端的封裝 318
11.5.2 Python端:Java規則服務的異步封裝 319
11.5.3 QAEngineer端:跨端驗收與測試覆蓋 319
11.5.4 契約到代碼的映射關系 320
11.6 日誌審計與成本分析 322
11.6.1 JSONL日誌的證據鏈 322
11.6.2 Hook和LoopGuard的攔截價值 323
11.6.3 多Agent鏈路的成本結構 324
11.7 編排層設計的教訓 325
11.8 多Agent架構的適用邊界與遷移路徑 327
11.8.1 3個適用標準 327
11.8.2 單Agent仍更優的場景 327
11.8.3 向生產團隊遷移的4項原則 328
第12章 生產部署與成本治理 329
12.1 Token消耗與結構化觀測 330
12.1.1 5個獨立預算區段的成本分布 331
12.1.2 Token估算與日誌結構 334
12.1.3 生產指標與鏈路追蹤 335
12.1.4 緩存命中與成本預測 337
12.2 成本熔斷與模型路由 337
12.2.1 3級預算熔斷 337
12.2.2 分層模型路由 339
12.2.3 路由接口設計 341
12.3 環境隔離與數據合規 343
12.3.1 3層防禦模型 343
12.3.2 容器沙箱與資源限制 344
12.3.3 敏感數據過濾 346
12.3.4 數據不出域方案 347
12.3.5 多租戶資源隔離 347
12.4 生產運營與檢查清單 348
12.4.1 安全檢查清單 348
12.4.2 生產失敗模式 350
12.4.3 生產指標看板設計 351
12.4.4 架構決策要點 352
12.4.5 CI門禁 352
12.4.6 版本發布與回滾 353
12.4.7 事件響應機制 355
12.4.8 內核一致性驗證 356
12.5 業界實踐與Harness演進 357
12.5.1 企業安全實踐 357
12.5.2 補償面的動態演化 357
12.5.3 模型進步與工程韌性 359
12.5.4 從實踐到生產的路徑 360
