博客

  • 给全员的一封信 (2026年上半年总结)

    2026年上半年就这样过去了。这几天我一直在回顾,这半年在AI方面自己到底积累了什么。
    今天想把我的感悟分享给大家,也希望听到大家的声音。

    1. 从焦虑开始

    严格来说,真正的改变从2月底开始。CPaaS结束后,通过和杨冬交流,对不闻不问3个月的AI进行CatchUp,那次交流让我第一次清醒地意识到——我在AI这件事上,已经落伍了。
    那种焦虑,成了这四个月的起点。

    2. 很多个”第一次”

    从那之后,我经历了很多第一次:
    第一次去理解Skills,安装OpenClaw和Hermes,认识Harness;
    第一次真正用上Claude,体验Claude Code、Codex、Antigravity、Qoder、Trae……
    第一次用Obsidian认真构建自己的副脑;
    第一次深入理解GraphRAG、Hybrid Search、RAGAS评估;
    第一次体验SubAgent,第一次花钱买Qoder包月,第一次参加企业培训……
    这些工具,有些只是匆匆过客,有些已经深入我的日常。比如现在每天上班的第一分钟,就是让我的”一骑绝尘”去登录VPN、总结昨天知识库的变化、收集最新外部资讯。

    3. 最大的改变:AI First Thinking

    回顾这四个月,对我影响最深的,不是某个工具,而是一种思维方式的转变——AI First Thinking。
    以前,当自己某方面能力不足,比如写报告总是思维混乱,第一反应是:去学,去掌握。
    现在,第一反应变成了:想想怎么驾驭一个AI Agent来弥补我的不足。
    这扇门一旦打开,世界就不一样了。

    4. 但门打开之后,才是真正的开始

    AI在0-shot时给你的惊喜,往往超出预期。但冷静下来,离真正可以直接交差,还有距离。——而且说实话,如果真的一句话就能交差,那离失业也就不远了。
    这个”还有距离”的空间,才是真正有意思的地方。这就是我说的”养”的过程。
    养,说到底,是你要有判断力。这个判断力以前靠读书、靠项目积累;现在,你可以在和AI的讨论与知识搜索中快速迭代,成长的速度完全不同。
    但是,这扇门打开之后,请不要走向另一条死路——一心寻找一个万能的Super AI,幻想只需说一句话、事情就结束了。
    而是沉下心来,用AI真正成就一个新的自己。与进步中的AI一起学习,站在AI肩膀上的自己,自己应该比以前更强,更全面。

    5.最后说一件让我反思的事

    龙虾(OpenClaw),我是4月才装的,而那时它早已火遍半边天。
    为什么那么晚?我当时下意识地觉得:这是不懂技术的业务人员在用的东西,我一个技术人员,没必要凑这个热闹。
    说到底,是我自己的那扇门还没真正打开。我可以用Cursor,可以学MCP,可以做AI提案,但对AI真正平权这件事,我选择性地忽视了。
    现在想来,这是一种傲慢,也是一种惰性。

    我们身处对日软件外包这个AI冲击的重灾区,没有人可以装睡,也没有人可以安然无恙。
    唯一的出路,就是打开那扇门。
    门打开之后,才能真正进入人与AI的相互学习,才能养出属于自己的AI伙伴,无论是工作,学习,生活,还是育儿。
    而这种”养”的文化一旦在我们团队中形成,将成为我们区别于其他公司最重要的软实力之一。

    希望大家也来分享你们的想法。

  • 重生

    本来随着虚拟主机到期,而之前的博客又早已支离破碎,我已经下定决心,就此结束。

    可今天,无意间翻到了寻找好久都没找到的旧WordPress备份。有了备份,其实也不一定能恢复一切——之前之所以迟迟没有动手,就是因为域名换过之后,大量链接早已错乱。但有一点你别忘了,这可是AI时代。

    于是,我打开Claude Code,把旧的备份和今年6月的最新备份一起指向它,然后写下了这样一段提示词:

    这个文件夹是我的博客备份。我从2010年开始写博客,中间因为服务器多次变动,做过好几次迁移,导致部分文章和图片对不上。两个备份里,一个是infony.com.cn的压缩文件,当时换域名和插件折腾了一轮,很多旧文章已经不太正常,但勉强备份下来放到了新服务器上,又用了几年。今年我彻底关掉了服务器,也用migrate工具导出了.wpress文件。所以,infony.com.cn.zip可能已经有些破损了。我希望先在本地搭建一个WordPress(最好能一键部署,内存和硬盘有限,能不用Docker就不用,实在不行也只能用),把两个备份合并起来,拼成一个完整的博客。有些旧文章需要特定插件才能正常显示,比如我以前喜欢用Slide插件,把PPT切成多张图片在网页上展示。如果插件已经过时了,就直接把图片展示出来就好,不用那些花哨功能,关键是——数据要回来。

    然后,就看到Claude Code挥汗如雨地干了起来。下班前,它居然把我的整个WordPress恢复得很不错了。

    当我翻到早年自己写的那些博客时,那种扑面而来的怀旧感让我愣了很久。回到家,我坐在那儿想了想——还是把这个网站重新搭起来吧。

    而且,竟然发现淘宝可以代充。原本续费要800块才能拿到“2+3年”的虚拟主机,我最后只花了250,就搞定了“5+5年”的新购。

    于是,下一个十年,有了着落。

    生活大概就是这样吧。你可能忘记了很多过去,可当你重新翻阅那些文字的时候,你会清晰地感觉到——其实你的心,一直在原点兜兜转转。

    下一个十年,也许我已经苍老了许多,但我相信,那颗心依然如2010年的那个夏天一样,年轻着。

  • 可能是最后一篇blog

    今天走在路上,忽然意识到,入行已经二十多年了。

    想起当年为了找工作,自己摸索着学Flash、Dreamweaver、Delphi的那些日子,心里不由得有些怅然若失。

    但转念一想,如今把AI慢慢用起来、一点点搭出Hermes Agent的感觉,和当年在那台赛扬机器上跑起JBuilder时的兴奋,其实并没有什么两样。从这个角度说,当年的热情并没有被岁月冲刷干净——这多少让自己感到一丝慰藉。

    下一个二十年会是什么样,我不知道。就像这个博客,有过辉煌,也有过落寞。今天收到服务器到期的通知,想续费,又有些犹豫。不知道该延续下去,还是就此放手。

    生命本就是这样起起伏伏。希望眼前的困难渐渐远去,也希望自己能一直朝着心里那个方向,继续走下去。

  • 像我这样的人

    像我这样的人

    听到毛不易的《像我这样的人》,让人蓦然生出一种共鸣与失落。

    经历了这段时间的艰难时刻,以及即将到来的更艰难的日子,我不知道自己还能坚持多久,也不知道下一步该走向哪里。仿佛事业走进了死胡同,举步维艰。

    其实,当初离开外包行业,是不愿意做仓库里的最后一只老鼠,也带着一点放低姿态去体验另一种生活的优越感。而如今再次回到这个行业,似乎又觉得,经过历练,自己理应超越曾经的同事。可五年回头再看,我却不知道还能用什么去搪塞自己当初的期待与理想。

    我常常安慰自己,现在或许已经是最好的状态。至少我获得了自由,有勇气选择自己的路。无论是事业上的收获,还是家庭的状况,都算不错——至少我们还健康,还在彼此扶持。

    自我安慰,当然能让人平静一阵子,但背后翻涌的现实困境,依然令人窒息。可无论未来如何,哪怕只有一线机会,又怎能在当下选择躺平?在这样的矛盾与冲突之中,我不知道自己的选择是否正确,而焦虑,则悄然写在一日复一日增长的白发里。

    很多时候,我都会对自己说:回头看看,那些曾经以为过不去的困境,不也都走过来了么?我知道这一次也一定能过去,因为我相信,自己身上的一些能力是无法被抹去的。至于迷惘的未来,也只能用这样的信念让自己继续坚强。

    愿有一天,拨云见日。回首往事时,只需轻声说一句:“像我这样的人,原来如此优秀。”

  • 3个月的项目胜利结束

    3个月的项目胜利结束

    随着 8 月的结束,数据分析平台的开发也进入了最后的收尾阶段。
    回顾整个历程:2 月提出构想,4 月正式立项,6 月启动开发,6 月底到 7 月初经历了最焦灼的不安,7 月底逐渐趋于稳定,8 月完成完善与优化,并协助客户搭建 Staging 环境。
    虽然整个开发周期只有短短三个月,却充满起伏与挑战。尤其在 6 月下旬时,甚至一度怀疑能否按时交付。但如今回过头来看,这段经历让我对大数据算是有了真正的入门理解,也更清晰地看到了那些大厂的数据平台究竟在做什么。

    平台本质:不是“造轮子”,而是“搭桥梁”

    严格来说,我们并没有重新发明一个“大数据处理平台”,而是为它构建了一个工具平台
    毕竟,经过多年发展,大数据的核心处理框架早已成熟:

    • Spark:分布式计算的事实标准
    • Airflow:任务调度的事实标准
    • Jupyter:数据科学的事实标准

    这些能力毋庸置疑。但真正的难点在于——如何把它们融合起来,尤其是如何动态管理 Spark 集群资源的生命周期。这部分并不像想象中那么简单。
    好在团队的小伙伴们十分给力,一个又一个障碍被不断识别并解决,最终让系统跑通。

    技术之外:用户体验才是核心

    这个项目让我体会到:技术并不是产品的核心,用户体验才是。
    三个月内,我们依靠 Databricks 的开源生态与其他 OSS 拼凑出了一个“仿制版 Databricks”。站在开源的肩膀上,似乎一度觉得我们离世界顶尖产品不再遥远。
    但实际使用下来,差距依然巨大。尤其在用户体验上,我们与 Databricks 根本不在同一个量级。

    比如最初,我们想实现类似 Databricks 的 Job Schedule/Workflow,让用户像搭积木一样快速组合资源,轻松完成任务。但最终不得不妥协,只能用 Airflow DAG 的编程方式勉强支撑复杂流程,留下一块“遮羞布”。
    再比如多 OSS 的整合,我们最多也只能通过用户表同步来实现单点登录,让多个 UI 勉强可用,却无法真正做到统一界面下的完整管理。

    OSS 的拼接与未来的期待

    所以,从某种意义上说,我们做出来的只是一个碎片化、缺乏灵魂的产品。它能工作,但不优雅。
    尽管如此,我依然对接下来的结果抱有期待:客户将在未来几个月对比我们的 OSS 方案与 Databricks 的成熟产品。如果我们能胜出,不仅能大幅降低成本,还能让客户拥有自己的知识产权。

    这将是属于我们的价值。

    希望在不远的将来,能迎来好消息。。。

  • Big Data Analyzer Platform

    最近,我对大数据处理的整体流程有了新的理解。过去总觉得大数据由于其非结构化、异构的特点,清洗、抽取、处理等环节总显得混乱且无从下手。

    而这次项目的目标,是挑战 Databricks。所谓“挑战”,其实是尝试用一系列开源工具,拼装出一个开源版本的 Databricks。因此,我们采用了 Spark 为核心计算引擎,能复用 Databricks 开源组件的尽量复用,没有的就找对应的替代方案。

    最终确定的技术栈如下:

    • Spark:Apache Spark(开源版本)
    • Unity Catalog:UC 的开源替代方案
    • Delta Lake:Delta Lake(开源版本)
    • Notebook:JupyterHub / Jupyter Notebook
    • Workflows:Apache Airflow
    • MLflow:MLflow(开源版本)

    虽然组件选型已经明确,但真正将这些“积木”拼装在一起远比想象中复杂(这让我理解了为什么 AWS 的大数据工具要叫 “Glue”)。

    我们面临两个核心挑战:

    多个开源组件的集成(OSS整合)

    挑战之一是如何统一认证体系,另一个则是如何在多个组件之间实现数据的通用传递。

    我们采用 OAuth 作为统一认证方案,将本系统与 Jupyter、UC、Airflow 串联了起来,包括用户信息的同步、服务之间的 token 传递等机制。同时,组件间的数据共享通过 Kubernetes 的 PVC(基于 EFS)实现,比如 Jupyter 的 Notebook、Airflow 的 DAG、Spark 的认证文件等,都通过共享存储打通。

    Spark 集群资源的动态调度(动态 Spark 资源)

    我们结合了 Spark on Kubernetes 的两种运行模式:

    • Client 模式:主要用于 Jupyter Notebook 的交互式开发,Spark Driver 运行在 Jupyter 的 Pod 中,按需启动和释放资源。
    • Cluster 模式(通过 Spark Operator):主要用于 Airflow 的批处理任务(如 PySpark DAG),Driver 和 Executor 全部托管在 K8s 上,实现更彻底的资源自动化管理。

    通过认证整合和共享文件系统的精心设计,目前各个开源组件已经可以较为顺畅地协同工作。虽然整体能力还无法与原生 Databricks 相比,但一个 OSS 版本的 Databricks 雏形已经初具规模。

    如果 PoC 阶段能够获得正面的用户反馈,或许真的可以推动我们正式启动一个更完整、更强健的开源替代方案。

  • 学习的动力

    在许多时间维度上,坚持往往能通向成功。这算不上什么诀窍,可未必人人都能参透 —— 只因坚持本身就不是件易事。

    所以,每一份坚持都需要合理的动机,支撑着自己坚信所做之事的价值。

    身处 IT 行业,持续学习更是必不可少。每次开启一段新的学习旅程,我总会先找到一个明确的动机。

    记得 2020 年重拾 Duolingo 时,是因为在苏宁,日语派不上用场,便想着把英语好好拾掇拾掇。没想到这一坚持就到了现在,已经连续打卡 1973 天。其实,当坚持成为习惯,便会不知不觉融入生活,成为日常的一部分。

    重新回归对日外包行业,一方面要重拾语言、管理与沟通能力,但更重要的是恶补已然脱节的技术。虽说日本 IT 整体比国内落后,但有两个原因让我深感自己已然落伍:一是国内 IT 企业分工过细,身为 PM,很难真正融入技术研发,甚至还会遭人轻视 —— 尽管我自认是开发能力最强的 PM;二是随着年龄增长,无论自身动力还是外部环境,都在不断暗示自己难以在技术上更进一步。于是,我开始学习 Kubernetes、Azure、AWS、微服务、5G、AI、大数据等等。我不确定这股动力确切是什么 —— 是项目所需,还是对未知的恐惧?但无论源于何处,这动力对我都很管用。在不断学习中,我收获了满足感,也感到十分愉悦。

    记得有多少个周末,一旦投入云环境搭建、钻研某项技术,时间便悄悄溜走,转眼就过了午夜两点。但我依然乐此不疲,在技术的道路上不断前行,让我感到踏实。

    但知识终究是学不尽的,自身仍有诸多力所不逮之处。每遇这些知识盲点,反倒成了驱动我继续学习的动力。说来有趣,为学习寻找动力,学得越多,越能发现未知的天地,而这未知,又成了下一次学习的动力。

    我想,永不停歇,才是人生的主旋律。愿自己能如这博客一般,迎着风一直奔跑下去。

  • 人生的跌宕

    很久没有来到这块天地,因为一直无法说服自己,满意现在的境况,所以总是抗拒着在这里留下只言片语,甚至是一些技术的心得,亦是如此。

    但其实很多事情虽没有变得更好,至少也没有变得更差,只是自己在和自己较劲。理想中的事情没有发生,固然是一个方面,更多的是对曾经的放弃的,却在不断起色对自己内心的折磨。就好比,今天突然说比特币已经突破8万,可是自己却在6万6卖尽。但明明自己就投入了几千RMB,即使拥有,又有什么改变。

    当然林林总总不会只是这么一点,而是积累,和自己的内心难以做到“不以物喜,不以己悲”的境界。这部分的排解已然不是自己轻易能调整的,所以留下这篇小文,让客观的冷静去惊醒那片懦弱的不甘心。

    在新的环境已然快三年半,这三载半的光阴,似乎让人觉得如同一片浮萍,抓住了,却又被急流吹散。第一年,就在8月的日子,搭上了COM的慢车,至少有了安身立命的小天地,而第二年初原项目的分崩离析,让我走到了第二年的10月,一个突如其来的5G世界,想想10多年前,自己拿着HSPA的经历出去求职碰壁,没想到又回到电信领域,还是这么雄心壮志。而随着次年的地缘政治,一个新兴的事业就这样烟消云散。于是来到了第三年的10月,一个BPMS的系统,让我重新回到传统管理系统的怀抱,满心认为这是一场精确的降维打击,结果在第四年的7月,一切皆回到原点,COM结束了,5G磕磕碰碰已然远离着,而BPMS还在漩涡中若即若离。

    于是生活仿佛开始冷寂,但并非如此。不是么,现在的超分散,没有5G的TNGF,我们不会能持续两年,也不会有现在衍生的问卷LLM,RAN LLM等等。

    所以,所有的努力都不是白费,都不是无结果,前面的因,孕育了现在的果。而我现在在做什么呢,自怨自艾下去么,现在的因是将来的果,请自己珍重!

  • 一个孩子的仰卧起坐APP

    上个学期,孩子的体育成绩不甚理想,其中就包括仰卧起坐,决心在暑期好好锻炼一番。

    经过几次训练,发现孩子的挑战性不强,于是考虑制作一个APP来把孩子每次训练的结果记录下,激励他不断挑战。

    APP需求

    • 手机上可以容易使用,但是无需安装,也无需服务器
    • 能够记录每次成绩,包括一次训练中,时间段成绩可做对比
    • 显示最高成绩

    根据需求,我选择以下技术作为技术栈

    1. PWA(https://docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/)
      通过PWA,虽然是网站,却能像APP一样安装,方便使用
    2. Simple.css (https://simplecss.org/demo)
      这次就想简单做一个单页面网站,所以选择一个最最简单的基础CSS即可。SimpleCSS提供了一些基础如Label,Table等控件
    3. jQuery(https://jquery.com/)
      这次JS使用较多,但是又不想用vue,elementUI这套复杂架构。于是回归jQuery
    4. TaffyDB(https://taffydb.com/)
      JS的DB其实很多,选择它仅仅是因为我按照Simple来检索,它是第一个。基础的功能对我足够了。
    5. Chart.js (https://www.chartjs.org/)
      和TaffyDB一样,JS的Chart也是很多的。这个样式还算漂亮,所以就选择它了。
    6. Pantry(https://getpantry.cloud/)
      本来就想做一个单机缓存的website,但是制作当中发现用一些免费的JSON保存服务器也不错,而且能实现DB服务器端存储,所以就挑选了一个。本来想找一个国内的,没有找到,就找了一个使用最简单(也是安全最低的)加拿大的产品。延迟这些都能接受。
    7. gitee(https://gitee.com/) 和gitee pages
      我承认,我最开始用的是github。可是实在忍受不了网络一会儿就被墙了,太难了。有一次修改版本呢,让孩子在垫子上躺了30分钟。
      gitee也不错,相比Github,source管理没啥区别。静态网页存储服务Page,一个是需要实名认证,其次是不像Github可以自动反映最新提交,需要手动执行更新。

    经过最初两天的编程,以及后面几周周末的零星修改。程序就完成了,
    程序地址:https://gitee.com/infony/situp
    页面地址:https://infony.gitee.io/situp
    界面为:


  • 未来的日子

    未来的日子

    其实每次做一个选择,其实就会用掉一次尝试的机会。

    你不能确定的选择是否正确,但是一旦选择,你就没有机会再去思考所得与所失,你会全身心投入到责任与奋斗的哲学中去而忘乎所以。

    现在我就是这样一个状态,既然在一年前做了重新适配职业的选择,就没有患得患失的理由。而过去的一个季度,也是这几年最为忙碌的时光,不能说是有成就感的,但至少是充实的。这也许足够了,但也许还不够。足够的是,时间并没有白白的逝去,而不够的,是并没有向初心所往更近一步。

    所以,自己常常想,如果能够慢下来,有更多的自主时间,去选择,去培育,也许是一个更好的自己。于是时间拨回到了现在,无论是主观的愿望,还是客观的使然,总之已经基本回归了忙碌时的期待。可是真的就可以总结过去,夯实未来么。实际上,真没有那么简单,我们的行业注定了我们无法放慢脚步,一旦工作松懈了,各种问题就应运而生,让你应接不暇。

    这个平衡不容易,这也是在3年前放弃了,1年前又重新走回的徘徊和反复。但我知道,无论是忙碌无暇顾及梦想,抑或是有时间憧憬梦想却又担心公司财务,其实都需要一个强大坚定的内心。在任何时候都应该去乐观积极,因为反之,由于这个平衡与矛盾,无论在什么场景,我也能找到让人灰心的理由:忙的时候,赚到却丢失没想;闲的时候,又要为明天的饭碗而烦闷。

    何必这样想呢。一切都有过去的一刻,每当你回想的时候,希望目前的种种都是人生的熠熠闪光。

    相信自己,将会迎来一个五彩斑斓的未来。