100行代碼速通Agent開發(fā)
大家好,我卡頌
自從23年初GPT爆火后,每年都會涌現(xiàn)一些爆火的AI概念。
今年最火的概念無疑是Agent。
伴隨而來的,是各家都在爭奪「Agent的解釋權」:
openAI發(fā)布a-practical-guide-to-building-agents[1]Antropic發(fā)布building-effective-agents[2]langchain作者發(fā)文how-to-think-about-agent-frameworks[3]反駁openAI的觀點(目的是推銷自家的langGraph)
這些繁雜的信息無疑加深了開發(fā)者對Agent的理解成本。
實際上,Agent的概念非常簡單。本文會用一個「100行代碼的Agent框架」講解「Agent的開發(fā)原理」。
什么是 PocketFlow?
PocketFlow[4]是一款僅有100行代碼的Agent框架,作者是Zachary Huang[5]。
他的概念非常簡單 —— 所有AI應用的核心流程,本質(zhì)來說是不同復雜度的圖(graph,一種數(shù)據(jù)結(jié)構(gòu)),由最基本的數(shù)據(jù)結(jié)構(gòu)Node組合而成。
以「AI總結(jié)郵件內(nèi)容」這個場景舉例:
只讓AI總結(jié)郵件內(nèi)容,那么核心流程就是一個Node:

如果AI總結(jié)郵件后再生成回復草稿,就是兩個Node組成的Flow:

如果要重復總結(jié)多份郵件,就是多個Node重復執(zhí)行,這些Node組成Batch:

如果要同時總結(jié)多份郵件,就是多個Node同時執(zhí)行,這些Node組成Parallel。

再考慮一些流程設計,比如:
- 循環(huán):
NodeA 與 B 的輸出分別作為對方的輸入。 

分支:Node根據(jù)條件與不同Node連接。

當有了這些基礎的結(jié)構(gòu)與流程后,就能組合更復雜的圖。
比如「循環(huán)」和「分支」可以組合成Agent。
下圖是一個「總結(jié)郵件內(nèi)容并生成回復」的Agent,他會分析郵件內(nèi)容、確定是否需要人工審核、草擬回復并不斷迭代優(yōu)化。

一些常用的AI工具也能組合生成,比如下圖是RAG的結(jié)構(gòu):

有了RAG,再結(jié)合流與循環(huán)就能組合成「AI聊天應用中的聊天消息記憶模塊」:

到這里你應該能理解為什么PocketFlow代碼只有100行 —— 他只實現(xiàn)了構(gòu)成AI應用所需的基本數(shù)據(jù)結(jié)構(gòu)。
要開發(fā)任何AI應用,只需要:
- 了解該應用可以設計為「什么結(jié)構(gòu)的圖」(graph)
 - 用
PocketFlow描述圖結(jié)構(gòu) - 實現(xiàn)圖結(jié)構(gòu)、輔助方法、圖的狀態(tài)管理
 
聽起來是不是有種「庫太簡單,以至于需要開發(fā)者自己寫很多代碼」的感覺?
在AI時代,這恰恰不是問題。
Agentic Coding
由于PocketFlow代碼量極少(100行),這意味著你能將他的源代碼、設計理念、使用方法、案例合并為一條提示詞給到大模型。
通過這條提示詞,現(xiàn)代大模型(比如Claude-sonnet-3.7、Gemini2...)可以輕松掌握PocketFlow使用方法的最佳實踐。
作者還為上述最佳實踐設計了一套稱為Agentic Coding[6]的「AI輔助開發(fā)模式」。
這套開發(fā)模式是「人類設計」與「AI實現(xiàn)」的協(xié)作模式 —— 人類負責理解需求、定義高層架構(gòu)和評估結(jié)果,AI負責實現(xiàn)細節(jié)和優(yōu)化。
假設我要基于PocketFlow開發(fā)一個mini Cursor,Agentic Coding的流程如下:
- 我去調(diào)研
mini Cursor需要實現(xiàn)哪些功能 - 與AI協(xié)作確定這些功能對應什么圖結(jié)構(gòu)
 
對于Cursor應該是Agent結(jié)構(gòu)。
- 與AI協(xié)作確定工具的類型定義
 
mini Cursor需要如下工具:
- codebase_search:語義搜索工具
 - read_file:讀取文件內(nèi)容(或大綱)
 - run_terminal_cmd:代表用戶在終端執(zhí)行命令
 - list_dir:快速列出目錄內(nèi)容
 - 等等
 - AI使用
PocketFlow實現(xiàn)我在步驟2確定的圖結(jié)構(gòu) - AI實現(xiàn)我在步驟3確定的工具
 - 評估、優(yōu)化效果
 
就我個人體驗,基于Agentic Coding,開發(fā)mini Cursor我只用了1天時間,結(jié)構(gòu)如下:

核心代碼就是定義不同Node,比如核心Agent、各種工具Node。
再將各個Node連接形成圖。

總結(jié)
所有AI應用的核心流程,本質(zhì)來說是不同復雜度的圖(graph,一種數(shù)據(jù)結(jié)構(gòu)),由最基本的數(shù)據(jù)結(jié)構(gòu)Node組合而成。
PocketFlow提供了最基本的數(shù)據(jù)結(jié)構(gòu)以及一套「人類設計 + AI實現(xiàn)」的協(xié)作開發(fā)模式Agentic Coding(本質(zhì)是一段可以作為cursor rule的提示詞)。
你可以在cursor(或其他AI IDE)幫助下,快速開發(fā)各種AI應用。
參考資料
[1] a-practical-guide-to-building-agents: https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf。
[2] building-effective-agents: https://www.anthropic.com/engineering/building-effective-agents。
[3] how-to-think-about-agent-frameworks: https://blog.langchain.dev/how-to-think-about-agent-frameworks/。
[4] PocketFlow: https://github.com/The-Pocket/PocketFlow-Typescript。
[5] Zachary Huang: https://github.com/zachary62。
[6] Agentic Coding: https://pocketflow.substack.com/p/agentic-coding-the-most-fun-way-to。















 
 
 












 
 
 
 