各位朋友大家好啊,我是小纯,很久没写博客了。过去的一年(2025年)里,更多的还是通过视频的形式做一些项目内容的更新。但每年给大家拜年和做总结的习惯,不能丢下。
过去的这一年,是我工作最忙的一年,也是危机感最强的一年。一路上的跌跌撞撞,好在跟着团队一起,都扛过来了。也正是这样的成长,使得去年,我虽然没有把很多精力投在CGraph中,但回看,还是完成了很多我之前不敢想的功能和突破。
我们新增了6位开发者,发行了3个release版本,适配了4种不同的编程语言,支持了数不清的项目落地。让我一一到来。
坚持惯例,先上地址:https://github.com/ChunelFeng/CGraph
| pycgraph |
去年年初,我开始到处旅游。巧的是(真心没有刻意设计路线),正好去了长沙和重庆,见到了A神和守夜大佬。届时正好 nndeploy 团伙也在做 项目的python化,在他们的帮助和指导下,我开始重整 CGraph 的python版本。
我刚开始定的目标,是完成类似 CGraph-lite 的,可以通过python做dag调度,和参数传递的版本即可。可接下来的进度,远超了我的预期。
三月份的时候,我们发布了第一个可用的 pycgraph 版本,可以说此时,我们已经完成了预设的目标。
五月份,我们完成了对cpp版本全量功能 python化,并且提供了pip安装方式,便于用户操作。同时,还支持了 cpp 和 python 混合编程的模式,并且在B站发布了极简的使用教程(B站搜索 pycgraph 即可)。

不仅是python版本,社区的朋友们,还实现了包含 CSharp,Java,Go语言版本的简易版本,希望让不同语言的朋友都可以无缝的尝试起来。
最近 vibe coding 的概念大火,我们也会尝试去 Rust 和 Swift 等多种语言的版本,努力扩展一下自己的边界 和 CGraph 的项目簇。
| 本地保存 |
这几年,关于pipeline本地保存和加载的事情,我听了很多人提类似的需求。大概思路,都是说 设定一个 json or xml 的配置,用户通过修改配置,来控制 pipeline 的执行逻辑。
我一直不做这个事情,一方面是由于我们不想引入三方库,不太好做类似json格式的解析。另一方面我总觉得,我们自行设定字段,对用户来说也有一定的学习成本。比如,配置的key,是叫 node,还是叫 Node,还是叫 GNode ,这本身就是很难知会到用户。
而且,这一块如果我们下场做的话,就要搞全功能的,每个功能都要验证一遍。但用户很可能仅需要少量功能的配置(比如 node + param就够了),所以就一直没做。
直到后来有一天,我接触了 cpp 的反射实现。我发现,这种用户不可读存储方式,正好可以实现 struct(其实也就是 pipeline)的无痛存储。基于这个思路,我们完成了包含CGraph所有模块的 一键存储和加载,不需要用户做任何key字段的设定。
哈,之前一直是我用做色丶图的思路去优化手头工作的,这一波算是工作反哺开源了吧。形成一套 组合拳?哈哈。
| 支持apache项目 |
后来,我们玩大了!!!我们遇到了 apache的 HugeGraph 团队的童鞋,彼时他们正好需要做类似 skills 任务编排。调研了 LlamaIndex,LangGraph 等一众项目后,觉得不是臃肿,就是功能缺失。但初步上手pycgraph,轻量级、并行化和高性能的特点,非常match他们的需求。

