Agent工程化 · 第三篇:Skill也需要Git

作者:努力撞蘑菇AI
日期:2026年6月3日 上午11:20
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Git版本管理引入Skill開發,告別Prompt失憶症,並提供可行方案。

整理版摘要

呢篇文章係作者專注AI Agent深度實踐嘅分享。佢發現好多工程師寫Prompt同Skill嗰陣,成日面對「Prompt失憶症」——改咗唔記得改咗咩,冇備份冇記錄。作者對比代碼工程一早用咗Git,但面對Skill同Prompt嘅時候,反而退化咗做手動備份派。

為瞭解決呢個問題,作者提出一個適用於大部分團隊嘅最小方案,包括三段版本號規則、每個版本必須記錄嘅資訊(版本號、日期、變更人、原因、內容、評測結果、已知問題、生產狀態),同埋兩種存儲方式:用Git + CodeBuddy管理(推薦技術團隊),或者用Langfuse等專門工具(非技術團隊)。作者仲講咗分支策略,類似Git Flow

最後,作者指出版本管理嘅真正價值係積累工程智慧,令每次迭代都企喺之前經驗上面。佢建議今日就開始做三個簡單動作:打版本號、寫版本說明、建立文件記錄。整體結論係:Skill版本管理唔係可選項,而係專業AI工程必備。

  • 結論:Skill同Prompt需要像代碼一樣做版本管理,否則改動不可追溯、回滾困難。
  • 方法:使用主版本.次版本.修訂版三段號,每版記錄變更原因、內容及評測結果。
  • 差異:Prompt diff唔直觀,必需關聯評測數據先有工程價值。
  • 啟發:完整版本記錄形成迭代軌跡,可判斷改動方向有效性,加速成熟。
  • 可行動點:即刻為現有Skill打v1.0.0,寫版本說明並建立記錄文件。
值得記低
工具

CodeBuddy

帶AI理解能力嘅代碼協作工具,可管理Skill文件版本,自動生成commit message同解讀diff。

筆記

Prompt管理工具推薦

Langfuse、PromptLayer、Helicone等,適合非技術團隊協作。

結構示例

內容片段

內容片段 text
版本號:v2.1.0變更日期:2024-03-15變更人:xxx變更原因:用戶反饋在多工具併發場景下會出現參數混淆變更內容:在工具調用部分增加了參數隔離的顯式約束,刪除了第三節中冗餘的格式說明(-200 Token)評測結果:準確性 87% → 91%,成本 1200 Token/次 → 980 Token/次已知問題:在極少數情況下(<2%)會過度約束,拒絕合理的併發請求生產狀態:灰度30%,2024-03-18全量
整理重點

Prompt失憶症:改咗唔記得改咗咩

呢篇文章開頭提到一個典型困境:有工程師精簡咗System Prompt,成本係低咗,但輸出變差咗,而且唔記得改咗邊度、冇備份。呢個狀況有個名,叫

Prompt失憶症

——你改咗,佢變咗,但講唔清楚改咗咩、點解變、點樣還原。

反而寫代碼嘅工程師一早用咗

Git

解決呢個問題:每次變更有記錄,每個版本可對比,出問題可以回滾。但怪就怪在,寫幾年代碼嘅人面對Skill同Prompt嗰陣,往往退化做「手動備份派」,改之前複製一份,改完叫system_prompt_最終版_v3_改完.txt。

整理重點

點解Skill需要版本管理?

如果冇版本管理,你會面對以下四個問題

  • 改動不可追溯:三個月前嘅改動點解做?改咗咩?當時嘅測試結論係咩?冇記錄。
  • 回滾無法執行:新版本上線出問題,你能喺十分鐘內回滾到上一個穩定版本嗎?多數團隊做唔到。
  • A/B測試無法進行:想知道新System Prompt比舊嘅好定差,需要兩個版本同時運行對比指標,冇版本管理做唔到。
  • 多人協作變災難:兩個人同時改同一個Skill,改完一合併——邊個版本算數?

呢四個問題,任何一個喺代碼工程都早有成熟解法,移植到Skill管理完全一樣。

