飞污熊博客

静下心来做一件事

Hermes Agent 是 Nous Research 今年 2 月底开源的 AI 智能体框架。

上线不到两个月,GitHub 星标冲到了三万多。社区里不少人把它称为 OpenClaw 上线以来,第一个真正意义上的竞争对手。

OpenClaw 的核心是一个 Gateway。网关守护进程,负责统一管理会话、路由消息、连接各种聊天平台。 你可以理解成一个调度中心,把所有聊天应用接到 AI Agent 上。龙虾解决的核心问题是:怎么把消息送到 Agent

Hermes 不太关心这个,它更在意的是:Agent 怎么变得越来越强。官方管这叫 closed learning loop,闭环学习循环。 整个框架围绕的就是一件事——让 Agent 在使用过程中自我进化。

当它完成一个复杂任务——通常涉及五次以上工具调用——它不是做完就算了。 它会把整个过程沉淀成一份结构化的技能文档,存成 Markdown 文件,放在 ~/.hermes/skills/ 目录下。 下次遇到类似任务?直接加载这份技能文档,不用从头解决。 更狠的是,这些技能在使用过程中会自我迭代。Agent 执行某个技能时发现了更好的方法,它会自动更新技能文档。不需要你手动维护。

阅读全文 »

记录一些自己在使用OpenClaw过程中的笔记。

定时任务(Cron)

想让龙虾每天早上给你推新闻?那就需要定时任务。 最简单的例子——每天早上 8 点发天气预报:

1
2
3
4
openclaw cron add --name "天气预报" --cron "0 8 * * *" \
--message "查询今天西安的天气,发送给我" \
--channel "feishu" \
--to "<chat_id>"
阅读全文 »

之前在Windows本地机器安装过OpenClaw,但是不能长期稳定运行,因此最后选择云主机。我选择的是腾讯云主机。配置如下

1
2
3
4
5
6
轻量应用服务器新购	
运算组件: 2核CPU、8GB内存 (锐驰型Linux-2核8G-80G-200Mbps峰值带宽)
系统盘: 80GB SSD云硬盘
峰值带宽: 200Mbps峰值带宽
地域: 中国香港
镜像: Ubuntu 24.04 LTS

购买地址:https://cloud.tencent.com/product/lighthouse

LLM模型购买的套餐MiniMax Max,后台使用模型为MiniMax-M2.7。

阅读全文 »

安装NodeJS后,配置国内源码。

1
2
3
npm config set strict-ssl false
npm config set registry https://registry.npmmirror.com
git config --global url."https://github.com/".insteadOf "ssh://git@github.com/"

还要开启代理,因为安装过程要访问Github。然后再输入如下命令安装:

1
npm install -g openclaw@latest

按理说,输入下面的命令等一个 2 分钟,你会看到下面这种提示:已经添加了 500 多包。

阅读全文 »

Antlr (ANother Tool for Language Recognition) 是一个强大的跨语言语法解析器,可以用来读取、处理、执行或翻译结构化文本或二进制文件。 它被广泛用来构建语言,工具和框架。。ANTLR 根据语法定义生成解析器,解析器可以构建和遍历解析树。

所有编程语言的语法,都可以用ANTLR来定义。ANTLR提供了大量的官方 grammar 示例, 包含了各种常见语言,比如Java、SQL、Javascript、PHP等等。

谁在使用

  • Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;
  • Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR;
  • Lex Machina将ANTLR用于分析法律文本;Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR;
  • NetBeans公司的IDE使用ANTLR来解析C++;
  • Hibernate对象-关系映射框架(ORM)使用ANTLR来处理HQL语言
  • 其他还有Oracle、Presto、Elasticsearch、Spark

官网地址:https://www.antlr.org

阅读全文 »

RabbitMQ任务调度默认是阻塞的,使用pika中的channel.start_consuming()的时候, 每次收到一条消息后会顺序执行完回调函数,发送ACK的确认消息,然后再执行下一条消息。 虽然说可同时接受多条消息,但是并不能同时处理这多条消息,那么需要自己在代码里面实现任务的并发调度。

在Python里面实现并发方式多种多样,有多线程、多进程、多协程方式,我演示下如何实现。

阅读全文 »

之前写过一篇 使用Ajax实现异步任务 的文章, 介绍了对于需要知道异步处理返回结果的情况,使用Ajax的轮训和长连接方式实现。 但是这两种方式都会生成大量的HTTP连接,对服务器资源是一种巨大的浪费, 这里正式介绍如果通过WebSocket + RabbitMQ来优雅的实现。

阅读全文 »

在教程第二篇里面我们学习了如何实现一个任务队列,异步方式去处理那些比较耗时的任务。 但是如果我们需要调用一个远程主机上面的方法,并且等待它的执行结果呢? 这种模式我们通常将它称为远程方法调用(RPC)。

这一篇我们将利用RabbitMQ来构建一个RPC服务,服务器上面有一个可返回斐波拉契数的函数。 客户端通过rpc调用来获取结果。

阅读全文 »

前面一篇通过使用direct类型的交换机代替fanout广播类型交换机, 实现了一个基于日志级别路由对应的消息的功能。

但是还是有它的局限性——它并不能根据多个条件来实现路由,只能通过完全匹配routing key, 灵活性不够。

比如我想实现仅仅对于那些error级别日志并且由kern生成的日志才记录到文件中。

阅读全文 »