惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Security Latest
Security Latest
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
H
Help Net Security
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
博客园_首页
S
Securelist
S
Schneier on Security
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
V
Visual Studio Blog
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
量子位
L
Lohrmann on Cybersecurity
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
罗磊的独立博客
博客园 - 司徒正美
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
小众软件
小众软件
Project Zero
Project Zero

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
自己使用C++开发的仿OpenClaw、Hermes智能体工具
一只会铲史的猫 · 2026-05-22 · via 博客园_首页

使用C++开发的原因是我只会C/C++,虽然熟悉一点Python,但只能勉强上手,对于开发复杂度较高的项目,就会捉襟见肘。相较于Python、TypeScript等脚本语言,使用C++开发的难度比较大,由于缺少第三方库的原因,很多看似简单的功能都要亲自实现,哪怕是json解析。
比如一开始就遇到的通信问题,也就是大模型的流式(SSE)输出,尤其是这种输出是以chunk的方式到来。对于Python来说,通信这块可能连问题都算不上,因为只需要导入OpenAI库,就能解决所有的通信问题。
对于C++来说,现有的HTTP API显然无法满足这种要求,因此实现一个基于HTTP协议的、稳定的、健壮的、异步的通信就只能亲自动手实现了。这就意味要用原始socket实现一边接收数据,一边组装数据,一边解析数据,一遍展现数据。

实际上即使你完成了上述通信工作,也仅仅是个开始,接下来还有更多的来自业务层的问题等待你去解决:

1、通信过程中用户取消了会话;
2、多轮会话中用户取消了当前会话;
3、如何处理工具调用超时或异常,比如始终无法与一个远程MCP服务建立通信,或者外部工具一直不返回结果;
4、如何处理多工具调用:是多线程并发处理还是一个一个处理?如果其中一个异常该如何解决?
5、工具调用过程中,如果用户取消会话如何处理?如何优雅的解决掉正在执行中的工具调用?
6、工具返回数据过大如何处理,比如通过工具读取文件内容?
7、多轮会话如何防止上下文窗口爆炸?
8、多轮会话如何实现实时持久化,从而保证用户取消或程序异常退出时能够恢复当前会话?
...

上述这些不是异常,而是业务层实实在在会遇到的问题,一旦处理不好则会导致灾难性的后果,除非你只是写一个demo。

即使处理好上述工作也仅仅是让你的Agent实现了基本的chat功能,如何让Agent拥有“记忆”和“自我进化”的能力才是目前主流Agent的发展趋势,这也就是OpenClaw和Hermes流行的原因。
上述基础开发工作已经让我精疲力竭,“记忆”和“自我进化”只能在理解上述两个Agent的基础上去尽可能的实现,功能不是最重要的,设计思想才是最重要的
没苦硬吃的好处就是可以完全理解大模型和Agent之间的工作原理,以及可能会遇到的各种坑。下面介绍一下AIAgent特点,先放一段视频:
Agent基本演示之多轮会话

一、软件开发特点

  • 完全使用C++开发,除Openssl和Sqlite外未使用任何第三方库,自主实现如下功能:
    异步网络通信、HTTP会话、SSE流式数据解析、多轮会话管理、工具调用及MCP管理、长期记忆管理、技能沉淀等功能;
  • 纯绿色软件,除依赖库外不到800K,无需安装,拷贝即可使用,
    C++开发难点也是它的优点,就是没有部署依赖,既不需要安装Python也不用安装Node.js,以及对应庞杂的依赖库。

下载地址:http://www.softlee.cn/AIAgent.zip
使用前先设置DeepSeek的API Key,请前往 DeepSeek官网申请API Key
PS:zip包中AIAgent.exe是主执行程序,AIMemory.exe为记忆管理工具,AIAgent会调用AIMemory进行记忆和技能沉淀。

