春节10天如何从0开发“OpenClaw”,金融算法数据工程师已上岗 | Glint新鲜事

0 阅读15分钟

OpenClaw出道至今,艺名改了2次,一直爆火,很多人都在研究如何更好的使用它,作为消耗了几十亿token的AI Coder,想着何不尝试做一个更“傻瓜”一键安装的桌面AI助手,任何人都能轻松使用?说干就干。

项目地址:github.com/kevinluosl/…

我给项目取名叫DeepBot,选择了Electron方便打包成各平台的桌面程序一键安装。

第一版本的开发时间大约100个小时左右,mac友好,支持跨平台,但还没有做专项的测试,app启动会自动检查运行环境是否OK,主要依赖nodejs和python环境即可,如果没有安装,可以自动帮助用户安装,整体架构如下:

图片

技术栈

前端 -- Electron(JS)

后端 -- NodeJS

数据库 -- SqlLite

模型 -- 任意模型接入,现在版本接入了qwen以及nano banana pro

核心库

选择了OpenClaw一样的核心库,地址是:github.com/badlogic/pi…

主要用了:

  1. pi-agent-core -- 智能体运行时,支持工具调用与状态管理
  2. pi-coding-agent -- 交互式编程智能体命令行工具
  3. pi-ai -- 统一的多供应商大语言模型 API(支持OpenAI、Anthropic、Google等)

在DeepBot的开发过程中,直接使用pi-agent-core不能很好的完成长时间的任务,中间会断掉,需要加入更多的判断逻辑判断是否需要继续执行任务。pi-agent-core会在执行完一些工具以后任务结束,但事实上并不是这样,我在这中间加入了语义判断确认agent任务是否真的完成。 |

创建的10个tools

  1. file-tool -- 文件系统操作
  2. exec-tool -- 命令行工具
  3. browser-tool -- 操作chrome浏览器
  4. web-search-tool -- 调用llm的网络搜索能力
  5. calendar-tool -- 操作mac的日历程序
  6. skill-manager-tool -- 搜索、安装、管理skills
  7. image-generation-tool -- 图片生成能力(定向使用Nano banana pro),顺手搭建了一个代理,无需魔法使用
  8. schedule-task-tool -- 允许agent执行多次,循环,定时任务
  9. memory-tool -- 记忆管理,根据不同用户记忆包括姓名、性格、用户习惯、错误总结 10.environment-check-tool -- 检查运行环境是否能让DeepBot全力运行

通过这10个tools,让DeepBot具备了在本地电脑“呼风唤雨”的能力,同时记忆系统(设计了一个轻量级的记忆系统,只记忆关键信息,使用memory.md)让DeepBot可以随着用户的使用越来越了解你的使用习惯,避免犯过的错误,越用越“聪明”。

tools是插件形式的,后续可以通过不断扩展新的tool让DeepBot不断具备新的能力。同时DeepBot也可以方便的增加新的tool,比如在发布这篇文章之前我们新增加了email-tool。如何在项目中增加新的tool,可以在github查看详细的说明,方便二次开发。

提示词的核心设定

1. AGENT.md -- 定义了DeepBot的核心能力

2. TOOLS.md -- 定义了预制工具的详细使用场景

3. CUTOSM-TOOLS.md -- 定义了新开发工具的详细使用场景

4. MEMORY-TRIGGER.md -- 定义了记忆系统的工作方式

Agent的核心设定

  1. main-agent -- 最多允许10个(可以扩展)agents同时执行任务,每个agent可以监控详细执行过程。
  2. sub-agent -- 允许agents集群在后端运行,当前版本暂时隐藏了该功能,实际表现不是很稳定,容易“蝴蝶效应”,一旦局部失败引起大面积坍塌。我倾向于不用后端agents执行,所有agents都是“main-agent”,可以集群执行复杂任务。

安全的限制

  1. 系统只能访问用户设定的工作目录以及工作目录下的所有子目录,并且不能设定用户目录外的目录。
  2. 限制了不能执行危险的命令行指令。
  3. 一个agent最多可以执行99次任务循环,一个循环可以执行多次工具调用,不限时长。
  4. 一次失败最多重试5次,并且是不同的方式,如果还是失败就结束。
  5. 限制同样的操作指令正常不应该重复执行。

