大家好,我是雙越。[wangEditor](https://link.juejin.cn?target=https%3A%2F%2Fwww.wangeditor.com%2F) 作者,前百度 滴滴 資深前端工程師,慕課網金牌講師,PMP,[前端面試派](https://link.juejin.cn?target=https%3A%2F%2Fwww.mianshipai.com%2F) 作者。
去年我搞了一個 AI Agent 項目 【智語】 並有很多同學參與學習和開發。隨著一年的發展,AI Agent 相關技術也發生了極大的變化,因此我要重構這個項目,做一個符合當前 AI Agent 技術要求的項目。
如果你也想一起來,可私訊我~ 沉浸式地體驗從 0 開發一個 AI Agent 的詳細過程。
先講做什麼,再講怎麼做。
很多同學可能還不知道 Agent 到底是一個什麼東西,它和 AI LLM 有什麼關係。
可以做一個比喻,LLM 大模型就是大腦,聰明但能力不足,Agent 就是給大腦裝配上手腳口鼻眼等,不僅能思考,還能真正地做事情。

去年做的第一版項目是一個 AI 面試官,應用範圍比較窄,主要是優化履歷、模擬面試、解答面試題...
這次重構我要做一個通用的,參考目前比較流行的 AI Agent ,做一個像 OpenClaw 小龍蝦一樣的項目。
只不過它目前是運行在主控台的,像 Claude Code 一樣。目前還不能連接飛書、釘釘等 IM 聊天工具。
但功能、配置是和 OpenClaw 完全一樣的。你可以和 AI 聊天、讓它讀寫文件、配置 Skills、設定定時任務、使用 MCP server 發送訊息等...
它也是一個優秀的個人 AI 助理,而且更輕量級、低成本。

這次我依然選擇使用 Typescript 語言和 Node.js 執行環境,社群豐富,且對前端開發人員很友善。
繼續使用 langChain 和 langGraph 框架,它們可以很快地搭建和配置一個 Agent 。
第一,學習 Agent 開發,才能讓你更好地使用 Agent 工具,例如 Claude Code、Cursor,OpenClaw 和本項目有很多地方的設計是相同的。
第二,學習 Agent 開發,讓你有機會轉型做 AI 工程師。這個項目幾乎涵蓋了所有 Agent 開發的必備技能,讓你從 0 做出一個優秀的 Agent 產品。
去年開發的第一版是基於一個開源項目二次開發的,是 AI chat 項目形式。
現在重構的項目,完全是我自己從 0 開始一步一步搭建出來的,包含了當前 AI Agent 所有核心技術。包括 tools、skills、memory、context、permission、subagent、session、command、hook、MCP server ...
其他優秀的 Agent(如 claude-code、cursor、openclaw)也都是這些功能,現在 Agent 已經發展得比較穩定了。

LLM 大模型,是一切的基礎,所有的決策、每一個步驟都要經過 LLM 的推理和判斷。
一個通用的 Agent 應該支援所有常見的 LLM API ,至少得支援國內的、本地的 LLM 接口。
有了 LLM 接口,每一步的呼叫也需要單獨封裝,要考慮很多種情況,包括
如下圖,使用者送出了一個 AI 請求,AI 串流輸出回覆內容,中途你可以按 ESC 取消這個請求。

ReAct = Reasoning 推理 + Action 執行,一邊推理一邊執行,這是目前 Agent 的基礎流程。
所以,只要有 LLM 和 tools,再加上這個流程設計,就已經是 Agent 基礎了。

上文提到 ReAct Agent 基礎版本就是:LLM + tools,LLM 是大腦,tools 是手腳。
設計一個通用的 Agent 至少要內建如下 tools

這只是最基礎的,沒有這些,Agent 就跑不起來。但 tools 是貫穿 agent 全局的。
例如,下文的其他功能也會用到 tools 。
再例如,透過 MCP server 來擴展第三方能力,也是用的 tools
一個 skill 就是一個技能手冊,skills 就是 Agent 的技能包和圖書館,AI 會選擇和主題相關的技能,根據這些技能的指導,回覆品質會更高、更符合使用者要求。
甚至,一個 skill 的文字都可以定義工作流程,LLM 能很好地理解。2025 年之前可都是透過畫流程圖來定義的,那個很麻煩。
這次重構的【智語】項目天生支援 skills,你安裝和配置第三方 skill,你還可以建立自己的 skill

之前的項目是 AI Chat 形式,左側是對話列表,右側是聊天區域。
重構以後就不是這個形式了,但還得有對話的管理。使用 slash command 形式,和 Claude Code 一樣。
使用 /new 可新開啟一個會話,使用 /sessions 指令取得最近 20 條歷史對話,使用 /rewind xxx 可回覆到之前的某一個會話中。

預設情況下,每次 AI 接口請求,Agent 會把目前所有聊天記錄都發過去,這樣很容易造成 Context 內容臃腫,因此會產生 AI 幻覺、token 用量大、花費大等問題。
所以一個優秀的 Agent 一定得有 Context 壓縮機制,而且不能簡單粗暴地裁剪、或讓 AI 總結,要結合情況分析。
重構以後的【智語】項目有 4 層壓縮機制
如下圖,當 Context 內容超過 80% 會自動開啟壓縮,並建議使用 /new 指令開啟新會話。

PS. 上圖為了測試,刻意把 token limit 設定為 4000 ,測試完會還原為預設的 256,000
一個 Agent 個人助理,必須有記憶功能。
例如,我告訴它「我叫雙越,我是一名程式設計師」,它要能記住我的姓名、職業。它還要能記住我最近做的事情,以及我的一些個人習慣。

重構後的【智語】項目有 3 層記憶,這也是其他開源 Agent 常用的設計方式
記得 OpenClaw 剛開始火爆網路時,很多人擔心它的安全問題,不建議安裝在個人電腦上。
Agent 確實會有安全問題,而且也確實無法真正 100% 保證絕對安全。任何軟體都可能有漏洞。
但我們能做的是,盡量保證絕大部分應用場景下的安全考量,攔截危險操作和危險目錄。
首先,把目前所有 tools 設定權限級別:read、write、exec、network、db
安全級別低的 read、network 可以直接執行 tool,安全級別高的需要其他防護措施。
再判斷目前操作的檔案、目錄等,是否是系統敏感檔案或敏感目錄。如果是直接拒絕。
如果不是敏感的,要看是否是目前目錄內的,如果不是則爭取使用者同意。
還要判斷執行的 shell 腳本是否是危險命令,如 rm -rf /,如果是則直接拒絕。
agent 安全防護流程就是下面 4 個階段:
體驗 AI 程式碼助手 程式碼解讀 複製代碼 階段 1(Bash 預檢)→ 階段 2(Deny 規則)→ 階段 3(Allow 規則)→ 階段 4(Ask)
如下圖,我想讓 agent 讀取我系統的一個敏感檔案,它提示無法讀取。

Permission 權限的規則都是固定的,且是 agent 項目內建的。你不能修改,也不好擴展。
Hook 就是一個讓使用者自定義權限規則的方式,你可以在多種時機去定義自己的規則。
例如,在呼叫 tool 之前,你可以定義什麼檔案不能被操作,如 .env
例如,在會話開始之前,你可以定義聊天內容中要加上什麼內容
OpenClaw 社群中目前最火爆的 skill 叫做 self-improving-agent,它就可以使用 hook 來整合內容。說明 Hook 已經是 agent 的一個必備模組了。

當一個聊天的內容越來越多、越來越亂,就很容易導致 Context 超過 token limit,以及 AI 幻覺。
解決這個問題的方式之一,就是使用 subagent 來做一些獨立的事情。
subagent 上下文和 main-agent 上下文是完全分開的,它不會影響到 main-agent context 大小。
所以,subagent 也是一個 agent 項目必備的能力。
如下圖,我可以啟動一個 subagent 幫我做一件事。無論你怎麼做,最後告訴我結果即可。

以上是一個 AI Agent 的核心模組,還有一些其他內容。
一個 AI Agent 要能支援配置 MCP server,一邊擴展第三方能力。但 MCP server 也有很多侷限性,它會導致 agent 請求 AI 接口時攜帶大量 tools,影響效率和成本。現在很多人也在對比 MCP server 和 skills + cli,後者也在社群中被推廣。
slash command 也是 agent 常見功能,例如上文講到的 /new、/rewind、/sessions、/compact
RAG 檢索增強生成,以及 vector 向量資料庫,在目前 agent 設計中的重要性被降低了很多。主要是因為它的成本較高,在個人使用的場景下,用其他方式可以替代。
還有,由於是本地執行的 agent,它天生易於讀取本地檔案(文件、表格、圖片等),只要 LLM 支援就沒問題。
另外,後面我會考慮支援語音輸入等進階功能,讓使用者體驗更好一些。
淺層學習看輸入,深入學習看輸出。
無論你刷多少朋友圈,看多少文章和影片,看的是都是皮毛,看完就忘。
只有你從 0 開始把這些東西一步一步做出來,你才是真正理解了 AI Agent,才能有機會步入這個行列。
我自己就是這樣的,一開始大量地攝入,後來總結整理出一個知識體系,最後實踐出一個真實的項目。
期待你和我一起來搞 Agent ~