大家好,我是雙越。[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 個人助理,類似於 Openclaw 小龍蝦。
包括 tools skills memory context permission subagent session command hook MCP-server ... 等 Agent 基礎能力。
你可以和它聊天、讓它讀寫文件、配置 Skills、設定排程任務、使用 MCP server 傳送訊息...
如果你也想和我一起從 0 開發一個 AI Agent,可以私訊我~

本文分享一下我在開發過程中遇到的一些實際問題,和注意事項,供大家參考。
初學 Agent 開發的同學,尤其是著急做出一個 demo 或者專案,就會過於看重 Chat 聊天功能。
於是,剛開始接入 LLM 介面,成功送出第一個請求,然後就開始考慮完善 Chat 功能。
其實在 Agent 開發中,Chat 功能並不重要,甚至 Chat 都不是 Agent 專案的一部分,它更多的是 UI 前端部分的功能。
我之前分享過一篇文章《別再把 AI Agent 當作聊天機器人了》裡面講過 Agent 和 Chat 的幾個主要區別,初學者要學會區分。
正確的做法是,按照 Agent 的架構設計來做,Chat 作為獨立的模組和 Agent 解耦。例如 智語 專案的功能模組如下,Agent 包含這些模組,但不能包含 Chat

我一開始設計 Skills 功能的時候,沒有考慮到最後發佈、安裝,使用者使用的真實場景。
我就把 Skills 放在程式碼庫中了,而且在 build 時候,還把這些 Skills 資料夾複製到 dist 目錄下。

後來發現這樣不行,使用者安裝使用,如果要安裝新 skill,是不會考慮程式碼庫的。
我應該像 OpenClaw 小龍蝦一樣,開闢自己的工作空間目錄 ~/.zhitalk,所以配置都放在這裡。
現在 Skills 也存放在工作空間,分兩個目錄:
.agents/skills 目錄skills 目錄
同理,MCP Server 和 Hooks 的配置,現在也都放在工作空間目錄的設定檔中 ~/.zhitalk/zhitalk.json

記得最早接觸 Openclaw 小龍蝦的時候,它是使用一個 memory.md 來儲存使用者記憶的。
所以我最早開始設計 智語 專案的時候,也想用這種方式,用一個 markdown 記憶檔案。
但我很快發現這種方式有問題,它會把所有的記憶都混合在一起,而且隨著使用越來越難以管理。
記憶應該分層,不同層級管理不同的記憶,分開管理
對於長期記憶,應該使用 sqlite 結構化儲存,這樣才便於增刪改查。

每次呼叫 AI 請求時 Context 如果多了,會出現各種問題,我在之前的部落格中分享很多次了。
一個成熟的 Agent 應該有 Context 壓縮能力,否則隨著聊天記錄增多,Context 會越來越大。
很多初學者壓縮 Context 的方法就是簡單粗暴的:截取前 xx 條。
這樣做雖然高效,但會丟失掉很多之前的資訊,影響 short-term memory 短期記憶。
我為 智語 專案設計了 4 層 Context 壓縮機制,再配合記憶功能,內容幾乎沒有缺失。
你可以呼叫 /compact 命令手動壓縮,也可以等待 Context 使用超過 80% 自動壓縮

我們都知道 Agent 需要考慮權限和安全,尤其是 tool 呼叫的時候,不能讓 LLM 隨意發揮。
初學者對於權限的設計可能就是不斷地:找使用者確認。凡是不確定的就丟給使用者。
這是一種很不負責任的設計方式,也會因為頻繁打擾使用者而降低使用者體驗。
在 智語 專案中有非常詳細的權限設計,總結下來大概有三種類型,盡量減少打擾使用者

以上就是我開發 智語 專案遇到過的幾個問題,是真實體驗和記錄,不是 AI 生成的。
如果你也需要開發 AI Agent 可以參考本文,不要重複踩坑。
我會繼續分享 AI Agent、AI 程式設計相關的內容,歡迎按讚追蹤~