ToDo

  1. 多接入网关支持,OpenClaw比较好玩的一个是他的getway可以接入各种不同的工具作为接入入口,这个功能后续实现一下,同时支持群组多人能力。
  2. 语音输入与语音反馈,作为一个AI助手,不能说话显然是不行的,这是赋予DeepBot“灵魂”的部分。
  3. 安全审计功能加强。4. 一些tools的功能优化。

当前DeepBot从整体能力上讲已经是一个支持多agents,可以通过skill、tools,程序脚本、记忆不断自我迭代升级的AI工具,功能上我感觉好像也没有什么太特别的需要增加的了,后续重点在实际复杂任务的执行中寻找问题,持续优化。


OK,介绍了项目的基本情况,来说说是怎么通过Vibe Coding实现这一切的。

开发工具准备

我使用的是kiro(kiro.dev/),选择Claude Sonnet 4.5模型。(使用cursor等任何AI编程工具均可)

Step 1

在开始我们的项目之前,可以从充分学习OpenClaw的实现开始,过去我们要阅读源代码需要花费很长的时间,现在借助AI,一天之内可以把你关心的所有问题都学习到了,推荐大家一个方式:

  1. 新建一个文件夹project
  2. github.com/openclaw/op… clone项目到文件夹中
  3. 再创建一个文件夹mybot(我的叫DeepBot)和OpenClaw平级4. 在kiro中打开project目录

建好以后类似这样:

图片

Step 2

接下来就可以开始来学习OpenClaw了,一开始我们什么都不知道,可以从下面的问题开始:

  1. 搜索clawdbot项目,告诉我他能做什么。
  2. OpenClaw为什么推荐在mac运行?
  3. 它是如何控制电脑的?
  4. 你能详细分析它的工具系统吗?
  5. OpenClaw的各项能力都是通过skill实现的吗?和tools是怎么分工的?
  6. OpenClaw是如何让agent执行复杂多流程任务的?
  7. OpenClaw是如何设计记忆系统的?
  8. ......
  9. 把我们学习到的内容,去掉重复的,创建一个学习文档。

我自己大概问了几十个问题来学习OpenClaw,可以尽可能多的去询问OpenClaw中的关键信息,比如还可以问它核心能力是如何实现的,画出详细项目架构,每一层架构的功能设计思路,对于他的各种tools,比如浏览器控制有什么特别之处,记忆系统的设计等等。

问完以后,让kiro将你问到的所有问题整理成一个OpenClaw学习笔记.md。

图片

除了学习笔记,在你询问了足够多的问题之后,还可以再问一个特别的问题:

我们这么深入学了项目,有没有哪些可以进一步优化改进的地方?

这时候你会得到一份比较详尽的优化建议,也作为我们后续制作新的AI助手的开发思路。

图片

Step 3

学习一个项目,当然不能只是纸上谈兵,这一步你可以让kiro帮你安装OpenClaw,只需要输入:

基于项目库,将OpenClaw帮我安装起来

这个过程kiro会自动分析安装说明,帮你安装,中间有什么问题根据提示调整就好,很快就能安装完成。安装的教程已经非常多了,就不累诉了。

图片

安装好以后,可以让kiro给你总结一个安装完成总结。

Step 4

在你充分学习并体验过OpenClaw以后,是时候开始制作DeepBot了。启动提示词可以是这样:

我们来开始一个MVP项目,我们已经深入学习了OpenClaw的优秀的部分和它的不足的部分,接下来我们制定一个详细的需求文档和开发计划,实现如下功能:

  1. 这是一个运行在桌面的AI助手程序,我们使用electron作为基础框架。
  2. 我们使用pi-agent-core、pi-ai、pi-coding-agent作为基础引擎。
  3. 我们兼容多种不同的模型,但我们从接入qwen模型开始。
  4. 我们通过tools和skills来执行任务。
  5. 我们通过主agent管理调度子agent完成任务。
  6. MVP我们目标完成对系统文件的管理和浏览器的操作、管理系统日历,调度系统其他程序,比如打开腾讯会议开始会议。