整理重點

Prompt版本管理同代碼版本管理嘅異同

先講相同嘅地方

  • 都需要變更記錄(改咗咩、點解改、邊個改)
  • 都需要回滾能力(能快速切換到歷史版本)
  • 都需要分支概念(實驗版本唔影響生產版本)

呢啲係版本管理嘅共通需求

再講唔同嘅地方

  • Prompt嘅diff唔直觀:代碼diff睇一眼大概明,但Prompt嘅diff經常係刪咗一句、加咗一個例子,但呢句同例子對行為嘅影響,淨睇diff睇唔出。
  • Prompt嘅版本評估成本更高:代碼跑測試套件通過就得,Prompt評估往往要人工審核或LLM-as-judge,每次都要花時間同錢。
  • Prompt嘅變更粒度更粗:代碼可以改一行,Prompt嘅最小有意義變更往往係一段——改咗一句話,成個Skill嘅行為基調都可能變。

Prompt版本管理更依賴評測數據

整理重點

實用方案:今日就能落地

版本號規則:用三段版本號——

主版本.次版本.修訂版

主版本:核心行為根本性變化;次版本:添加新能力、修改工具調用邏輯;修訂版:修復邊界case、措辭優化。

每個版本必須記錄嘅信息:版本號、變更日期、變更人、變更原因、變更內容、

評測結果

、已知問題、生產狀態。呢啲唔係繁文縟節,三個月後你睇返呢條記錄,五秒就明。

存儲方式推薦用

Git + CodeBuddy

方案:將Skill嘅System Prompt存成純文字文件,納入代碼倉庫,每次改動寫清楚commit message,評測結果記喺PR描述裏。CodeBuddy可以自動生成commit message、提供diff解讀、關聯評測,將版本管理變成工程工作流一部分。非技術團隊可以考慮Langfuse等專門工具。

分支策略

類似Git Flow嘅分支策略

——main行穩定版本,experiment做實驗,hotfix做緊急修復。同代碼Git Flow幾乎一樣。

整理重點

版本管理嘅真正價值與即時行動

做好版本管理之後,你會得到Skill嘅進化記錄。每一個版本、每一次改動、每一次評測結果,形成一條完整迭代軌跡。呢條軌跡話你知呢個Skill喺咩方向改動有效,咩方向無效,邊類邊界case反覆出現,成熟度曲線係收斂定係震盪。

版本管理嘅真正價值係積累工程智慧

一個冇版本記錄嘅Skill,每次迭代都由零開始摸索;一個有完整記錄嘅Skill,每次迭代都企喺之前經驗嘅肩膀上。

  1. 1 揾到你而家用緊嘅一個Skill,畀佢打一個當前版本號,哪怕係v1.0.0。
  2. 2 寫一段版本說明,記錄佢而家嘅狀態、已知嘅問題、上次改動嘅原因。
  3. 3 建立一個文件或者文檔,將呢啲信息存落嚟,以後每次改動都更新。


一、你改過幾多次Prompt,仲記唔記得改咗啲乜嘢?

上一篇講完成本優化,我收到一個好典型嘅問題:

"我將System Prompt精簡咗,成本真係低咗,但係覺得有啲輸出差咗——但我唔記得改咗邊度,亦都冇備份。"

呢個係Prompt工程入面好常見嘅一種困境,有個唔係幾好聽嘅名:Prompt失憶症

你改咗,佢變咗,但你講唔清楚改咗啲乜、點解變、點樣還原。

代碼工程一早解決咗呢個問題——Git。每次變更有記錄,每個版本可以對比,出咗問題可以回滾。

但奇怪嘅係,寫咗幾年code嘅工程師,面對Skill同Prompt嘅時候,往往退化咗做"手動備份派"——改之前複製一份,貼落備忘錄,檔案名叫system_prompt_最終版_v3_改完.txt

呢篇文章想討論一個認真但好少被認真對待嘅問題:Skill嘅版本管理,應該點樣做?

圖片


二、點解Prompt需要版本管理

先講清楚問題嘅規模。