二、支持上下文管理和长期记忆

  • 支持长期记忆管理:使用文件、数据库、向量数据库三种存储方式实现不同层次的记忆保存

    1.1 文件:全量保存每轮会话的全部内容,用于历史会话恢复以及后续数据挖掘(持续优化记忆功能);
    1.2 数据库:仅保存每轮会话问答,不保存工具调用结果,方便用户按关键字查找历史会话消息;
    多轮会话可能存在大量的“非显示”工具调用内容,用户一般无法感知,这些工具调用结果可能会比较大,比如文件读取,
    这种非显示的工具调用结果只是中间数据,不是最终结论,用户其实无需关心。
    1.3 向量库:保存重要会话的“压缩”摘要,实现语义级搜索,方便Agent进行历史消息查找;

  • 支持记忆沉淀和跨会话记忆恢复,围绕用户(人)和工作(事)两个维度沉淀长期记忆。
    1.1、用户相关记忆包括:用户的身份、行事风格、工作习惯、行为偏好等;
    1.2、工作相关记忆包括:用户使用的开发工具、语言、环境等,可能从事的工作领域和常用的办公软件等;

  • 支持可控上下文管理
    1.1、支持滑动上文窗口管理,可手动配置窗口大小;
    1.2、支持上下文长度报警,当上下文超过手动设定的阀值触发报警;

  • 长期记忆的提取和沉淀时机。采用如下两种方式:
    1.1、一种是LLM根据当前会话内容自主判断是否具备沉淀价值,如果具备则触发记忆沉淀,即调用子Agent(AIMemory.exe)进行记忆提取和沉淀;
    1.2、另一种是用户手动进行记忆沉淀,手动也分两种方式:一种运行时沉淀,用户在对话过程中明确要求沉淀,比如告诉LLM帮我记住此次会话或其它类似表达方式。另一种是事后沉淀,用户可通过查看历史消息并对有价值的对话进行记忆沉淀。
    通过上述两种方式,可以确保记忆不被“遗忘”。如果Agent没有及时沉淀记忆,用户还可以进行“补救”操作。

    为何这样设计?
    Agent在记忆方面是“慢热”的,需要长期积累,也就是说他和用户之间有一个熟悉过程。在此过程中就不可避免的会出现LLM觉得无需沉淀,但用户觉得可以沉淀的情况。通常LLM会被Prompt严格限制,因此更加趋于“保守”
    通常用户在编写Prompt时会要求Agent沉淀最重要的、具有长期价值的会话,而不是闲聊。无论你如何设计Prompt都很难在早期避免这种情况,
    如果Prompt写的过于宽松,就会导致记忆过载,一旦记忆过载或被“污染”,则记忆本身的价值就失去了。只有用多了,Agent才能知道哪些内容对用户是有价值的,用户关心的是什么,这就是小龙虾为何要用“养”这个字,Hermes为何越用越懂你的原因。

记忆这块不存在最好的解决方案,只有最合适的解决方案,不同业务模式和流程对应的记忆侧重点可能是完全不同的。
比如面向编程业务的Claude Code,此时不仅要记住过往的重点内容,还要记忆当前的工作状态,即最近用户操作的文件、函数、错误日志、解决方案等。如果你面临的业务是电商,显然无法套用Claude Code的记忆管理方式。
正因如此原封不动的保留原始会话的内容非常重要和关键,因为记忆的提取、归纳和召回是可以在后续不断改进和优化的,只要原始对话数据存在,这种优化改进才能在以后得以实现。整个Agent的工作其实大部分就是围绕“记忆”的保存、提取和召回开展的。

图一、历史会话消息,以文件形式保存,方便Agent恢复会话

AIAgent_会话记录

图二、会话详情

AIAgent_对话详情

图三、 历史会话消息,保存于Sqlite数据库,方便用户查找

AIAgent_数据库存储

三、支持技能自主沉淀;

  • 内置CLI功能(支持cmd和powershell)和文件读写操作;
  • Agent通过上述内置功能自主实现skill的沉淀;

个人认为,CLI对于Agent而言就是最好、最合适的工具! 如果不加限制的使用CLI,你的Agent一定可以做出很多你想不到的事情。
理论上Agent可以通过CLI操作所有工具,甚至可以调用CLI安装它所需要的工具,并进行学习使用,从而完成自主学习
很多CLI工具,其命令行参数非常庞大,一般用户很难记住,但对于大模型来说则完全不是问题。
对于大模型,Python是其最熟悉的语言,甚至比大部分开发人员更加熟悉,起码编写后不会出现语法错误。
正因如此,开放文件的读写就显得非常重要,对于复杂的任务,Agent完全可以通过文件操作写一段Python脚本,并将其执行,从而实现最终的目的。
在此过程中skill的积累是自然而然的,你只需要让Agent知道需要进行Skill积累这件事就行了,它通常比你还了解这些“技能”以及使用过程中踩过的坑,因此它会比你亲自管理这些技能要好很多。

基于上述原因,内置CLI和文件读写操作就非常有必要,它几乎是一个通用Agent的标配

四、其它特色功能

  • 支持远程MCP功能管理,按需启动远程工具;
  • 提供MCP的ToolCall编辑功能;
  • 支持OpenAI和Anthropic两种API数据格式;
  • 支持微信接入(考虑到微信几乎是国民必备,优先实现微信接入,用C++开发有难度,实在无力接入太多);
  • 支持多轮会话中的查找:按词查找和按会话查找;

远程MCP管理

AIAgent_MCP管理

微信ClawBot接入会话

AIAgent_weixin

多轮会话内容查找

AIAgent_chat_search