对于这种重量级的用户,我们当然是尽全力支持。有一段时间,我们每周六晚上都固定开会交流进度,讨论遇到的问题和接下来的计划。有一个小插曲,9月底的时候,小雨同学发现了 pycgraph中有一处 region中无法继续插入 region的问题,导致他们无法构建复杂的深度dag结构,但cpp版本中,却不存在这个问题。而我记得,我之前在cpp版本中,刻意的去修复过类似问题啊!!!
经过定位后,我意识到整体注册链路的设计还是有点问题,索性就重新设计了element 的插入流程,彻底解决了这个问题——还记得十一假期的第一天早上,我因为这个事情,搞到了3点多。
现在,HugeGraph 项目已经从孵化器毕业,成为了 apache 顶级项目,也非常高兴和apache团队的童鞋一起度过了一阵有意思的时光。有重量级的项目背书,CGraph 的稳定性也是上了一个台阶。
不光是开源项目,我们还支持了 智驾的,无人机的,机器人的,AI的,互联网的大大小小至少100+公司,都丝滑落地。好几个团队给我们提过bugfix 和 optimize,非常感谢。有一个有意思的事情,身边有几个同事离开了,我惊讶的发现,他们去的地方都用过CGraph。还有朋友在老东家用CGraph,觉得挺顺手,跳槽后又把这一套推荐到了新公司——代码出现了人传人的现象,哈哈。
| 总结 |
2025年,虽然感觉在开源社区没有像前几年那么发力,但回头总结的时候,却发现,很多那些想做的功能,和不知道怎么做的困难,基本上都done了。跟之前不同,我们很少再做和同类产品的性能benchmark,更多的只跟之前的自己对比。不再盲目的追逐【更快】,而是更加关注【更稳】。这可能也是项目从少年气盛到中年沉稳自然而然的过度。

不变的是,我们持续为行业做贡献,给用户支持,认真听取用户反馈和建议。CGraph 还有很多问题,一些是我知道的,可能更多的是我还不知道的——不然过年那几天,我也不会一直待在家里bugfix——当前的 vibe coding 发现不了,更解决不了(当然了,所有开源的 or 公司的项目都会有问题,不影响大家选型和使用)。
而走到现在这一步,我也可能算是黔驴技穷了。像CGraph这种传统手艺的framework,总有一天会被AI取代,AI不仅可能快速生成一个 CGraph Pro,甚至可能快速生成一个 Flink Pro 或 pytorch Pro 。真到了那一天(哈,可能现在已经到了吧),我们现在做的所有事情都变得那么没有意义,没有价值。
等那一天回忆起来,我们这几年做的事情,唯一的意义和价值,可能就是我们真的真心实意,踏踏实实的做过吧。祝福大家和CGraph项目都能在新的时代,跟上节奏,找到新的增长点和爆点。
下图是个人微信,还有打赏码,亲,您介意扫一下么,哈哈。小纯在这里给大家比心了。

[2026.03.14 by Chunel]
推荐阅读
- 纯序员给你介绍图化框架的简单实现——执行逻辑
- 纯序员给你介绍图化框架的简单实现——循环逻辑
- 纯序员给你介绍图化框架的简单实现——参数传递
- 纯序员给你介绍图化框架的简单实现——条件判断
- 纯序员给你介绍图化框架的简单实现——面向切面
- 纯序员给你介绍图化框架的简单实现——函数注入
- 纯序员给你介绍图化框架的简单实现——消息机制
- 纯序员给你介绍图化框架的简单实现——事件触发
- 纯序员给你介绍图化框架的简单实现——超时机制
- 纯序员给你介绍图化框架的简单实现——线程池优化(一)
- 纯序员给你介绍图化框架的简单实现——线程池优化(二)
- 纯序员给你介绍图化框架的简单实现——线程池优化(三)
- 纯序员给你介绍图化框架的简单实现——线程池优化(四)
- 纯序员给你介绍图化框架的简单实现——线程池优化(五)
- 纯序员给你介绍图化框架的简单实现——线程池优化(六)
- 纯序员给你介绍图化框架的简单实现——性能优化(一)
- 纯序员给你介绍图化框架的简单实现——性能优化(二)
- 纯序员给你介绍图化框架的简单实现——距离计算
- CGraph 主打歌——《听码农的话》
- 聊聊我写CGraph的这一年
- 从零开始主导一款收录于awesome-cpp的项目,是一种怎样的体验?
- 炸裂!CGraph性能全面超越taskflow之后,作者却说他更想…
- 以图优图:CGraph中计算dag最大并发度思路总结
- 一文带你了解练习时长两年半的CGraph
- CGraph作者想知道,您是否需要一款eDAG调度框架
- 降边增效:CGraph中冗余边剪裁思路总结
- 最新码坛爽文:重生之我在国外写CGraph(python版本)
个人信息
- 微信: ChunelFeng
- 邮箱: chunel@foxmail.com
- 个人网站:www.chunel.cn
- github地址: https://github.com/ChunelFeng