一個成熟嘅Agent系統,Skill數量通常喺10到50個之間。每個Skill嘅System Prompt平均每兩個禮拜會迭代一次。迭代嘅原因各式各樣:修復邊界case、優化成本、適配新工具、改善輸出格式……

如果冇版本管理,你會面對:

問題一:改動唔可以追溯三個月前嗰次改動點解要做?改咗啲乜?當時嘅測試結論係乜?冇記錄,冇答案。

問題二:回滾冇辦法執行新版本上線出咗問題,你可以喺十分鐘之內回滾到上一個穩定版本嗎?大多數團隊嘅答案係:唔得,因為上一個版本唔知存在邊度。

問題三:A/B測試冇辦法進行你想知道新嘅System Prompt比舊嘅好定差,需要兩個版本同時運行、對比指標。冇版本管理,呢件事做唔到。

問題四:多人協作變成災難兩個人同時喺改同一個Skill,改完一合併——邊個嘅版本算數?

呢四個問題,任何一個喺代碼工程入面都一早有成熟解法。移植到Skill管理入面,邏輯完全一樣。


三、Prompt版本管理同代碼版本管理嘅異同

喺傾具體方案之前,先諗清楚Prompt同代碼嘅差異——因為呢啲差異決定咗版本管理嘅方式唔可以完全照搬。

相同嘅地方:

  • 都需要變更記錄(改咗啲乜、點解改、邊個改嘅)
  • 都需要回滾能力(可以快速切換到歷史版本)
  • 都需要分支概念(實驗版本唔影響生產版本)

唔同嘅地方:

Prompt嘅diff唔直觀。代碼diff睇一眼基本上可以理解變更意圖,Prompt嘅diff經常委係"刪咗一句話、加咗一個例子",但呢句話同呢個例子對行為嘅影響,剩係睇diff睇唔出。你需要嘅唔單止係"改咗啲乜",仲有"改咗之後表現點樣變咗"。

Prompt嘅版本評估成本更高。代碼跑測試套件,通過就係通過。Prompt嘅評估往往需要人工審核或者LLM-as-judge,每次都要花時間同錢。

Prompt嘅變更粒度更粗。代碼可以改一行,Prompt嘅最小有意義變更往往係一段——改咗一句話,成個Skill嘅行為基調都可能變。

呢啲差異意味住:Prompt嘅版本管理需要喺記錄變更嘅同時,強制關聯評測結果。一個冇配套評測數據嘅Prompt版本,幾乎冇工程價值。


四、一個實用嘅版本管理方案

唔談理想化嘅工具鏈,談一個大多數團隊今日就可以落地嘅最小方案。

4.1 版本號規則

用三段版本號:主版本.次版本.修訂版

  • 主版本:Skill嘅核心行為發生根本性變化(例如從單步執行改成多步規劃)
  • 次版本:添加新能力、修改工具調用邏輯、顯著改變輸出格式
  • 修訂版:修復邊界case、措辭優化、唔影響核心行為嘅小改動

唔好用日期做版本號,日期冇辦法傳遞變更嘅重要程度。

4.2 每個版本必須記錄嘅信息

版本號:v2.1.0
變更日期:2024-03-15
變更人:xxx
變更原因:用戶反饋在多工具併發場景下會出現參數混淆
變更內容:在工具調用部分增加了參數隔離的顯式約束,刪除了第三節中冗餘的格式說明(-200 Token)
評測結果:準確性 87% → 91%,成本 1200 Token/次 → 980 Token/次
已知問題:在極少數情況下(<2%)會過度約束,拒絕合理的併發請求
生產狀態:灰度30%,2024-03-18全量

呢個唔係繁文縟節。三個月後你返嚟睇呢條記錄,五秒鐘就可以理解呢個版本嘅來龍去脈。

4.3 儲存方式

兩種選擇,各有適用場景:

用Git管理Prompt檔案(推薦技術團隊) 將Skill嘅System Prompt儲存成純文字檔案,納入程式碼倉庫管理。每次改動寫清楚commit message,評測結果記喺PR描述入面。呢個方案嘅好處係同程式碼工作流完全一致,工程師幾乎零學習成本。

