我前陣子在GitHub上開源了一個有點意思的skill,叫達爾文(darwin-skill)。
![]()
它做的事情很單純:給別的skill打分、提改進方案、改完再打分,分數沒漲就回滾。整個流程像生物進化,一代代變異、被選擇、淘汰,留下來的都是更強的版本。skill本來是靜態文檔,加了達爾文之后能自己迭代自己。
上線一個月,跑了40次優化,平均提升13.5分,0次回滾。
成績不錯。但5月22號微軟研究院同一天掛了兩篇論文,正面解決skill優化這件事。這兩篇論文讓我意識到達爾文還能做得更嚴、更強。于是我吸收兩篇論文的精華做了一次大升級,這就是達爾文2.0,可能是目前面向個人開發者最完整的skill優化器。
這篇文章想講清楚三件事:微軟兩篇論文講了什么、達爾文2.0吸收了什么、它在什么場景下值得用。
1.0已經做對的事
先簡單說說1.0為什么管用。
我做skill大半年了。公眾號、小紅書、視頻腳本、配圖、調研,各種業務流程都封裝成了skill。加上21個人物視角的skill,已經是個小生態。
skill一多人工審稿就崩了。每個skill都通讀、找問題、改完再讀,人力上不可行。但你又不能放任不管,一個寫規則的文檔自己都沒人盯著,會慢慢漂移。
所以我做了達爾文。核心思路是把skill迭代變成可重復的工程流程:多維度評分標準、每輪只改最低維度、分數沒漲自動回滾、寫skill的AI和評分的AI分開、低風險改動允許干跑模式。
跑了一個月,平均漲13.5分,0回滾。
但我心里清楚這個0回滾不完全代表算法神準。評分標準定得多嚴,結果就有多嚴。我那套8維標準已經算嚴格了,但還有改進空間。
直到5月22號那兩篇論文出現,把方向給我指明了。
微軟同一天掛的兩篇論文
5月22號,微軟研究院和復旦、上交聯合在arXiv掛了兩篇論文,互為姊妹篇。
一篇是《From Raw Experience to Skill Consumption: A Systematic Study of Model-Generated Agent Skills》(arXiv 2605.23899,項目代號SkillLens),研究skill應該怎么被評估。
另一篇是《SkillOpt: Executive Strategy for Self-Evolving Agent Skills》(arXiv 2605.23904),研究skill應該怎么被優化。
一前一后,一評一改,剛好把「會進化的skill」這件事從兩端封死。我先講SkillLens這篇,再講SkillOpt。
SkillLens:讓AI給skill打分,準確率只有46.4%
![]()
SkillLens里有個數據讓我后背一涼:讓單個AI當評委,給兩份skill打分選哪份更好,準確率只有46.4%。
46.4%比扔硬幣還差3.6個百分點。這意味著在松散的評分標準下,AI評委的判斷基本不可信。你跑出來的優化看起來在漲分,實際上可能只是評委在隨機搖骰子。
![]()
但論文給了藥方。研究團隊發現,只要在評分標準里加三個關鍵維度,準確率能從46.4%升到73.8%
失敗模式編碼(Failure Mechanism Encoding):skill不能只寫「正確流程是什么」,必須寫清楚「什么情況下會出錯、出錯了走哪條分支」
可執行具體性(Actionable Specificity):「建議」「可以考慮」「根據情況」「靈活把握」「視情況而定」這些話全部不能寫。要么明確要么不寫
高風險行動黑名單(High-Risk Action Blacklist):skill必須有獨立的章節告訴模型「絕對不要做什么」
73.8%其實也不算高,每4次決策還是錯1次。但相比46.4%是27個百分點的飛躍。
SkillOpt:把skill當成神經網絡的可訓練參數
SkillOpt更狠。它直接說:skill文檔應該被當成frozen模型的「外部可訓練狀態」,像神經網絡的權重一樣,通過反向傳播來優化。
這句話聽起來很玄,翻成大白話就是:讓模型跑一批真實任務、看哪些skill版本表現更好、保留好的版本、淘汰差的版本。區別在于被「訓練」的不是模型權重,是skill文檔本身的文字內容。
它的優化循環有四個階段:
跑任務(Rollout):讓目標模型用當前skill去跑一批真實任務,生成帶分數的軌跡
復盤(Reflect):另一個獨立的優化器模型分析成功和失敗的批次,識別可復用的規律
提議改動(Edit):在「文本編輯預算」約束下(控制每輪改多少字),提議skill文檔的增/刪/改操作
驗證通過才接受(Validate):只有當留出的測試集分數嚴格提升,改動才被接受;否則拒絕
最后一步是關鍵。驗證不通過就拒絕寫入,這是把神經網絡訓練里「梯度方向必須降低loss」的原則,搬到了文本空間。
論文測了6個benchmark × 7個模型 × 3個執行環境(直接對話/Codex/Claude Code)共52個組合。據論文測試結果,SkillOpt在所有52個組合里都最強或并列最強。在GPT-5.5上,SkillOpt生成的skill比「沒skill」提升23.5分(直接對話)、24.8分(Codex)、19.1分(Claude Code)。
它擊敗的對手包括人工寫的skill、一次性LLM生成的skill,以及TextGrad、GEPA、EvoSkill等之前的prompt優化方法(以上均為論文測試基線)。
讀完這篇論文我有兩個反應。
第一反應是震撼。「skill像神經網絡權重一樣可訓練」是個深刻的隱喻。它把skill從「文檔」重新定義成「外部狀態」,把skill優化從「人工調整」變成「可重復、有數學保障的工程流程」。
第二反應是欣慰。SkillOpt的「驗證通過才接受」機制,和達爾文1.0的「分數沒漲自動回滾」是同一個核心思想:驗證不過就拒絕。這件事我和微軟同時獨立做出來了,只是數學嚴謹性上對方更扎實。
達爾文2.0:吸收兩篇論文精華
![]()
明白了兩篇論文之后,達爾文2.0的升級方向就很清楚:
吸收SkillLens的評分維度,讓評估更嚴格。 對齊SkillOpt的「驗證通過才接受」設計,讓優化更可靠。 加入SkillOpt沒有的human in the loop,讓流程在個人開發者場景下可控。
評分標準從8維升級到9維(直接吸收SkillLens的73.8%藥方)
原本的「錯誤處理」維度改名叫失敗模式編碼,要求寫出「如果X發生就做Y;否則做Z」的明確分支
原本的「明確性」維度改名叫可執行具體性,明文禁止那五個軟化措辭,出現三處以上扣三分
新增第九維高風險行動黑名單,要求skill必須有獨立的「不要做什么」章節
權重做了微調,給新維度讓位。
強化驗證機制(對齊SkillOpt + 加多評委獨立設計)
之前1.0的回滾機制比較簡單:總分沒漲就回滾。2.0細化成多層驗證:
多評委獨立審查:每輪啟動兩個獨立評委,共識分數才算數(這是達爾文的獨立設計。SkillLens論文驗證的是單評委+新rubric的73.8%準確率,多評委是額外加固機制,不是論文方法的復述)
評委不復用:下一輪啟動兩個全新評委,避免錨定效應
早停機制:分數進入平臺期(單輪漲幅<1分)自動停手,避免為湊分而堆冗余
干跑模式控制:干跑比例超過30%自動告警,強制走實測驗證
這是達爾文跟SkillOpt最大的不同,也是個人開發者最需要的能力。
SkillOpt是benchmark-driven的全自動流程。你扔一堆任務和評分函數進去,它跑一晚上吐一個最佳skill出來。這個范式適合企業級、能定義清晰評估函數的場景。
但對個人開發者,benchmark本身就難定義。一個公眾號寫作skill,你怎么寫benchmark?最終評估往往是「我自己讀著順不順」「讀者反應好不好」這種主觀維度,沒法塞進自動循環里。
所以達爾文2.0把流程切成階段,每個階段都有明確的人工卡口:
第一階段基線評估:自動跑評委打分,人工審報告決定改什么
第二階段單維度優化:自動改最低維度, CHECKPOINT強制暫停等用戶確認改動方向
第二階段半測試提示詞跑(可選):自動跑實測,人工看測試結果
第三階段回歸測試:啟動新評委重評, STOP漲幅低于閾值強制停手
每個/都是顯性的人工介入點。流程能自動跑,但關鍵決策永遠交回給人。這避免了「跑了一晚上結果文檔面目全非」的悲劇。
引入反例黑名單(論文要求 + 真實踩坑)
新增「反例黑名單」章節,八條來自我跑40次優化攢下來的實戰反模式:
同一個AI又改又評(SkillLens 46.4%印證)
用「git reset --hard」當回滾手段(應該用git revert)
為湊分而往文檔里塞冗余
跳過測試提示詞直接評分
一輪內改多個維度
干跑模式比例超過30%
靜默跳過異常
忽視維度相關簇
論文告訴你反例黑名單很重要,但具體反例必須來自實操。
這是論文給不了你的東西。
拿真實skill來驗證2.0
升級完之后我得驗證它真的更強,不是從一個偏差換到另一個偏差。
我挑了huashu-gpt-image做小白鼠。這是我自己寫的一個skill,用來調GPT-image-2生圖,368行,日常用得最多。
測試設計的關鍵是多評委獨立審查。啟動兩個獨立的AI評委,它們彼此不知道對方存在,也不知道我接下來要怎么改。
![]()
基線共識80.8分。兩個評委獨立指出了相同的最低維度:失敗模式。
按規則每輪只改最低維度,改了四處,新增「失敗模式與兜底樹」一整章。
失敗現象
觸發條件
一線修復
仍失敗兜底
中文字渲染錯
畫質設medium / 提示詞沒寫渲染要求
升到high+明確寫「每個漢字精確渲染」
中文文本放最前面+雙引號包裹
接口限流報429
子進程報quota錯誤
等幾分鐘重試
換另一條API路徑
5×5網格末行被壓縮18%
用1:1畫布生成2:3卡片
降到4×4
把畫布尺寸的決策權交還給AI
文件從368行漲到449行。
啟動兩個全新評委(不復用之前兩個,避免錨定效應)重評。
![]()
共識91.5,漲了10.7分。失敗模式那一維從6.5飆到10分滿分。
有件事我沒想到。我只改了失敗模式,「工作流」那一維居然從7.5跳到9.0。我沒碰這一維啊?
想清楚之后大概懂了。失敗模式要求寫出「如果X就做Y」的明確分支,寫出來之后流程自動變清晰。工作流、檢查點、失敗模式三維不是獨立維度,它們是一簇,改一個會帶動相鄰的。
這是2.0新發現的規律:維度相關簇。
至于為什么會相關簇,我有幾個猜想:可能是評分維度本身設計有重疊;可能是改一處文檔帶動了周邊重構;還可能是評委的心理錨定(看到一處變清晰會順手給相鄰維度調高分)。我沒辦法分辨,只測了一個skill,數據不夠。這條經驗已經寫進反例黑名單第八條。
繼續攻第二低,加了一段「單圖工作流」與原有的「批量工作流」對稱。再啟動兩個新評委,共識91.65。
只漲了0.15。早停機制觸發,停手。
達爾文給自己打分:理發師悖論
到這里2.0已經在huashu-gpt-image這個真實skill上證明了+10.85提升,六個獨立評委共識。理論上可以收工。
但我有個不太正經的想法:用2.0給達爾文自己打分會怎樣。
![]()
寫規則的工具,被自己寫的規則審判。這是另一個獨立實驗,對象不再是huashu-gpt-image,而是達爾文自己的SKILL.md。
![]()
啟動兩個獨立評委,達爾文自己的基線給出86.05(注意這是另一個文件的獨立基線,跟前面huashu-gpt-image的80.8沒有可比性)。它們不約而同指出三處可以更嚴:
第一處版本管理疏漏。文檔描述還寫著「8維評分標準」,正文已經9維。改完版本忘記同步描述。
第二處檢查點未顯性標記。達爾文自己的第四維明文規定檢查點必須顯性標記(/STOP/CHECKPOINT),但關鍵檢查點全部只用粗體強調,沒有一個/STOP。
第三處軟化措辭超標。達爾文第五維明文禁止「建議/可以考慮」等軟化措辭。評委在我自己的文檔里搜出四處違規。
我自己定的規則,我自己幾處地方做得不到位。
這不是馬虎,是寫規則時的結構性盲區:作者的注意力天然在「新加的規則有沒有用」,不在「之前寫的內容是否符合新規則」。這種盲區沒辦法靠「小心一點」避免,因為你看不見自己看不見的東西。
唯一解決辦法:讓獨立評委用你的規則審你。評委不在乎你寫的是「自己的工具」還是「別人的工具」,它只按字面執行規則。
這其實是2.0的另一個隱性優勢:它對作者一視同仁。
修完之后,以及一個遞歸發現
![]()
修這三處之后,達爾文自己同步到9維,所有檢查點加上/視覺標記,軟化措辭硬化。再啟動兩個新評委重評:86.05→92.05。最后按skill寫作最佳實踐把詳細論文證據下沉到子文件夾,主文檔從550行精簡到484行,最終92.7。
但寫完上面這些之后,我做了第三個獨立的小實驗:讓2.0跑一次huashu-gpt-image的skill文檔本身(就是給這篇文章生成6張配圖那個)。
注意這跟前面的「拿真實skill來驗證2.0」是兩件事。前面那次評的是skill里寫的工作流和失敗模式;這次評的是skill文檔自身的寫作質量和結構(命中SkillLens論文里說的「文檔可讀 ≠ 實際有用」)。兩次基線、目標、維度完全獨立。
理由很實際。寫這篇文章時讓它生成配圖,前兩輪連續翻車。第一輪圖很丑沒風格;第二輪換具名錨定雜志品牌名,模型直接把品牌名畫進圖里跑偏。第三輪我明確說「用品牌資產作墊圖」才一次成功。
事后復盤是skill文檔自身的結構問題:沒把「品牌資產作墊圖」當默認操作,反而埋在fallback樹最深處;另外「出版品牌名陷阱」完全沒顯式警告。
讓兩組獨立評委盲評修改前后:65→88(這是給該skill文檔自身寫作質量的獨立打分,跟前面80.8/91.65是不同維度的實驗設置)。
![]()
這個遞歸案例本身就是2.0價值的最好證明。工具不只能優化生成的提示詞,還能優化寫提示詞的方法論本身。
一個會進化的skill,改進了「如何寫出會進化的skill」這件事。
不只是個例:用2.0掃了整個 skill 生態
證明2.0好用的最直接方式不是講一兩個case,是讓它去跑我整個skill庫。
過去幾天,我用2.0一口氣優化了女媧蒸餾出來的所有 perspective skill,加上日常使用的業務 skill,總共近30個。每個都跑兩輪獨立評委、9維評分、validation-gated回滾。
![]()
戰果是這樣的(摘幾個有代表性的):
steve-jobs-perspective: 64 → 94(+30,單輪搞定)
huashu-weread-advisor: 80出頭 → 91.4
huashu-gpt-image: 80.8 → 91.65(前文實測)
darwin-skill: 86.05 → 92.7(自指評估)
vibe-coding-mastery / x-mastery-mentor / standup-comedy-god: 全部進入90+
平均漲幅 +15分,最猛的steve-jobs-perspective單輪+30分。每個skill的優化都有完整git commit鏈可回溯,validation沒過的改動全部自動revert,human in the loop檢查點都跑了一遍。
這件事最讓我感慨的不是分數,是規模感。
一個人維護30多個skill,過去靠人審是nightmare,現在2.0跑一晚上全掃一遍,人只需要在每個CHECKPOINT點頭或搖頭。這就是把杠桿做出來的樣子。
跑完之后我有一個直觀感受:整個女媧生態的輸出質量,可以肉眼感知到提升。我自己用每一個skill的時候都覺得"對,這次它真的更像那個人了""對,這次它真的把流程講清楚了"。
這是達爾文 1.0 時代我沒能做到的事。
達爾文跟SkillOpt的關系,以及它在什么場景下值得用
這一章我想老實講清楚,達爾文跟SkillOpt不是替代關系,是分工。
SkillOpt是更系統、更嚴格的工程方案:全自動benchmark-driven,扔任務進去自己跑出最佳skill,數學嚴謹性高,52個測試組合52勝,適合企業級、能定義清晰評估函數的場景,適合規模化訓練skill、跨模型遷移。
達爾文2.0是面向個人開發者的輕量方案:rubric-driven,按可讀的評分標準給文檔打分(不需要寫benchmark),自動化策略 + human in the loop雙引擎,適合主觀評估為主的場景(寫作、內容、風格類skill),適合獨立開發者快速迭代單個skill。
差異化優勢具體在五處:
不需要benchmark。SkillOpt依賴能跑分的validation set,達爾文用rubric打分,適合沒有客觀metric的場景
強制human in the loop。每個CHECKPOINT等用戶確認,關鍵決策不交給AI
多評委獨立審查。每輪啟動新評委避免錨定,直接對齊SkillLens的73.8%準確率藥方
維度相關簇識別。識別「改一維帶動一簇」的結構規律,減少冗余優化
反例黑名單驅動。8條來自真實踩坑,不是空想
如果你做的是企業級、能定義benchmark的skill優化,用SkillOpt。
如果你做的是個人skill生態,需要快速迭代、可讀、可控、有人工卡口,用達爾文2.0。
倉庫在哪
倉庫地址:https://github.com/alchaincyf/darwin-skill (MIT協議開源,提交編號5bfc6b4)
安裝很簡單:把倉庫鏈接丟給你的agent,讓它幫你安裝,然后在agent里說「跑達爾文優化XX skill」即可。跑一輪基線評估+一輪優化大約15-30分鐘,主要時間在等評委agent返回。
![]()
底層方法論參考:
arXiv 2605.23899《From Raw Experience to Skill Consumption》(項目代號SkillLens),評分標準升級來源
arXiv 2605.23904《SkillOpt: Executive Strategy for Self-Evolving Agent Skills》,驗證機制對齊來源
如果你也在維護一堆skill或者一套prompt,我推薦試一下達爾文2.0。
![]()
它最大的價值不是漲那十幾分,而是把你的注意力從「自己審自己」轉移到「讓獨立評委審」,并把整個流程做成可重復、可回滾、有人工卡口的工程。
這個轉移本身,就是杠桿。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.