看不懂 Agent?我花一下午写了个 mini-OpenClaw

张开发
2026/4/14 7:49:22 15 分钟阅读

分享文章

看不懂 Agent?我花一下午写了个 mini-OpenClaw
小龙虾的火热即将接近尾声但 Agent 的大时代才刚拉开序幕这不 Hermes Agent 马上就杀了出来可以预见的是这种 Agent 系统会越来越多。整理了小龙虾的系统架构和工程设计包括 Gateway、Memory、多 Agent 协作…但看完后我觉得它有些复杂作为一个只想让 AI 帮我干点杂活的个人用户这套系统似乎太重了简直不利于学习于是我决定让 AI 帮我写一个 mini-OpenClaw全程不动手写一行代码结果代码是跑起来了但过程里踩的坑、做的取舍还是比较有意思。先看个最终效果我说了一句帮我发一篇热点小红书它就自己去搜了当天热搜、读了新闻详情、写了文案、生成了配图最后打开浏览器帮我把小红书草稿箱填好了这一切是怎么发生的呢请大家带着前面架构解读的文章和思路继续往下看最终的项目结构我们以终为始先看看最终的目录结构my_agent/├── app/ # 后端FastAPI│ ├── main.py # 入口│ ├── api/ # API路由chat、agents、models、tools、skills...│ ├── schemas/ # 数据模型│ ├── services/ # 业务逻辑LLM调用、工具执行、记忆检索...│ ├── llm_providers/ # LLM适配层DeepSeek、通义千问、OpenAI兼容│ ├── tools/ # 内置工具实现│ └── utils/ # 日志等工具├── frontend/ # 前端Vue 3 Vite│ └── src/│ ├── views/ # 页面Chat、Agents、Models、Tools、Skills、Logs、Memory│ ├── stores/ # Pinia状态管理│ ├── api/ # API客户端│ └── components/ # 组件├── workspace/ # 运行时数据│ ├── agents/ # Agent配置和提示词│ ├── skills/ # 已安装的技能│ ├── conversations/ # 对话历史JSONL│ └── *.json # 各种配置文件├── desktop_app.py # 桌面应用入口└── pyproject.toml # 项目依赖以前想做点程序要么花钱用别人的平台要么找程序员朋友帮忙搭一套。现在你只需要会打字、会描述需求就能拥有一个属于自己的 AI Agent。让我们一点点继续吧~技术栈和功能规划小龙虾的功能很全多通道设计、会话多车道、定时任务、渠道管理、工具管理、技能管理、记忆管理、权限检查…不过从架构学习与拆解的角度来说没必要搞这么复杂。我的需求其实很简单一个 Web 聊天页面可以日常通过自然语言让 Agent 干活就行。如果在这个基础上能管理 Agent、模型、工具、技能、记忆再加一个模型调用日志的查看界面方便排查问题就更好了。把需求描述给AI后AI给我的建议是 Python React。后端用 Python 没啥问题但前端我熟悉的是 Vue想了想还是让 AI 改成了 Python Vue毕竟 Vue 我还能兜底只不过结果证明AI 根本不需要我兜底。其实真正让我纠结是自己写还是让 AI 写。这是个非常大的问题如果是生产级应用我建议暂时还是自己做框架让 AI 做辅助因为其实工作量也不大不过是从之前的项目里面拷贝、搬运过来罢了…但如果仅仅是个案例那就随便咯不得不说自从用上 AI Coding 之后我越来越懒了只想看 AI 写代码下一代可能连 “Hello World” 是什么这个梗都不知道了…说干就干打开 Claude Code把需求一丢我现在需要开发一个 mini版本的openclaw后端使用python FastApi使用uv进行包管理前端使用vue项目采用前后端分离后端放到目录 app中前端放到目录frontend不使用数据库所有数据使用json文件存储 保存到workspace目录中我需要实现以下功能1、agent管理2、工具管理3、技能管理4、模型管理5、聊天窗口 和 指定的agent聊天没有指定 就使用默认的agent你需要先给我指定一个详细的开发计划并且输出到文档中需要给出一个开发进度表每完成一个功能就标记状态为完成AI 很快就给出了开发计划技术栈是这些层级技术选择后端Python 3.10FastAPIuv包管理Pydantic前端Vue 3VitePinia状态管理AxiosTailwindCSS数据存储JSON 文件位于workspace/目录开发工具uvNode.js 18Git计划和我想要的差不多那就开干。整体架构长这样PS从这里也可以看出我们与一般小白的不同我们是具备对 AI 的评价能力的包括架构和具体实现细节的各种评价而这个评价在复杂项目里面就很重要了一步一步从零搭建开发过程按 AI 给的任务列表逐个推进每完成一个功能就标记状态然后开一个新会话继续下一个开发计划文档.md 现在需要继续开发 任务编号为3的功能模块 Agent管理只需要开发这个模块完成后修改状态。这里为什么要开一个新会话主要是上下文限制。这些功能模块比较独立单独开一个新会话AI 没有历史消息的负担可以更好地干活。就这样一个个推进很快完成了第一版。界面不太好看用技能frontend-design美化了一次使用frontend-design 帮我优化界面颜色配置不要太鲜艳了需要谈一点最后的结果如下功能看着都有了但还没有实际测试过。接下来逐个验证不符合预期的就通过自然语言描述让 AI 改。模型管理接入了 DeepSeek、通义千问这两种国产模型也支持任何 OpenAI 兼容接口。API Key 单独存在 .env 文件里不在配置文件里明文暴露还做了个连接测试功能配好模型点一下就知道能不能用这个很实用每个模型的新增、修改、删除都需要手动测试。比如测试时就碰到了编辑数据无法保存的问题直接告诉 AIAgent 管理每个 Agent 有自己的 system prompt 和知识库用 Markdown 文件存agent.md 和 knowledge.md可以直接在界面上编辑。Agent 可以关联指定的模型、工具和技能配一个默认 Agent 不能删然后就是工具管理模块了工具管理一开始只有默认的文件读写功能我需要先想好要哪些工具然后让 AI 去开发工具库。根据历史经验最终实现了 6 大类共 12 个工具文件读写、系统命令、代码执行、Excel 操作、文生图、浏览器操作browser use。后面会详细展开。这些工具通过自然语言描述就能让 AI 生成并且让它自己测试没问题才算完成。需要特别说一嘴的是浏览器操作工具最折腾AI 最初给的版本根本用不起来我跟他叽歪了半天它也干了半天效果还是不理想我也不想再折腾直接打开 Openclaw 的源码让 AI 分析它的浏览器操作是怎么设计和实现的生成一份文档然后再把文档丢给 AI让它在我的项目里实现一个一样的…PS从这里大家应该可以更清晰 Claude Code 泄露的意义在哪了吧核心思路是用 Playwright 做浏览器自动化但没用传统的 CSS 选择器方式而是基于ARIA 无障碍树。简单来说AI 先拿到页面的无障碍树每个可交互元素都有一个 ref ID然后通过 ref ID 来操作元素。这种方式比 CSS 选择器稳定一些页面改版也不怕。最后浏览器用 Chrome 的 CDP 协议独立启动应用退出了浏览器还在登录状态一直保持登录一次以后就不用再登了。接下来是 Agent 第二核心技能包模块了Skills 管理这块支持扫描本地目录发现新技能、在线编辑还能安装 OpenClaw 的技能共享其生态技能这东西按需安装就行可以去 OpenClaw 的技能生态中下载通过导入 ZIP 文件完成安装也可以直接让 AI 帮我们创建我现在需要一个技能用来读取pdf和word文档的内容其中技能的编辑页面AI最开始给出来的很复杂它只读取了 Skill.md 的名称和描述其他的内容都没有显示出来其实我想要的是整个技能的目录按照树形结构加载技能的内容我也可以修改于是让AI修改技能编辑的时候目前只能编辑名称和描述我希望把技能的目录列出来左边是树形结构右边是内容文件内容都可以编辑保存到这里基本工作就做得差不多了可以进入聊天模块的设计了聊天功能聊天是整个系统的核心也是花时间最多的地方、最折腾的部分基础功能验证完成后打开了聊天界面给咱们的 Agent 发了一条你好。等了一会儿它告诉我它是 DeepSeek而且也不是流式输出我再问它有什么技能和工具它说啥都没有只能聊天…所以我搞了那么多白做了是吧这就是第一版的真实水平一个裸奔的聊天框。做程序其实就一个思路发现问题解决问题就好没有问题就不需要解决。所以针对这里的前端没有实现流式输出技能和工具也没有组装到提示词中告诉 AI 就好目前聊天窗口中没有使用流式输出你需要添加这个功能。另外提示词没有组装工具和技能给到大模型这个也需要加上。AI 修改完成后流式输出有了技能也能用了后续还遇到了不少问题都是发现一个解决一个模型已经说明要调用工具但是系统没有去执行模型有思考能力但聊天界面没有支持思维链的输出工具和技能的执行输入和输出没有显示到界面上图片生成后没有在界面上预览出来会话记录没有保存没有将会话记录加入到上下文中生成的文件、Excel 不好查看上述都是小 Case而聊天界面差点让我崩溃。这个界面太复杂了思考模型要输出思维链非思考模型没有而且思维链和其他问答的配色还不一样工具执行要显示技能执行也要显示技能执行的中间日志要实时输出图片生成需要预览…所有这些功能夹在一起页面就非常复杂。这也符合我们历史的开发经验我们有年限百万的同事一年就只需要折腾一个界面反复打磨就好因为真实情况也确实有很多问题。这里的真实情况是前一秒刚把技能日志输出改好后一秒工具执行结果显示又出问题那两天来来回回改了好几轮才勉强把这个页面的逻辑理顺。不然 AI 下次改其他问题的时候可能把之前好好的部分也给改掉了我在这里就遇到了两次改乱的情况。PS虽然给出了很多建议但我们其实经常自己也图方便不遵守最终的界面布局左边是会话列表中间是聊天区域右边是聊天过程中产生的临时文件和最终产物图片、PPT、Excel、文档等。中间聊天区域承载的内容较多思维链的输出工具的执行和输出图片预览技能的执行和输出文件上传工具调用方面AI 在聊天过程中可以自主调用工具和技能工具执行结果返回给 AI 继续推理最多支持 50 轮循环。这里我们实现的 Agent 采用比较经典的ReAct 模式来进行推理。ReAct 的运行机制可以概括为一个经典的循环Thought思考→ Action行动→ Observation观察。在具体调试上我们需要观察 llm的日志 来查看 系统有没有按照这个模式来执行对话历史选了 JSONL 格式存储每条消息一行追加写入。每个会话一个文件每个会话还有一个文件夹用来存放 AI 生成的文件和中间结果保存到workspace目录下。在我们的工作目录 workspace 中 保存了所有会话的记录我们在和 AI 对话之后需要去检查这个目录里面的数据是否正常至此其实主体功能就已经差不不多了整个 Agent 的核心机制都够了如果目的仅仅是学习便可以到此为止但如果你想让他看上去稍微聪明点那就需要上记忆系统了这也是比较难的部分我们这里也只实现了皮毛记忆系统除了以上基础模块我还给每个 Agent 加了一个记忆功能。记忆系统很重要否则每次开新会话Agent 都是从零开始昨天跟它说的话它全忘了。比如我跟它说过写文案不要用emoji下次它照样给你加一堆表情这也是我们前面说他显得很蠢的原因。其实这里模型并不蠢因为模型 API是一套标准一次性输入输出他又没有记忆记忆是我们需要做的工程控制于是让 AI 帮我加了个记忆系统。每个 Agent 有一个 MEMORY.md 文件专门记重要的事。对话聊到一定程度系统会自动触发一次记忆保存。让 AI 自己判断哪些信息值得记住写到文件里下次开新会话它会先翻翻自己的小本子把之前的偏好和上下文捡回来。检索这块也做了点功夫越早的记忆权重越低免得 AI 老拿三个月前随口说的一句话当圣旨重复的内容也会自动去重。至此一个用于学习的 Mini-OpenClaw 就真的差不多了在这个基础下便可以继续做些体验上的优化打包成桌面应用我其实不需要打包成桌面应用我直接在 web 上就可以让 AI 干活了。但有个朋友也想用他不是技术人员电脑上没有 Python 和 npm他需要的是一个双击就能用的程序。于是让 AI 帮忙写了个打包脚本。用 PyInstaller pywebview 把整个应用打包成 macOS 的 .app双击就能用不用装 Python、不用装 Node.js、不用开终端。PSWindows 我就没管了毕竟这年头正经人谁还用那玩意额但要说一句的是这一步还是踩了不少坑…开发模式和打包模式的资源路径完全不同技能脚本需要独立虚拟环境运行Chrome 浏览器的启动路径也不一样。pywebview 还有连接超时的问题流式输出会断折腾了好久最后加了个心跳包每 15 秒发一个 keepalive 才算搞定…PS还是那句话AI Coding 确实可以解决很多小问题但传统程序员最核心的技能其实是死命折腾这点不具备也做不好程序至此整个系统就真的做完了于是乎我们做下扩展聊聊什么是生态问题系统里有哪些工具工具是 Agent 的基础能力系统内置了 12 个工具每个都注册在工具注册器里AI 在聊天时可以自主调用工具说明file_read / file_write文件读写AI 可以读取和创建文件command_executeShell 命令执行可以跑任意终端命令code_executePython 代码执行用来跑代码片段web_searchDuckDuckGo 网页搜索用来搜索信息web_read网页内容提取三级策略先 httpx 直连不行用 trafilatura还不行上 Playwright 无头浏览器browser_use浏览器自动化支持 22 种操作点击、输入、截图、滚动、标签页管理等基于 ARIA 无障碍树image_generateAI 图片生成调用配置好的图片模型excel_read / excel_write / excel_sheetsExcel 读写和查询用 openpyxl 实现memory_search / memory_get / memory_saveAgent 记忆管理搜索、读取、保存记忆上述工具库就是整个系统基本能力的核心也是需要不停做扩展的地方。举个例子如果你接下来需要操作多维表格、或者各种内部系统那么就需要自己扩展工具这些工具里面不得不提一下code_execute。这个代码执行工具有点让人又爱又恨我使用他其实就只是想拿来做个兜底但真实情况是很多时候明明有其他工具和技能可以用AI 就非要自己写代码来用这个工具执行。***AI 是真的很喜欢写代码***但它自己又一次性写不好折腾半天最后还是得靠技能来完成任务。所以如果没有特殊需求这个工具我都不给 Agent 用了…系统里有哪些技能工具是底层能力技能是上层编排这两个是 Agent 生态扩展的核心Skills 的本质是 SOP工具是这套 SOP 能不能被执行的根本我们这里系统支持两种技能类型Prompt 型技能只有一个 SKILL.md 文件本质是一套提示词模板。AI 读到提示词后自己决定怎么调用工具完成任务好处是简单灵活不依赖任何外部脚本。Script 型技能除了 SKILL.md还有 scripts/main.py会以子进程方式执行。脚本的标准输出会实时流式回传到聊天界面用户能看到执行过程。每个技能运行在独立的 Python 虚拟环境里不会影响主应用。技能安装很方便可以直接上传 ZIP 包GitHub 下载的压缩包直接能用也可以扫描本地目录自动发现新技能还能在界面上在线编辑。目前系统里安装了这些技能hot-news-top10— 热点新闻搜索。用 DuckDuckGo 搜索当日热点自动聚类打分输出 TOP10。可以传关键词搜特定领域也可以不传搜通用热点。这个技能是很多复合技能的基础组件。douyin-summary— 抖音视频总结。输入抖音链接自动提取视频内容并总结。douyin-comment— 抖音自动评论通过浏览器自动化技术将指定的评论发布或者结合douyin-summary 自动生成评论内容发布xhs-hot-publisher— 小红书热点图文自动发布。这是一个多步骤复合技能先搜热点 → 用户选题 → 深度采集内容 → 生成配图 → 撰写文案 → 浏览器自动发布到小红书草稿箱。xiaohongshu-publish— 小红书发布工具。配合 xhs-hot-publisher 使用通过浏览器自动化把图文发布为小红书草稿。create-pptx— PPT 生成。基于 python-pptx 库自带商务和教育两套模板能生成时间线、图表、多页幻灯片还考虑了 WPS 兼容性。file-reader— 文档读取。支持 PDF 和 Word 文档的文本提取用 pymupdf 和 python-docx 实现。skill-creator— 技能生成器。用来自动创建新技能的技能输入需求就能生成 SKILL.md 和脚本模板自动注册到系统。如果觉得不沟通首先可以从网上下载但从学习的角度我是建议各位自己简单写一写最后我们来看看演示效果吧案例演示光说功能太抽象了下面用几个实际例子展示 Agent 是怎么工作的。案例 1搜索热点新闻这是最基础的用法一个技能就能搞定。用户今日有哪些热点事件AI我来搜索今日的热点事件。我可以使用 hot-news-top10 技能来获取全网热点新闻。这个技能会搜索热点新闻并生成 TOP10 选题包含事件描述、核心角度和标题等信息。让我调用这个技能。整个过程很快就完成了。用户只需要说一句话AI 自己决定调用哪个技能来实现需求。案例 2抖音视频总结这个稍微复杂一点涉及链接识别和内容提取。用户https://www.douyin.com/video/7625983892776400448?modeFrom 帮我看看这个视频说了什么AI用户提供了一个抖音视频链接要求我看看这个视频说了什么。我应该使用抖音视频总结助手skill_douyin_summary来处理这个请求。AI 先识别链接类型然后调用对应的技能脚本脚本输出实时流式显示最后 AI 再对内容做一次总结整理。案例 3小红书热点图文自动发布这是最能体现 Agent 能力的案例一个需求串联了 5 个步骤跨越搜索、网页读取、图片生成、文案创作、浏览器自动化发布等多个能力。用户帮我发一篇热点小红书AI 直接使用了技能skill_xhs_hot_publisher用户想要发布一篇热点小红书笔记。我可以使用 skill_xhs_hot_publisher 技能来完成这个任务。这个技能会获取当天热点新闻让用户选择选题然后生成配图和文案发布为小红书草稿。后续调用了技能hot_news_top10获取热点新闻这里需要用户手动确认一条热点新闻,技能里也可以选择自动确认跳过人工环节。确认热点新闻后AI 会调用web_read工具获取详细内容为生图和文案创作提供素材最后调用xiaohongshu_publish技能完成发布。发布结果内容暂存在小红书的草稿里需要手动确认后再发布。目前内容还是 Markdown 格式的纯文本样式还需继续优化。整个流程中用户看上去只做了两件事说了一句话、选了一个选项。剩下的搜索、采集、生成图片、写文案、发布全部由 Agent 自主完成。但如果你打开执行日志就会知道 Skills 和 工具才是根本了本质是 Workflow 换了个承载工具。结语好了之前写架构解读相关文章总有朋友说读不懂我今天 TM 一个字代码都没写总不可能读不懂了吧回头看整个开发过程有三点我相信大家也会影响深刻一、评价能力很重要可以让 AI 写代码但你要懂架构。整个项目绝大部分代码是 AIClaude Code写的但技术选型、模块划分这些关键决策是我做的。系统架构设计、框架搭建、前端页面布局等则全部由 AI 完成。你和 AI 的关系更像产品经理和程序员你负责想清楚要什么它负责实现。但你有没有对他工作的评价能力这就变得很重要了。二、颗粒度对齐有些时候这些黑话还是挺有意思的比如怎么确认 AI 写的代码是你想要的。那就不得颗粒度对齐了吗界面上的功能好验证自己操作看看预期是否一致就行。但后台逻辑呢不懂技术的话看不懂代码怎么确认 AI 写的功能和自己设计的是一致的我总结了几个办法这些颗粒度要对齐让 AI 对照业务需求做自查让 AI 输出关键步骤的日志用文件或简单数据库存储数据直接查看让 AI 生成可读的测试报告准备一些测试例子看看输出是否符合预期三、生态才是核心我们这里是做课件帮助大家做学习的但生态的威力相信大家也能有所感受暂时来说技能系统是最有价值的设计工具是静态的、通用的、你看不到的技能是动态的、可扩展的用户在实际使用的。从帮我搜个新闻到自动发一篇小红书技能把零散的工具能力编排成了有意义的自动化流程。一个好的技能系统让 Agent 的能力可以无限扩展。一个在前、一个在后这两个生态怎么配合就算真的做 Agent 平台的公司需要思考的了。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章