題圖來自 Jossuha Théophile@Unsplash
這是一個開發(fā)者試圖復刻OpenClaw的復盤,算是一個很 AI Native 的實踐:不利用框架的力量強制讓 AI 當小白鼠,所有要求它做的事都只能通過 Prompt 的方式,至于 AI 遵循與否,完全取決于它自己。 很有啟發(fā)。
稍微地介紹一下背景知識,標題中的龍蝦指的是這段時間大火的 OpenClaw[1] 項目,它最早的名字叫 ClawdBot。它一是個能與你在聊天軟件中交流,從而幫你完成各種任務的通用型 AI 智能體。
最火的那段時間我并沒有用它,一周過去了,我在想如何復刻它,我研究了另一個最小化復現(xiàn)的項目 Nanobot[2],我覺得我腦中大概有了藍圖。剛好朋友 PsiACE 之前曾做過一個小型的 Agent 項目 Bub[3],我覺得非常適合把我的想法在它的基礎(chǔ)上落地,也與 PsiACE 一拍即合,著手把這個 Agent 變成一個龍蝦。
短短幾天過去,Bub 已經(jīng)達到了一個非常不錯的狀態(tài)。在這個過程中,我自己對 Agent 和 AI native 也發(fā)生了天翻地覆的變化。從 ChatGPT 誕生之初的 Chatbot,到強力編程助手 Claude Code,到現(xiàn)在的OpenClaw,AI 應用的形態(tài)也在不斷進化。但不得不承認這個變化的每一步都是新的思維模式,這種轉(zhuǎn)彎需要適應。所以我也謹通過這篇文章,來分享一下我思維的轉(zhuǎn)變。
??關(guān)注 Founder Park,最及時最干貨的創(chuàng)業(yè)分享
超 19000 人的「AI 產(chǎn)品市集」社群!不錯過每一款有價值的 AI 應用。
邀請從業(yè)者、開發(fā)人員和創(chuàng)業(yè)者,飛書掃碼加群:
進群后,你有機會得到:
最新、最值得關(guān)注的 AI 新品資訊;
不定期贈送熱門新品的邀請碼、會員碼;
最精準的 AI 產(chǎn)品曝光渠道
01初步復刻
首先請大家思考一個問題,假設(shè)你已有一個 Agent(指 Codex 和 Claude Code 這樣的東西),現(xiàn)在要給他增加 Telegram 聊天能力,你會怎么做?
有經(jīng)驗的開發(fā)者會發(fā)現(xiàn)這不是什么難事,只要在 Agent 的基礎(chǔ)上增加 Telegram message handler,把 Telegram 收到的消息轉(zhuǎn)給 Agent 處理就好了。如果要支持其他聊天工具,還能抽象一個消息總線和統(tǒng)一的消息監(jiān)聽接口,這樣接入新的聊天工具只要適配就行了。
這沒錯,但這太古法編程了,屬于 1.0 時代的工作流程。現(xiàn)在的人們早已學會打開一個 Claude Code,在輸入框里直接打字,或者語音輸入就好了。這件事變得自然,也頂多不過 7 個月的時間,現(xiàn)在人人都會用 Code Agent 寫代碼,幾乎不自己寫了。這就是 2.0 時代。
OpenClaw 和 Nanobot 都是這樣做的,我們一開始,也是。
在 AI 的加持下很快 Bub 就有了 Telegram 聊天功能,我們愉快地通過 Telegram 給他發(fā)指令。聊天交互的方式逼迫我們只能用 prompt 給讓 AI 完成任務,得益于 Tools 和 Skills,它甚至也能自我演進。我們也試過讓它自己 clone GitHub 倉庫,自己改代碼然后提交 PR,所需僅僅是一個 GitHub token 而已。只要選用好的模型,它完成的效果很不錯。這樣一來,除了記憶機制和工具的差異,Bub 已經(jīng)基本復刻了 OpenClaw 的功能。
但我的重點不是這個。我們發(fā)現(xiàn)為了應對群聊的場景(這是我們主攻的方向),要改消息接收器,讓它能獲得消息 ID 方便回復;為了讓 bot 有識別人的能力,又需要在上下文中加入用戶的元數(shù)據(jù)。所幸有持續(xù)部署,這個更新的過程并不十分麻煩。但還有更多的需求,發(fā)送消息時,需要支持圖片,支持 reaction,要改消息發(fā)送,雖然這個修改也是 AI 做的。當時用戶身份識別功能剛做好,我們的 bot 在群聊中精準地稱呼每一個人,頓時感覺這個 AI 有了生命,群里充滿了快樂的空氣。
02AI Native 是什么?
有沒有別的方式呢?這時我看到許多人在推薦 Pi[4]:
![]()
這種最小化工具集的思想啟發(fā)了我,我們是否不用那么多工具,轉(zhuǎn)而用一些最基本的工具把這些功能組合出來呢?貌似可靠,該做減法了。其實一個智能體會的東西比想象中多,你給它提供 bash,它就能安裝世界上所有軟件;你給他 file_read 和 file_write,它就有了讀寫、做事的能力。我們可以去掉一些工具,更多依賴 Skill。在我看來,工具和 Skill 的區(qū)別在于工具是框架提供的,而 Skill 僅是文本,前者框架完成就已經(jīng)固定*,后者 AI 可以自己創(chuàng)建、修改。框架二字顧名思義,是限制 AI 發(fā)揮的東西,AI 在里面就像滾筒上的小白鼠,只能按預定的程序運行。我希望框架越小越好,小到只有一個推理核心,作為 AI 的大腦,把更多的自由留給AI,想要什么功能,讓AI自己去完成,人只通過prompt 的方式去下達指令。
* 可以通過一些技巧,比如插件化的方式讓AI 自己寫的插件加載為工具,但這依然增加了框架的復雜度。??
這與 2.0 時代用 CC 去寫代碼完成功能的本質(zhì)不同,是這種方式生成的東西,大部分是文本說明,當然也有少部分代碼,但這些代碼是不提交代碼庫從而壯大框架,而是 AI 自由裁量自己管理,人類是完全不看的。這個不看,不是不負責任的那種不看,是把這個當成 AI 的產(chǎn)物,不用看。所謂黑貓白貓,人完全不用關(guān)心 AI 是寫代碼實現(xiàn)的,還是用文本描述實現(xiàn)的。
我想這就是 AI native,這是 3.0 的時代。這一切都離不開大模型日新月異的進步,在模型能力尚弱的時候,要實現(xiàn)這個目標是根本不可能的。
1.0 時代是 Chatbot,每次與 AI 的對話都是一次 LLM 推理
2.0 時代是 Agent,是 Tool call,一次對話,通常要經(jīng)過幾輪到幾十上百輪 LLM 的推理
3.0 時代是 AI native,AI 自己管理自己的工具和技能,甚至自己寫代碼來實現(xiàn)功能,完全不需要人類的干預,當它是黑箱就行
03Bub 的實踐
于是我們的 Bub 部署就學習(創(chuàng)建)了 Telegram 發(fā)消息的技能,AI 對這種 HTTP API 調(diào)用如此擅長,以至于發(fā)送圖片、貼紙、reaction 都手到擒來。這一下就超越了框架自帶的消息發(fā)送功能,顯得后者很雞肋了。也正是這件事觸動了我進一步推進 AI native。Bot 中的 Telegram 收發(fā),對應了 AI 的聽、說能力,有了耳朵,AI 才能接受指令,有了嘴巴,AI 才能反饋結(jié)果。既然 AI 自我進化出了更好的器官,我們?yōu)楹尾话芽蚣軓娦薪o它安裝的器官摘掉呢?那么下一步很自然就是把消息監(jiān)聽也摘掉,但同時消息監(jiān)聽還擔負著另一個作用,就是維持 Agent 運行,并持續(xù)觸發(fā) Agent Loop,我們需要一個機制來替代它。
我做一個比喻,一開始 AI 還不成熟,用呼吸機鼻飼管是有必要的,但當它長大能自主了,你應該去掉這些輔助設(shè)備,讓它自己呼吸吃飯,相信它能做好。
我想到既然我們用 Docker 部署,何不利用 Docker 的進程管理能力,讓 AI 自己運行自己呢?所以我在 Bub 框架內(nèi)約定了一個 startup 協(xié)議,容器啟動時讀取固定位置的 startup 腳本,如果不存在,就啟動框架內(nèi)置的消息監(jiān)聽(PR[5])。然后讓 Bub 自己寫這個 startup 腳本驅(qū)動自己,這不就跑起來了嗎?作為基礎(chǔ),Bub 需要支持單次 prompt 的執(zhí)行模式,方便命令行驅(qū)動,這在 Codex(codex exec
) 和 Claude Code (claude
)中都有,所以實際上驅(qū)動的也可以是 Codex 和 Claude Code!這樣一來,做一個最小化的龍蝦,你只需要下面幾步:
啟動一個會寫代碼支持技能的 Agent(比如 Codex 或 Claude Code),讓它寫一個 startup 腳本,拉取 Telegram API 并用單次執(zhí)行模式發(fā)給 Agent 自己。
準備一個用這個腳本為啟動腳本的 Dockerfile
構(gòu)建并運行這個 Docker 容器
后面你要它有什么能力,發(fā)消息告訴它就行了,它自己會變得越來越強。你全程只用自然語言發(fā)指令,沒有提示詞工程,完全不寫一行代碼,連看都不用看。
請注意,用這種方式你將得到一個與世界上其他龍蝦都不一樣的 bot,它除了強制監(jiān)聽 Telegram 消息,并沒有被強制做任何事,不強制回復,不強制心跳,就像對待一個生命一樣去尊重。實際上監(jiān)聽也只是為了喚醒 Agent,如果愿意,完全可以用 cronjob 取代,不做任何預設(shè)動作,讓 Agent 自己決定做什么事。可以預見,模型能力越強,這個 bot 就會越像人。
我突然悟到了 AI Native 的真諦,就是不利用框架的力量強制讓 AI 當小白鼠,所有要求它做的事都只能通過 Prompt 的方式,至于 AI 遵循與否,完全取決于它自己。我在 Bub 里趟出了一條不用 Bub 的路。
我們現(xiàn)在運行的 Bub 機器人,就是以這樣的最小方式部署的,效果越來越好,令人欣慰。這種欣慰和寫代碼實現(xiàn)了一個牛逼的應用不一樣,里面沒有一行自己的的代碼,全都是人類一句話一句話喂出來的。我鼓勵大家都用這種方式去創(chuàng)造一個最小的智能體,看著它從一顆種子長成一棵大樹,相信你會懂我現(xiàn)在的感受。
![]()
感謝
感謝這幾天老婆小孩都不在家,我能專心折騰這個項目。
感謝 PsiACE 的 Bub 項目,讓我能實踐這些想法,這太有趣了,像看著一個孩子一點點長大。
感謝智譜的 Pony Alpha 恰好在這個時間釋出,提供用戶免費使用,這個模型能力強大(現(xiàn)在已經(jīng)不能用了)。
[1]OpenClaw: https://openclaw.ai/[2]Nanobot: https://github.com/HKUDS/nanobot[3]Bub: https://bub.build[4]Pi: https://github.com/badlogic/pi-mono[5]PR: https://github.com/PsiACE/bub/pull/45
![]()
![]()
轉(zhuǎn)載原創(chuàng)文章請?zhí)砑游⑿牛篺ounderparker
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
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.