设计阶段是最重要的,可以反复在kiro中设计并调整设计,直到你认为一切都如你所想。在开始vibe coding前,我实际上讨论出了如下的设计文档,设计文档越详细,步骤越清晰,你的成功率越高,同时不要让AI一次做太多的事情,完成一部分,测试一部分,就和我们自己编程一样,逐步实现,逐步验证,最终得到你想要的结果。

  1. deepbot-mvp-plan.md -- 梳理全部的想法
  2. deepbot核心概念.md -- 关于技术栈,架构等等的一些关键技术实现思路
  3. design.md -- 需求设计文档
  4. design-review.md -- 需求设计优化
  5. architecture-overview.md -- 架构设计
  6. memory-system-design.md -- 记忆系统设计
  7. memory-system-post-mvp-enhancements.md -- 记忆系统优化设计
  8. prompt-system-design.md -- 提示词系统设计
  9. ui-design-system.md -- 用户体验设计
  10. skill-manager-design-priority-strategy.md -- skill管理设计
  11. browser-tool-implementation-plan.md -- 浏览器工具设计
  12. requirements.md -- 详细需求文档
  13. FINAL-CONFIRMATION.md -- 最终需求确认文档
  14. tasks.md -- 任务拆解,按照设计的优先级一步一步完成,每一步进行验证
  15. test-cases.md -- 测试用例

以上是我通过kiro最终形成的一系列设计文档,最终输出的是task.md,MVP的实现完全按照tasks.md中最终拆解的开发任务执行。test.cases.md我生成了很多个,用于不同阶段对开发功能进行测试验收。

截至目前的代码规模:总代码行数: 22,776 行,文件数量: 109 个(90 个 .ts + 19 个 .tsx)

图片

得到了Claude的“奉承”

开发的时候,大的功能先完成设计文档,拆分成任务一步一步执行,执行完成后验证功能,同时做代码审查(可以几个闭环功能完成后做代码review,避免形成“屎山”),确保AI“正确的”做事情,按照task执行完成后,再通过直接的vibe coding去迭代细节,修正错误。

除了项目的设计文档,我们可以再有一个agents.md来制定项目开发规范,在我的代码规范中,我会至少定义:

  1. 代码质量规范 -- 文件大小限制、统一工具和配置
  2. 后端开发规范 -- 模块设计规范、IPC通行规范、数据持久化规范
  3. 前端开发规范 -- 代码复用、组件设计、UI规范
  4. 数据库使用规范 -- 正确的创建数据库数据
  5. 禁止事项 -- 根据你的开发习惯定义不希望AI做的事情
  6. 经验总结 -- 开发过程中出现的问题,可以不断总结在这里,让AI学习
  7. 开发流程 -- 新功能那开发顺序、代码修改原则、测试规范

这个文件,完全根据适合自己的开发风格的方式来形成,没有对错,我自己在每个项目的时候很多内容也不相同,只要能让AI在开发过程中产出的代码让你觉得满意就好。

做了以上的工作,接下来就是反复的设计-开发-测试-code review的过程,逐渐完善项目。


能力验证

开发工作完成后,来做一些实际的案例。

任务一:发送新年祝福

春节了,批量的为公司同事发送祝福卡片和专属的祝福语,于是给DeepBot下达了如下指令:

读取桌面deepglint文件夹下的的list.txt文件,里面的每一行显示了员工姓名,邮箱地址,和工作内容;如果读取成功,依次每一行信息,使用桌面deepglint文件夹下的logo.png作为公司logo参考图,显示在画面底部,生成一张中国马年的春节祝福卡片,比例9:16,公司是计算机视觉的AI公司,设计上体现AI风格和马年主题,有深蓝色在画面上,祝福对象是读取出的员工名字(不显示工作内容),图像不要太多文字,简洁,生成绚丽的图画,生图的文件名不要有中文,生成以后显示预览图,同时使用send_qq_mail skill 作为附件发送到读取出的邮箱地址,邮件主题是格灵深瞳公司祝福该员工(称呼不加职位)新春快乐,内容你根据员工的工作内容,生成一个新年祝福,表达自己是agent,忙碌着为大家发送新年祝福,感谢大家的付出,新的一年需要全力以赴,达成目标(注意格式优美,提示附件是你的专属贺卡)

