域驅(qū)動設(shè)計(jì)結(jié)合AI Agent:用Harness與Loop構(gòu)建可控智能系統(tǒng))
這次我們來看一個(gè)關(guān)于“Harness”、“Loop”和“領(lǐng)域模型”如何與AI結(jié)合的技術(shù)思考。這個(gè)話題不是介紹一個(gè)具體的開源工具而是探討一種工程實(shí)踐和思維框架。它源于對傳統(tǒng)“敏捷開發(fā)”培訓(xùn)的反思并試圖通過“領(lǐng)域模型”這一核心概念來構(gòu)建更可控、更高效的AI應(yīng)用開發(fā)流程。如果你正在為AI項(xiàng)目的需求飄忽、效果不穩(wěn)定、難以融入現(xiàn)有業(yè)務(wù)系統(tǒng)而頭疼這篇文章或許能提供一個(gè)新的視角。簡單來說這討論的是如何將軟件工程中成熟的“領(lǐng)域驅(qū)動設(shè)計(jì)”DDD思想與當(dāng)前火熱的AI Agent、Human-in-the-Loop等模式相結(jié)合打造一個(gè)結(jié)構(gòu)清晰、邊界明確、且人類專家能深度參與的AI系統(tǒng)開發(fā)“韁繩”Harness和“循環(huán)”Loop。其核心價(jià)值不在于提供一個(gè)即插即用的代碼庫而在于提供一套方法論幫助團(tuán)隊(duì)降低AI的“幻覺”風(fēng)險(xiǎn)提升復(fù)雜AI任務(wù)的可控性與可交付性。本文將帶你梳理幾個(gè)關(guān)鍵概念什么是Harness Engineering和Loop Engineering它們?nèi)绾闻c領(lǐng)域模型結(jié)合這種思路對實(shí)際開發(fā)AI應(yīng)用如基于LangGraph構(gòu)建Agent工作流有什么具體指導(dǎo)意義我們會從理念剖析到實(shí)踐映射探討如何將這些思想落地從而更穩(wěn)健地駕馭AI能力。1. 核心能力速覽理念框架而非具體工具首先需要明確本文討論的“Harness”和“Loop”并非某個(gè)特定的DeepSeek Harness桌面端工具盡管網(wǎng)絡(luò)熱詞中有相關(guān)搜索而是一種工程范式。下表概括了這種思路的核心要點(diǎn)能力項(xiàng)說明與解讀核心理念用領(lǐng)域模型作為“錨點(diǎn)”通過Harness韁繩控制AI行為邊界通過Loop循環(huán)引入人類反饋與迭代構(gòu)建可信賴的AI系統(tǒng)。目標(biāo)問題解決AI應(yīng)用開發(fā)中的需求不明確、輸出不可控幻覺、難以調(diào)試、無法持續(xù)演進(jìn)等問題。關(guān)鍵組件1.領(lǐng)域模型形式化、結(jié)構(gòu)化的業(yè)務(wù)知識表示是AI與業(yè)務(wù)對話的“通用語言”。2.Harness一系列約束、驗(yàn)證規(guī)則、防護(hù)欄確保AI輸出符合領(lǐng)域規(guī)范。3.LoopHuman-in-the-loop人機(jī)回環(huán)機(jī)制在關(guān)鍵決策點(diǎn)引入人工干預(yù)與校正。技術(shù)關(guān)聯(lián)與LangGraph、AI Agent工作流設(shè)計(jì)高度相關(guān)。領(lǐng)域模型可定義Agent的狀態(tài)和工具Harness是狀態(tài)轉(zhuǎn)移的約束條件Loop是特定節(jié)點(diǎn)的人工審核或修正步驟。輸出物不是可直接運(yùn)行的軟件而是設(shè)計(jì)規(guī)范、架構(gòu)圖、Prompt模板、驗(yàn)證規(guī)則集、工作流定義等。適合場景1. 企業(yè)級復(fù)雜業(yè)務(wù)流程的AI輔助或自動化。2. 對準(zhǔn)確性、合規(guī)性要求高的場景如法律、金融、醫(yī)療咨詢。3. 需要持續(xù)學(xué)習(xí)和改進(jìn)的AI系統(tǒng)。不適合場景追求快速原型、一次性簡單任務(wù)、或?qū)敵鋈蒎e(cuò)率極高的娛樂性應(yīng)用。2. 適用場景與使用邊界這種基于領(lǐng)域模型、Harness和Loop的思路主要服務(wù)于希望將AI深度集成到復(fù)雜業(yè)務(wù)中的團(tuán)隊(duì)。它最適合誰企業(yè)架構(gòu)師與技術(shù)負(fù)責(zé)人需要為AI項(xiàng)目制定可落地、可維護(hù)的技術(shù)架構(gòu)。資深后端或AI工程師負(fù)責(zé)實(shí)現(xiàn)關(guān)鍵業(yè)務(wù)邏輯與AI能力的結(jié)合需要降低集成風(fēng)險(xiǎn)。產(chǎn)品經(jīng)理與業(yè)務(wù)專家擁有深厚的領(lǐng)域知識需要一種高效的方式將其“灌輸”給AI系統(tǒng)并保持對最終輸出的控制力。能解決什么問題需求溝通漏斗業(yè)務(wù)人員用自然語言描述需求開發(fā)人員將其翻譯為領(lǐng)域模型AI基于領(lǐng)域模型理解任務(wù)。領(lǐng)域模型成為三者對齊的中間層。輸出質(zhì)量控制通過Harness如格式校驗(yàn)、邏輯規(guī)則、事實(shí)核查對AI的原始輸出進(jìn)行過濾和修正確保結(jié)果符合業(yè)務(wù)規(guī)則。系統(tǒng)可演進(jìn)性當(dāng)業(yè)務(wù)規(guī)則變化時(shí)主要修改的是領(lǐng)域模型和Harness規(guī)則而非重寫大量Prompt或代碼使系統(tǒng)更易于維護(hù)。風(fēng)險(xiǎn)可控在Loop中設(shè)置人工審核節(jié)點(diǎn)對于高風(fēng)險(xiǎn)操作如審批、支付、重要內(nèi)容發(fā)布保留最終決定權(quán)。需要警惕的邊界不是銀彈這套方法會引入前期的設(shè)計(jì)和建模成本不適合“五分鐘出一個(gè)演示”的場景。它追求的是長期穩(wěn)定性和可控性而非極致開發(fā)速度。依賴領(lǐng)域?qū)<覙?gòu)建高質(zhì)量的領(lǐng)域模型需要業(yè)務(wù)專家的深度參與。如果無法獲得清晰的領(lǐng)域知識模型本身就會有缺陷。性能開銷額外的驗(yàn)證步驟Harness和人工干預(yù)Loop會帶來延遲和成本。需要在自動化程度和可控性之間取得平衡。倫理與合規(guī)當(dāng)系統(tǒng)用于做重大決策時(shí)必須明確Human-in-the-loop的責(zé)任歸屬。Harness規(guī)則的設(shè)計(jì)也需避免引入歧視或偏見。3. 從“敏捷培訓(xùn)”到“AI駕馭”思維轉(zhuǎn)變傳統(tǒng)的“敏捷開發(fā)”培訓(xùn)強(qiáng)調(diào)快速迭代、響應(yīng)變化但在面對AI項(xiàng)目時(shí)我們常常發(fā)現(xiàn)“用戶故事”難以精準(zhǔn)定義AI的行為“沖刺”可能產(chǎn)出的是無法使用的幻覺輸出。其根源在于自然語言描述的需求對于AI來說粒度太粗、歧義太多。領(lǐng)域模型在此扮演了“精準(zhǔn)需求說明書”的角色。它不是一個(gè)模糊的想法而是用類圖、狀態(tài)機(jī)、實(shí)體關(guān)系等形式化或半形式化手段描繪的業(yè)務(wù)核心。例如一個(gè)“保險(xiǎn)理賠”領(lǐng)域模型會明確定義“保單”、“報(bào)案人”、“損失項(xiàng)”、“審核階段”、“賠付金額”等實(shí)體及其關(guān)系、狀態(tài)和規(guī)則。當(dāng)AI接收到任務(wù)時(shí)我們不再僅僅給它一段自然語言描述而是同時(shí)提供或讓其參考這個(gè)結(jié)構(gòu)化的領(lǐng)域模型。這極大地縮小了AI的“想象”空間使其輸出更有可能落在業(yè)務(wù)預(yù)期的范圍內(nèi)。Harness則是執(zhí)行層面的保障它像一組單元測試對AI的產(chǎn)出進(jìn)行斷言生成的理賠報(bào)告是否包含了所有必需的實(shí)體金額計(jì)算是否符合業(yè)務(wù)規(guī)則如果不符合則觸發(fā)修正或進(jìn)入Loop——請求人類專家介入。這個(gè)“建模-約束-反饋”的循環(huán)構(gòu)成了駕馭AI的新“敏捷”實(shí)踐迭代的不是模糊的功能而是越來越精確的領(lǐng)域模型和越來越健壯的Harness規(guī)則。4. 核心概念深度拆解4.1 領(lǐng)域模型AI與業(yè)務(wù)世界的“對齊層”領(lǐng)域模型是這一切的基石。它不僅僅是數(shù)據(jù)庫表設(shè)計(jì)更是業(yè)務(wù)邏輯的載體。形式可以是UML圖、JSON Schema、Protobuf定義、甚至是一組精心設(shè)計(jì)的Python數(shù)據(jù)類。作用結(jié)構(gòu)化Prompt將領(lǐng)域模型作為上下文提供給大模型引導(dǎo)其按結(jié)構(gòu)思考。例如“請根據(jù)以下‘客戶’實(shí)體結(jié)構(gòu)生成描述{“name”: str, “l(fā)evel”: [‘VIP’, ‘普通’], “orderHistory”: List[Order]}”。輸出約束要求AI的輸出必須符合某個(gè)特定的JSON Schema這本身就是一種最基礎(chǔ)的Harness。工具Function/Tool定義在AI Agent框架中領(lǐng)域?qū)嶓w和操作可以轉(zhuǎn)化為Agent可調(diào)用的工具。例如“創(chuàng)建理賠單(claim_id, applicant_info, loss_details)”工具。構(gòu)建建議與業(yè)務(wù)專家協(xié)作從核心子領(lǐng)域開始逐步細(xì)化。優(yōu)先保證核心概念的準(zhǔn)確性和一致性。4.2 Harness Engineering為AI套上“韁繩”Harness指的是一整套用于約束、驗(yàn)證和引導(dǎo)AI行為的工程化設(shè)施。靜態(tài)Harness事前約束系統(tǒng)Prompt定義角色、邊界和禁忌。例如“你是一個(gè)保險(xiǎn)理賠助手只能處理車險(xiǎn)理賠不回答健康險(xiǎn)問題?!陛敵龈袷綇?qiáng)制要求以JSON、XML或特定Markdown表格格式輸出。提供知識庫與上下文通過RAG檢索增強(qiáng)生成提供準(zhǔn)確的參考信息限制AI自由發(fā)揮。動態(tài)Harness事后驗(yàn)證與修正規(guī)則引擎校驗(yàn)對AI輸出的結(jié)構(gòu)化數(shù)據(jù)運(yùn)行業(yè)務(wù)規(guī)則校驗(yàn)。例如校驗(yàn)理賠金額是否在保單限額內(nèi)。事實(shí)核查調(diào)用外部API或查詢數(shù)據(jù)庫驗(yàn)證AI輸出中的關(guān)鍵事實(shí)如日期、編號、條款。邏輯一致性檢查檢查輸出內(nèi)容內(nèi)部是否自相矛盾。備用策略當(dāng)AI輸出無法通過Harness時(shí)觸發(fā)降級方案如返回固定提示、轉(zhuǎn)接人工、或使用更保守的模板生成。4.3 Loop Engineering不可或缺的“人類在環(huán)”無論Harness多完善對于關(guān)鍵業(yè)務(wù)人類監(jiān)督仍是安全網(wǎng)。Loop機(jī)制設(shè)計(jì)了何時(shí)、如何引入人工干預(yù)。設(shè)計(jì)模式審核節(jié)點(diǎn)在Agent工作流如LangGraph中設(shè)置特定節(jié)點(diǎn)AI的輸出在此節(jié)點(diǎn)暫停等待人工批準(zhǔn)或修改后才能進(jìn)入下一步。置信度閾值A(chǔ)I為輸出附上一個(gè)置信度分?jǐn)?shù)低于閾值時(shí)自動轉(zhuǎn)入人工處理隊(duì)列。異常捕獲當(dāng)Harness中的規(guī)則校驗(yàn)失敗時(shí)自動創(chuàng)建人工工單。主動學(xué)習(xí)人工糾正的結(jié)果被記錄下來用于微調(diào)模型或優(yōu)化Harness規(guī)則形成閉環(huán)。工具支持可以集成內(nèi)部工單系統(tǒng)、IM工具如釘釘/飛書機(jī)器人、或構(gòu)建專門的人工審核后臺。5. 實(shí)踐映射以LangGraph構(gòu)建AI Agent工作流為例理論需要落地。我們以當(dāng)前流行的AI Agent編排框架LangGraph為例看如何將上述思想融入一個(gè)具體的“智能客服升級理賠”Agent設(shè)計(jì)中。場景用戶向AI客服描述一起車禍Agent需要自動創(chuàng)建理賠案并初步評估損失。5.1 步驟一定義領(lǐng)域模型狀態(tài)結(jié)構(gòu)在LangGraph中State是所有節(jié)點(diǎn)共享的內(nèi)存。我們首先用Pydantic模型定義清晰的狀態(tài)結(jié)構(gòu)這就是我們的核心領(lǐng)域模型。from typing import TypedDict, List, Optional, Literal from pydantic import BaseModel # 定義領(lǐng)域?qū)嶓w class Policy(BaseModel): policy_id: str type: Literal[car, property] coverage_limit: float class Applicant(BaseModel): name: str contact: str policy_id: str class LossItem(BaseModel): description: str estimated_cost: float category: Literal[vehicle_damage, personal_injury, third_party_property] class Claim(BaseModel): claim_id: str applicant: Applicant policy: Optional[Policy] None loss_items: List[LossItem] [] total_estimated_loss: float 0.0 status: Literal[draft, verified, human_review, approved, rejected] draft # LangGraph的State繼承自TypedDict但我們可以嵌入Pydantic模型 class AgentState(TypedDict): user_input: str # 原始用戶輸入 current_claim: Claim # 核心領(lǐng)域?qū)ο?validation_errors: List[str] # Harness校驗(yàn)錯(cuò)誤 need_human_review: bool # Loop觸發(fā)標(biāo)志 review_reason: str # 需要人工審核的原因5.2 步驟二設(shè)計(jì)工作流節(jié)點(diǎn)與Harness每個(gè)節(jié)點(diǎn)執(zhí)行特定功能并可能包含Harness邏輯。from langgraph.graph import StateGraph, END import asyncio # 節(jié)點(diǎn)1信息提取與結(jié)構(gòu)化 async def extract_claim_info(state: AgentState): # 利用LLM結(jié)合系統(tǒng)Prompt和Claim的Pydantic模型定義從user_input中提取信息 system_prompt 你是一個(gè)保險(xiǎn)理賠信息提取專家。請從用戶描述中提取信息并嚴(yán)格按照提供的JSON格式輸出。 只提取你確信的信息不確定的字段留空。 # 這里模擬調(diào)用LLM實(shí)際使用ChatModel.invoke llm_response await call_llm(system_prompt, state[user_input], output_schemaClaim.schema()) draft_claim Claim.parse_raw(llm_response) state[current_claim] draft_claim return state # 節(jié)點(diǎn)2數(shù)據(jù)驗(yàn)證與豐富Harness核心 async def validate_and_enrich(state: AgentState): claim state[current_claim] errors [] # Harness 1: 關(guān)鍵字段非空校驗(yàn) if not claim.applicant.policy_id: errors.append(保單號不能為空) if not claim.loss_items: errors.append(至少需要一項(xiàng)損失描述) # Harness 2: 業(yè)務(wù)規(guī)則校驗(yàn)?zāi)M if claim.policy and claim.policy.type ! car: errors.append(本流程僅處理車險(xiǎn)理賠) for item in claim.loss_items: if item.estimated_cost 0: errors.append(f損失項(xiàng){item.description}的成本估算需大于0) # Harness 3: 外部數(shù)據(jù)核對模擬查詢數(shù)據(jù)庫 if claim.applicant.policy_id: # 模擬根據(jù)保單號查詢保單詳情 fetched_policy await fetch_policy_from_db(claim.applicant.policy_id) if fetched_policy: claim.policy fetched_policy # 校驗(yàn)申請人是否與保單匹配偽代碼 if not validate_applicant_match(claim.applicant, fetched_policy): errors.append(申請人信息與保單記錄不匹配) else: errors.append(未找到有效保單信息) state[validation_errors] errors state[current_claim] claim # 更新狀態(tài) return state # 節(jié)點(diǎn)3決策路由是否進(jìn)入Loop async def decision_routing(state: AgentState): # 根據(jù)Harness校驗(yàn)結(jié)果決定下一步 if state[validation_errors]: # 如果有錯(cuò)誤標(biāo)記需要人工審核 state[need_human_review] True state[review_reason] f數(shù)據(jù)校驗(yàn)失敗{; .join(state[validation_errors])} elif state[current_claim].total_estimated_loss 10000: # 假設(shè)閾值是1萬元 # 如果損失金額過大標(biāo)記需要人工審核 state[need_human_review] True state[review_reason] 預(yù)估損失金額超過自動處理閾值 else: state[need_human_review] False return state # 節(jié)點(diǎn)4自動處理節(jié)點(diǎn) async def auto_process_claim(state: AgentState): if state[need_human_review]: return state # 如果需要審核直接跳過此節(jié)點(diǎn) # 執(zhí)行自動創(chuàng)建理賠案、發(fā)送確認(rèn)通知等邏輯 print(f自動處理理賠案 {state[current_claim].claim_id}) state[current_claim].status approved return state # 節(jié)點(diǎn)5人工審核節(jié)點(diǎn)Loop的入口 async def human_review_node(state: AgentState): if not state[need_human_review]: return state # 在實(shí)際系統(tǒng)中這里會將state[current_claim]和state[review_reason]推送至人工審核隊(duì)列 # 并阻塞或等待回調(diào)。此處模擬掛起。 print(f[人工審核待處理] 理賠案 {state[current_claim].claim_id}。原因{state[review_reason]}) # 模擬人工審核后更新狀態(tài)為批準(zhǔn)或拒絕 # state[current_claim].status approved # 或 rejected return state5.3 步驟三組裝工作流圖將節(jié)點(diǎn)連接起來形成可控的工作流。# 構(gòu)建圖 workflow StateGraph(AgentState) # 添加節(jié)點(diǎn) workflow.add_node(“extract”, extract_claim_info) workflow.add_node(“validate”, validate_and_enrich) workflow.add_node(“decide”, decision_routing) workflow.add_node(“auto_process”, auto_process_claim) workflow.add_node(“human_review”, human_review_node) # 定義邊 workflow.set_entry_point(“extract”) workflow.add_edge(“extract”, “validate”) workflow.add_edge(“validate”, “decide”) # 條件邊根據(jù)need_human_review決定路由 workflow.add_conditional_edges( “decide”, lambda state: “human_review” if state[“need_human_review”] else “auto_process”, {“human_review”: “human_review”, “auto_process”: “auto_process”} ) workflow.add_edge(“auto_process”, END) workflow.add_edge(“human_review”, END) # 人工審核后流程結(jié)束或可設(shè)計(jì)重新進(jìn)入自動流程 # 編譯圖 app workflow.compile()5.4 步驟四運(yùn)行與測試# 初始化狀態(tài) initial_state: AgentState { “user_input”: “我的車昨天追尾了前保險(xiǎn)杠撞壞了我的保單號是IC20240001。我感覺修車要花七八千吧?!? “current_claim”: None, “validation_errors”: [], “need_human_review”: False, “review_reason”: “” } # 運(yùn)行工作流 final_state app.invoke(initial_state) print(“最終理賠案狀態(tài)”, final_state[“current_claim”].status) print(“是否需要人工審核”, final_state[“need_human_review”])通過這個(gè)例子可以看到領(lǐng)域模型Claim,Policy等Pydantic類定義了數(shù)據(jù)的形狀Harness體現(xiàn)在validate_and_enrich節(jié)點(diǎn)的各種校驗(yàn)規(guī)則中Loop機(jī)制通過decision_routing和human_review_node實(shí)現(xiàn)。整個(gè)流程結(jié)構(gòu)清晰可控性強(qiáng)。6. 工程化建議與最佳實(shí)踐將這種模式投入生產(chǎn)環(huán)境還需要考慮以下幾點(diǎn)領(lǐng)域模型的版本化與管理業(yè)務(wù)規(guī)則會變領(lǐng)域模型也需要版本化??紤]將核心的Pydantic模型或JSON Schema定義在獨(dú)立的版本化包中。Harness規(guī)則的外部化配置不要將業(yè)務(wù)規(guī)則硬編碼在節(jié)點(diǎn)函數(shù)里。可以將規(guī)則存儲在數(shù)據(jù)庫或配置文件中以便業(yè)務(wù)人員能在不重啟服務(wù)的情況下進(jìn)行調(diào)整。Loop的人工交互設(shè)計(jì)為人工審核節(jié)點(diǎn)設(shè)計(jì)友好的后臺界面清晰地展示AI的輸入、輸出、置信度、以及觸發(fā)審核的原因并提供便捷的修改和批準(zhǔn)工具??捎^測性與調(diào)試在工作流每個(gè)節(jié)點(diǎn)記錄詳細(xì)的日志包括輸入、輸出、耗時(shí)、觸發(fā)的規(guī)則等。這對于排查AI的“詭異”行為至關(guān)重要。測試策略單元測試針對每個(gè)Harness規(guī)則函數(shù)編寫測試。集成測試模擬完整工作流使用歷史案例或構(gòu)造的邊界案例進(jìn)行端到端測試。冒煙測試每天用一組固定輸入跑一遍核心流程監(jiān)控輸出是否發(fā)生漂移。安全與合規(guī)輸入過濾對user_input進(jìn)行必要的清洗防止提示詞注入。輸出凈化在最終返回結(jié)果前對內(nèi)容進(jìn)行二次過濾如去除個(gè)人隱私信息。審計(jì)追蹤記錄每一次Loop中的人工操作滿足合規(guī)審計(jì)要求。7. 常見問題與排查思路在實(shí)施過程中你可能會遇到以下典型問題問題現(xiàn)象可能原因排查方式解決方案AI輸出無法解析為領(lǐng)域模型1. Prompt未明確要求格式。2. 領(lǐng)域模型定義太復(fù)雜AI不理解。3. AI產(chǎn)生幻覺編造了不存在的字段。1. 檢查系統(tǒng)Prompt和Few-shot示例。2. 簡化模型先測試最基本字段。3. 查看AI的原始輸出。1. 強(qiáng)化輸出格式指令使用JSON Schema引導(dǎo)。2. 分步提取先提取簡單實(shí)體再組合。3. 增加Harness對無法解析的響應(yīng)進(jìn)行重試或降級。Harness規(guī)則頻繁觸發(fā)導(dǎo)致大量人工工單1. 規(guī)則過于嚴(yán)格。2. AI在特定場景下能力不足。3. 業(yè)務(wù)本身存在大量模糊地帶。1. 分析工單數(shù)據(jù)看哪些規(guī)則觸發(fā)最多。2. 檢查觸發(fā)規(guī)則的輸入樣本。1. 調(diào)整規(guī)則閾值區(qū)分“警告”和“阻斷”。2. 針對高頻場景優(yōu)化Prompt或提供更詳細(xì)的上下文。3. 將模糊規(guī)則本身作為人工審核點(diǎn)。工作流執(zhí)行緩慢1. 單個(gè)LLM調(diào)用耗時(shí)過長。2. 串行節(jié)點(diǎn)過多。3. 外部API如數(shù)據(jù)庫查詢延遲高。1. 使用異步調(diào)用。2. 分析各節(jié)點(diǎn)耗時(shí)。3. 檢查網(wǎng)絡(luò)和依賴服務(wù)狀態(tài)。1. 設(shè)置合理的LLM調(diào)用超時(shí)。2. 對于無依賴的節(jié)點(diǎn)考慮并行執(zhí)行。3. 為外部調(diào)用增加緩存、重試和降級機(jī)制。人工審核后如何重新注入流程工作流設(shè)計(jì)為審核后即結(jié)束未考慮回流。檢查工作流圖的設(shè)計(jì)。修改圖結(jié)構(gòu)讓人工審核節(jié)點(diǎn)可以修改state后重新路由到auto_process或其他節(jié)點(diǎn)。在LangGraph中這可以通過將human_review節(jié)點(diǎn)連接到decide節(jié)點(diǎn)來實(shí)現(xiàn)。8. 總結(jié)駕馭AI從“敏捷”到“精密”回顧從“敏捷開發(fā)培訓(xùn)”到“Harness與Loop工程”的思考其核心脈絡(luò)是從追求“快速響應(yīng)變化”演進(jìn)到追求“在變化中保持控制”。AI的不確定性是新的挑戰(zhàn)而軟件工程中已有的抽象、建模、校驗(yàn)和反饋機(jī)制正是應(yīng)對這一挑戰(zhàn)的寶貴資產(chǎn)。最值得嘗試的起點(diǎn)不是從頭構(gòu)建龐大系統(tǒng)而是在你現(xiàn)有的、最頭疼的AI應(yīng)用場景中挑選一個(gè)核心環(huán)節(jié)嘗試為其定義一個(gè)簡單的領(lǐng)域模型哪怕只是一個(gè)JSON Schema并添加一兩條關(guān)鍵的Harness校驗(yàn)規(guī)則。感受一下這種“先定義軌道再發(fā)車”帶來的可控性提升。最容易踩的坑試圖一次性構(gòu)建完美、龐大的領(lǐng)域模型。應(yīng)該采用迭代方式從一個(gè)小而準(zhǔn)的核心模型開始隨著業(yè)務(wù)理解和AI能力的磨合逐步擴(kuò)展和修正。下一步方向探索將這種模式與低代碼平臺結(jié)合讓業(yè)務(wù)專家能通過可視化方式定義領(lǐng)域?qū)嶓w和業(yè)務(wù)規(guī)則Harness并自動生成部分Agent工作流代碼。這或許是實(shí)現(xiàn)AI應(yīng)用民主化開發(fā)和高效迭代的關(guān)鍵。通過領(lǐng)域模型把控AI本質(zhì)上是將人類的結(jié)構(gòu)化知識轉(zhuǎn)化為機(jī)器可執(zhí)行、AI可理解的約束框架。這不僅是技術(shù)架構(gòu)的升級更是團(tuán)隊(duì)協(xié)作方式的進(jìn)化。它要求業(yè)務(wù)、開發(fā)和AI更加緊密地圍繞“共識模型”工作而這或許是這個(gè)AI時(shí)代里一種更高階的“敏捷”。