呢度推薦一個具體嘅做法:用CodeBuddy嚟管理Skill檔案嘅版本迭代

CodeBuddy本質上係一個帶AI理解能力嘅程式碼協作工具,但係佢管理嘅對象唔限於程式碼——Prompt檔案、Skill配置、YAML工具定義,全部都可以納入佢嘅版本追蹤體系。

具體操作流程係咁樣:

  1. 將Skill檔案放入倉庫:將你嘅System Prompt儲存成.md.txt檔案,例如skills/data_analyst.md,納入Git倉庫
  2. 每次改動提交時,叫CodeBuddy生成commit message:佢可以理解Prompt改動嘅語義,自動生成"刪除冗餘嘅格式約束,新增多工具並發嘅參數隔離說明"呢啲有意義嘅描述,而唔係"update prompt"
  3. 利用CodeBuddy嘅diff視圖做改動審查:Prompt嘅diff唔似代碼咁直觀,CodeBuddy可以幫你解讀兩個版本之間嘅語義差異——唔止係"改咗邊行",而係"呢次改動對Skill行為可能產生咩影響"
  4. 喺PR描述入面關聯評測結果:每次版本升級提PR時,將評測前後嘅指標變化附上,形成"改動-評測-結論"嘅完整閉環

呢個流程將版本管理真正變成了工程工作流嘅一部分,而唔係另一套需要單獨維護嘅體系。

用專門嘅Prompt管理工具(推薦非技術團隊協作場景) Langfuse、PromptLayer、Helicone等工具都有Prompt版本管理功能,仲可以直接關聯線上運行數據。適合需要產品、營運等非工程角色都參與Skill迭代嘅場景。

兩種方式唔矛盾,可以同時用:Git + CodeBuddy負責工程側嘅變更管理,工具平台負責線上表現數據嘅關聯。

4.4 分支策略

生產環境只係行穩定版本,實驗版本行獨立分支,灰度驗證通過先合併。

具體嚟講:

main分支      → 生產環境,永遠是經過驗證的穩定版本
experiment分支 → 實驗新版本,只給測試流量
hotfix分支    → 緊急修復,改完直接合main

呢個同代碼嘅Git Flow幾乎一樣,邏輯係通用嘅。


五、版本管理嘅真正價值:令迭代可以學習

做好版本管理之後,你會得到一個喺做之前冇諗到嘅嘢:Skill嘅進化記錄

每一個版本、每一次改動、每一次評測結果,構成咗一條完整嘅迭代軌跡。

呢條軌跡可以話俾你知:

  • 呢個Skill喺咩方向上改動係有效嘅,喺咩方向上係冇效甚至有害嘅
  • 邊類邊界case係反覆出現嘅,說明有更深層嘅設計問題未解決
  • 呢個Skill嘅成熟度曲線——佢係喺收斂,定係喺震盪?

一個冇版本記錄嘅Skill,每次迭代都係由零開始摸索。一個有完整版本記錄嘅Skill,每次迭代都企喺之前所有經驗嘅膊頭上。

呢個就係版本管理嘅真正價值:唔係管理檔案,係累積工程智慧。


六、今日就可以開始嘅最小動作

揾到你正在用嘅一個Skill,做呢三件事:

  1. 俾佢打一個當前版本號,就算只係v1.0.0
  2. 寫一段版本說明,記錄佢現在嘅狀態、已知嘅問題、上次改動嘅原因
  3. 建立一個檔案或文檔,將呢啲信息儲存落嚟,以後每次改動都更新

呢個唔需要任何工具,今日就可以做完。

三個月後,你會慶幸自己做咗呢件事。


我係專注AI Agent深度實踐嘅努力撞蘑菇AI,致力於分享真實可用嘅AI使用經驗與工作流探索,歡迎你同我一齊將AI玩得明明白白,如果內容對你有幫助,歡迎關注、讚好、轉發。


一、你改過多少次Prompt,還記得改了什麼嗎

上一篇講完成本優化,我收到一個很典型的問題:

