今天這篇可能會稍微硬核一點。
但是我保證,還是有蠻多干貨的!也相信絕對會對大家有一點用。
SKills,從入門到現在,我已經連續寫了好幾篇文章了。
不為別的,我是真的覺得,這玩意不管對個人還是對團隊,還是對我們每個人的好奇心,都非常非常的有價值。
雖然現在門檻確實高一點,但是每次搓SKills,我都能回想起,2013年,我即將從高三邁入大學的那個暑假,在家里用著我新買的筆記本電腦,折騰《上古卷軸5》各種各樣Mod的快樂。
真的,我們其實并不只有刷短視頻才有快樂,你一定要試試,創造的快樂。
今天這一篇,是上一篇文章發出之后,反響超乎我的預料。
不僅X上將近百萬閱讀。
![]()
公眾號的后臺和評論區,也直接炸了。
很多小伙伴直呼 打開了新世界的大門。
但是,也有很多眼尖的、動手能力強的小伙伴,在評論區提出了非常犀利的問題:
![]()
就是,應該怎么管理、怎么升級、怎么迭代這些Skills。
確實,因為Skills,從來都不是一個固化的東西,他會隨著時間、隨著你自己的變強、隨著你鏈接的Github的項目更新,需要動態優化、調整的過程。
但是我們都知道,到現在,SKills的管理和迭代,實在是過于不友好了。
我在上一篇文章中,搓的一個管理Skills的Skill,其實只是一個雛形。
比如把Github項目打包成Skills一時爽,后續維護全是火葬場。
手動去查更新?手動去改文檔?手動去把好不容易積攢的Bug修復經驗填回去?
這真的有點顯得太呆逼了。
在那篇文章發出去之后,我也一直在思考這個問題,究竟我們應該如何讓SKills的迭代、升級、優化、管理,更為方便。
在經歷了兩天的折騰之后,我想,我們找到了一個有趣的做法,可能在專業大神眼里還并不好,可能還有許許多多要修改和優化的地方。
但是,我還是想把這個東西,分享并且開源出來,因為我自己真的很喜歡。
我們,手搓了一個SKills管理三件套。
這三件套,再加上Claude官方的那個Skill-creator,這四個SKill,直接解決了我所有Skills的增刪改查還有迭代升級功能,讓Skills庫,實現真正的全自動化管理和自我進化。
![]()
我們搓的這三件套,分別是:
github-to-skills:專用的Github項目轉Skills的Skill。
skill-manager:一個專用的管理本地所有SKills的Skill。
skill-evolution-manager:一個能將過程中的對話和經驗,自動以外掛的形式,對某Skill進行迭代升級。
話不多說,老規矩,先看效果。
我現在本地有一堆Skills,比如上次那個下載視頻的神器 yt-dlp。
因為很多的Github上的項目,也一直實在動態更新的,我肯定是希望,我們本地的Skills,也是可以根據他們倉庫的動態,實現自動更新的。
而現在,我只需要對著OpenCode說一句:
幫我檢查一下所有的Skills狀態。
下一秒,一個清晰的報告就甩在了我臉上:
![]()
可以看到,截圖中的兩個Skill,有兩種狀態。
company-claude-skills的狀態:過期。
yt-dlp的狀態:最新。
這兩個Skill,都是我將Github上的項目,進行封裝的。
yt-dlp在我本地,目前還是Github上的最新版本,但是Company,已經不是了,過期了。
(PS:這個Company,是為了給大家看一下效果,我自己的Github倉庫來測試的演示項目。)
而現在,我們只需要說一句:
開始升級,它就會自動去Github拉取最新的代碼,重新構建Skill文檔。
![]()
而這個時候,聰明的你可能就會問了。
GitHub 更新了,舊版的SKILL.md不就被覆蓋掉了,那我平時調教Skills優化不斷迭代的各種修改和經驗不就直接也沒了嗎?這特么不是巨坑嗎,完全用不了啊。
你說的對。
因為我自己用Skills,在運行的過程中,難免會出現一些BUG,而這些BUG其實都是這個SKill的經驗,理論上下一次運行,是完全可以避免的,所以我經常會在跑完之后,把這個聊天過程,讓Skill-Creator,重新根據整個對話記錄,把這些經驗,寫入到原來的SKill里,讓這個Skill,變得越來越牛逼。
比如我之前這個yt-dlp的Skill,第一次報錯并就解決以后,就根據聊天記錄,讓它自主的修改迭代了一些東西。
![]()
但你要知道,這個迭代的結果,優化的是SKills里面的主文件也就是Skill.md文件,而我們上面提到的,拉取最新的Github項目,修改的也就是Skill.md文件。
這時候,沖突就來了。
兩波人,目標完全不一樣,但是每次都按照自己的目標,對一個文件進行修改,那不徹底亂套了嗎。
所以我想了想,想到了還算稍微好一點的方法。
就是分開。
拉群最新的Github項目,還是修改主SKill.md文件不變,而我們所有的迭代、報錯的經驗,不放在Skill.md里,而是直接存到一個全新的、我們自己自定義的evolution.json文件里。
也就是,一個專門用來存,“進化”的文件。
類似于我們的一個經驗備份,或者說游戲存檔。
無論你的主進程如何更新,版本號升級到了多少,我們的游戲存檔,肯定都不應該變得對吧,這個 evolution.json其實在Skills里,就是我們自己定義的游戲存檔。
當SKILL.md被新版本覆蓋時,它便會發揮它的作用,將存檔里的經驗,重新注入回到Skill.md里。
![]()
效果如下:
![]()
全程幾十秒,不用我動一下腦子。
這樣,整個Skills的管理,就形成了飛輪,建一個Skill坦率的講,其實特別簡單。
但是我們在使用過程中,發現其實最麻煩的,是Skills的管理和迭代。
所以,我們造了這些東西。
我把這三件套里的每一個Skill,再拆開來,稍微細一點點的給大家介紹一下,大家相信我,只是這些東西看著代碼一些,但是真的不復雜!希望能對大家的思路,起到一些拋磚引玉的作用。
一.github-to-skills
做這個目的,其實就是希望,我們能給從Github上打包的那些Skills,一個身份證明。
我發現之前用的官方skill-creator,雖然能打包,但是它生成的 SKILL.md文檔里,沒有關于GitHub的相關數據。
![]()
就是,我們用倒是可以用,但是其實極度不方便這個Skill進行后續迭代,因為沒有版本號,沒有Github地址,你都關聯不回去。
這就好比你去超市買東西,商品上沒條形碼,你咋盤點庫存啊對吧。
對于后續的Skills管理器來說,它去掃描這些Skills的時候,根本不知道這玩意對應Github上的哪個倉庫,更別提對比版本了。
如果強行去掃去匹配,失敗率極高,效果極其不穩定。
所以,這三件套的第一個解決方案,自然就是需要對SKills生成器開刀,也就是,要針對SKIIL.md元數據頭下手。
我魔改了skill-creator,做了一個github-to-skills。
它的功能也很簡單:在打包Github項目的時候,強制注入一些關于github的信息。
這個信息包含這兩樣東西:
github_url:它從哪來的。
github_hash:它是哪個版本。
這樣,每一個經由這個github-to-skills產出的Skill,都自帶了身份ID。
可能還有的人沒明白這樣設計有什么用,對我們后續管理有什么幫助,直接上圖對比,大家應該就可以明白了。
這事原版Skill.md里的信息。
![]()
這是改進后的SKILL.md里的信息。
![]()
你會發現,多了東西。
而這個,就可以非常簡單的,跟后續的Github倉庫更新進行關聯了,并且可以用哈希值進行版本號對照。
相當于,我們給每個SKill,都做了一個身份系統。
有了身份ID,后續的自動化管理,才有了可能,可以這么說,它就是整個系統的地基了。
而之所以為啥這個github-to-skills和原有的skill-creator共存,其實特別簡單,因為不是所有的Skills,都是封裝的Github項目,還有很多,是我們自己經驗和工作流,這種其實沒必要注入Github的信息了。
二.skill-manager
有了身份ID的Skill,接下來就是重頭戲了,skill-manager。
這玩意就是你skills的大管家,負責你所有本地Skills的管理和更新。
它的功能有這些。
1. Skills查詢:主要是最近不管是學習還是測試,經常裝的Skills太特么多了,常年看著一堆文件夾,我都忘了這些Skills到底是干啥的。。。
不過現在通過這個skill-manager,它可以直接給我吐出一個好看點的表格,列出所有Skills的類型、描述、版本,而且是可以自己區分哪些是GitHub打包的skill,哪些是正常的skill,真就是可以列出我所有家底。
![]()
2.Skills版本監控:這就是開頭說的,看Github倉庫有沒有更新的、非常實用的功能。
它會請求Github的接口,拿著本地Skill頭部的github_hash去跟遠程倉庫進行對比。
最終的結果中,如果輸出的對應狀態為過期,那就說明需要更新對應的Skills了,若為狀態為最新則說明無需更新。
![]()
3. Skills管理:一個非常簡單的小功能,就是...如果有不需要的或者用不上的,可以用它,來一句話直接刪除。
![]()
這個小Skill,非常的有用,相當于我們以前的Mod或者插件管理器,只不過把更新迭代的過程也放在了對話里。
我個人認為,還是非常方便的。
現在經常打開OpenCode,沒事就先掃一遍Skills是不是有更新,然后再開始干活。
三.skill-evolution-manager
這個就是我開頭用了蠻多的篇幅,講的根據對話或者經驗,對Skills進行自動迭代的功能。
所以設計了這個第三個Skill,通過外掛的存檔文件evolution.json,來進行迭代和進化管理。
他的作用就一個,就是只負責根據對話內容吸取經驗,然后迭代skill。
你可以理解錯,這個Skill會在對話的時候,會默默記筆記,Skill哪里搞砸了、哪里需要改進,它全記在小本本上。
對話結束,它把這些經驗保存到一個叫evolution.json的文件里,然后寫進Skill.md,下次再遇到同樣的坑,Skill就會直接繞過,一坑不踩兩次。
說真的,我一直覺得,這才是真正的自我進化,也可以理解為我們常說的復盤。
![]()
這樣,我們的Skills,終于就不再是一個靜態的東西,而是隨著我們的使用、我們的迭代,也跟隨著我們一起升級了。
這個年代,持續的進化,才是唯一的真理。
這篇文章,可能閱讀量數據量啥的,會非常差。
我其實想了很久,到底要不要分享出來。
一個確實是有點小眾了,另一個,也確實我不知道,我們這種做法到底對不對。
但是我們自己用了一天,還是覺得蠻有意思的,真的就是那種越用越聰明,越用越懂你的感覺。
這三個Skill,我也完全毫無保留的分享給大家。
它肯定沒有很完美,但是我們也希望,能對大家有一些拋磚引玉的作用。
目前已上傳到了我的Github上,大家可以自由下載,未來在這個上面,可能也會持續不斷的分享一下我們自己搞的,感覺稍微有點用的SKills。
倉庫地址在此:
https://github.com/KKKKhazix/Khazix-Skills
![]()
如果有大佬們有更好的思路或者更棒的寫法,也歡迎交流。
因為我們也在不斷的學習中。
只是,我覺得SKills真的是一個偉大的時代。
所以,在不完美的情況下,依然還是想跟大家分享一下我們的思路和玩法。
只希望,能對大家有一些小小的幫助。
那我們,也就。
心滿意足了。
謝謝你們看我的文章。
以上,既然看到這里了,如果覺得不錯,隨手點個贊、在看、轉發三連吧,如果想第一時間收到推送,也可以給我個星標?~謝謝你看我的文章,我們,下次再見。
>/ 作者:卡茲克、林機夢逗
>/ 投稿或爆料,請聯系郵箱:wzglyay@virxact.com
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.