图片

每个同事都收到了邮件

任务二:生成训练数据

测试了基本的agent任务,接下来用它做一个和我们金融产品息息相关的工作——生成训练数据。

我们金融的主打产品是银行的安防与运营AI智能识别,但大家都知道,银行的数据是不能作为公开数据训练的,在25年百度大会上我分享过我们的银行benchmark建立的经历——造过1:1的银行,请过几百个临时演员,就为了能多拿到一些正样本的数据,但数量仍然有限。

在多模态大模型出来之后,我们开始尝试通过AI生成训练数据,从早期生成的四不像,到现在已经可以生成以假乱真的数据。比如:

图片

现在生成数据使用的是我们的算法训练平台,由相关同事一顿操作,效果也是非常好的,但现在通过DeepBot,是不是可以让这个过程自动化?甚至不需要平台操作了呢?自动化数据生成的过程大概分成3个阶段:

  1. 数据准备:由人类将原始的场景图放到文件夹A,agent自动将图片中的人物,物品等清空,保存到文件夹B。
  2. 数据生成:自动遍历文件夹B的处理过的只有场景的,使用同样的场景,按照提示词,生成训练需要的完整图,节约token,默认4宫格,1K分辨率(最多可以9宫格,4K分辨率),放入C文件夹。
  3. 数据处理:自动遍历C文件夹,将4宫格图片切分成单张图片,放入D文件夹,形成待标注的数据。

我们来做一个场景:假设我们需要识别进入到银行网点的“特殊人群”有多少,可能银行需要针对特殊人群做一些暖心服务。我们有两张网点的初始场景图,里面是我们唯一的两个正样本(其实整个画面也是AI生成的),没有我们要的足够的训练数据,但我们知道特殊人群就是坐轮椅的、杵拐杖的、可能还有搀扶的人,我们在场景中生成一些这样的数据,指令如下:

我们来做几个任务,生成一些训练用的图片:每隔10秒遍历桌面文件夹A中的所有图片,依次将图片作为参考图,生成新的图片,提示词为“去掉参考图的中人物,可移动的物品,线框,保持背景不变,将图片输出为16:9比例,1K分辨率”,生成图片后删除原图,将图片拷贝到桌面文件夹B。如果没有图片什么都不做。每隔10秒遍历桌面文件夹B中的所有图片,读取正确的文件名,依次将每张作为参考图,提示词如下“生成16:9比例的4宫格图片,这是银行网点大厅的场景,保留图片环境、场景不变,每个宫格中显示不同的“残疾人物”,随机杵着拐杖,坐着轮椅,旁边可能有人搀扶,在环境中移动,画面真实,有少量其他的客户”图片输入到C文件夹中,文件名随机确保不重复。每隔10秒遍历文件夹C中的所有图片,使用合适的skill将图片进行切分,将切分的图片复制到文件夹D,删除原图。

真实执行时间是5分多钟,任务3开始批量产生结果图。

执行一个小时,得到了528份数据:

图片图片

在此基础之上,我们继续又安排了两位“数据生产员工”,帮我们生产我们在海外项目的场景。该项目是在海关港口,同样我们是拿不到什么数据的,只能通过给我们的事例图片进行训练数据“膨胀”。其中两个需求,一是需要识别警犬,二是识别值勤人员。看一下生成的效果:

图片

第二个场景是牵着警犬巡逻的安保人员:

图片

对了,两个案例中用的skill, split_4_image和send_qq_mail也均是由DeepBot自己编写的。

DeepBot已经正式上岗成为“人力行政人员”帮人力部门编写发送日常公司邮件。以及入职研发部门成为“金融算法数据工程师”开始日夜不停的帮我们自动生成各个不同场景的训练数据。后续DeepBot将继续完成更多的工作。

DeepBot支持windows、mac、linux环境,它将持续进化,以期在未来帮助我们以及客户完成更多实际的工作。

Enjoy!

图片