"我把System Prompt精簡了,成本確實下來了,但感覺有些輸出變差了——可我不記得改了哪裏,也沒有備份。"

這是Prompt工程裏極為普遍的一種困境,有個不太好聽的名字:Prompt失憶症

你改了,它變了,但你說不清楚改了什麼、為什麼變、怎麼還原。

代碼工程早就解決了這個問題——Git。每次變更有記錄,每個版本可對比,出了問題能回滾。

但奇怪的是,寫了幾年代碼的工程師,在面對Skill和Prompt的時候,往往退化成了"手動備份派"——改之前複製一份,粘貼到備忘錄,文件名叫system_prompt_最終版_v3_改完.txt

這篇文章想討論一個認真但很少被認真對待的問題:Skill的版本管理,應該怎麼做?

圖片


二、為什麼Prompt需要版本管理

先說清楚問題的規模。

一個成熟的Agent系統,Skill數量通常在10到50個之間。每個Skill的System Prompt平均每兩週會迭代一次。迭代的原因各種各樣:修復邊界case、優化成本、適配新工具、改善輸出格式……

如果沒有版本管理,你會面對:

問題一:改動不可追溯三個月前的那次改動為什麼做?改了什麼?當時的測試結論是什麼?沒有記錄,沒有答案。

問題二:回滾無法執行新版本上線出了問題,你能在十分鐘內回滾到上一個穩定版本嗎?大多數團隊的答案是:不能,因為上一個版本不知道存在哪裏。

問題三:A/B測試無法進行你想知道新的System Prompt比舊的好還是差,需要兩個版本同時運行、對比指標。沒有版本管理,這件事做不了。

問題四:多人協作變成災難兩個人同時在改同一個Skill,改完一合併——誰的版本算數?

這四個問題,任何一個在代碼工程裏都早有成熟解法。移植到Skill管理裏,邏輯完全一樣。


三、Prompt版本管理和代碼版本管理的異同

在談具體方案之前,先想清楚Prompt和代碼的差異——因為這些差異決定了版本管理的方式不能完全照搬。

相同的地方:

  • 都需要變更記錄(改了什麼、為什麼改、誰改的)
  • 都需要回滾能力(能快速切換到歷史版本)
  • 都需要分支概念(實驗版本不影響生產版本)

不同的地方:

Prompt的diff不直觀。代碼diff看一眼基本能理解變更意圖,Prompt的diff經常是"刪了一句話、加了一個例子",但這句話和這個例子對行為的影響,光看diff看不出來。你需要的不只是"改了什麼",還有"改了之後表現怎麼變了"。

Prompt的版本評估成本更高。代碼跑測試套件,通過就是通過。Prompt的評估往往需要人工審核或者LLM-as-judge,每次都要花時間和錢。

Prompt的變更粒度更粗。代碼可以改一行,Prompt的最小有意義變更往往是一段——改了一句話,整個Skill的行為基調都可能變。

這些差異意味着:Prompt的版本管理需要在記錄變更的同時,強制關聯評測結果。一個沒有配套評測數據的Prompt版本,幾乎沒有工程價值。


四、一個實用的版本管理方案

不談理想化的工具鏈,談一個大多數團隊今天就能落地的最小方案。

4.1 版本號規則

用三段版本號:主版本.次版本.修訂版

  • 主版本:Skill的核心行為發生根本性變化(比如從單步執行改成多步規劃)
  • 次版本:添加新能力、修改工具調用邏輯、顯著改變輸出格式
  • 修訂版:修復邊界case、措辭優化、不影響核心行為的小改動

不要用日期做版本號,日期無法傳遞變更的重要程度。

4.2 每個版本必須記錄的信息

版本號:v2.1.0
變更日期:2024-03-15
變更人:xxx
變更原因:用戶反饋在多工具併發場景下會出現參數混淆
變更內容:在工具調用部分增加了參數隔離的顯式約束,刪除了第三節中冗餘的格式說明(-200 Token)
評測結果:準確性 87% → 91%,成本 1200 Token/次 → 980 Token/次
已知問題:在極少數情況下(<2%)會過度約束,拒絕合理的併發請求
生產狀態:灰度30%,2024-03-18全量

這不是繁文縟節。三個月後你回來看這條記錄,五秒鐘就能理解這個版本的來龍去脈。

4.3 存儲方式

兩種選擇,各有適用場景:

用Git管理Prompt文件(推薦技術團隊) 把Skill的System Prompt存成純文本文件,納入代碼倉庫管理。每次改動寫清楚commit message,評測結果記在PR描述裏。這個方案的好處是和代碼工作流完全一致,工程師幾乎零學習成本。

這裏推薦一個具體的做法:用CodeBuddy來管理Skill文件的版本迭代

CodeBuddy本質上是一個帶AI理解能力的代碼協作工具,但它管理的對象不限於代碼——Prompt文件、Skill配置、YAML工具定義,全都可以納入它的版本追蹤體系。

具體操作流程是這樣的:

  1. 把Skill文件放進倉庫:把你的System Prompt存成.md.txt文件,比如skills/data_analyst.md,納入Git倉庫
  2. 每次改動提交時,讓CodeBuddy生成commit message:它能理解Prompt改動的語義,自動生成"刪除冗餘的格式約束,新增多工具併發的參數隔離說明"這樣有意義的描述,而不是"update prompt"
  3. 利用CodeBuddy的diff視圖做改動審查:Prompt的diff不像代碼那麼直觀,CodeBuddy可以幫你解讀兩個版本之間的語義差異——不只是"改了哪行",而是"這次改動對Skill行為可能產生什麼影響"
  4. 在PR描述裏關聯評測結果:每次版本升級提PR時,把評測前後的指標變化附上,形成"改動-評測-結論"的完整閉環

這個流程把版本管理真正變成了工程工作流的一部分,而不是另一套需要單獨維護的體系。

用專門的Prompt管理工具(推薦非技術團隊協作場景) Langfuse、PromptLayer、Helicone等工具都有Prompt版本管理功能,還能直接關聯線上運行數據。適合需要產品、運營等非工程角色也參與Skill迭代的場景。

兩種方式不矛盾,可以同時用:Git + CodeBuddy負責工程側的變更管理,工具平台負責線上表現數據的關聯。

4.4 分支策略

生產環境只跑穩定版本,實驗版本走獨立分支,灰度驗證通過再合併。

具體來說:

main分支      → 生產環境,永遠是經過驗證的穩定版本
experiment分支 → 實驗新版本,只給測試流量
hotfix分支    → 緊急修復,改完直接合main

這和代碼的Git Flow幾乎一樣,邏輯是通用的。


五、版本管理的真正價值:讓迭代可學習

做好版本管理之後,你會得到一個在做之前沒想到的東西:Skill的進化記錄

每一個版本、每一次改動、每一次評測結果,構成了一條完整的迭代軌跡。

這條軌跡能告訴你:

  • 這個Skill在什麼方向上改動是有效的,在什麼方向上是無效甚至有害的
  • 哪類邊界case是反覆出現的,說明有更深層的設計問題沒有解決
  • 這個Skill的成熟度曲線——它是在收斂,還是在震盪?

一個沒有版本記錄的Skill,每次迭代都是從零開始摸索。一個有完整版本記錄的Skill,每次迭代都站在之前所有經驗的肩膀上。

這就是版本管理的真正價值:不是管理文件,是積累工程智慧。


六、今天就能開始的最小動作

找到你正在用的一個Skill,做這三件事:

  1. 給它打一個當前版本號,哪怕就是v1.0.0
  2. 寫一段版本說明,記錄它現在的狀態、已知的問題、上次改動的原因
  3. 建一個文件或文檔,把這些信息存下來,以後每次改動都更新

這不需要任何工具,今天就能做完。

三個月後,你會慶幸自己做了這件事。


我是專注 AI Agent深度實踐的努力撞蘑菇AI,致力於分享真實可用的 AI 使用經驗與工作流探索,歡迎你和我一起把 AI 玩明白,如果內容對你有幫助,歡迎關注、點贊、轉發。