分类: 未分类

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

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

    1. 从焦虑开始

    严格来说,真正的改变从2月底开始。CPaaS结束后,通过和yang交流,对不闻不问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时的兴奋,其实并没有什么两样。从这个角度说,当年的热情并没有被岁月冲刷干净——这多少让自己感到一丝慰藉。

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

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

  • 像我这样的人

    像我这样的人

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

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

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

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

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

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

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

  • 学习的动力

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

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

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

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

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

  • 缅怀过去的时光

    缅怀过去的时光

    今天看到热搜,关于中岛美嘉失聪已经康复的消息。

    中岛美嘉,听到这个名字,莫名有一种感伤,因为我认识她的歌曲,并不是雪の華,而是来自于一段MD的情怀。

    当年刚入大学的时代,学生们最热衷的数码产品当属卡带walkman,我自然买不起Sony,但是也囊中羞涩的过买了一款爱华的walkman,也会经常光顾学校后门的磁带贩卖店,不过多半是盗版。有一天买了赵咏华的正版卡带,用同学的SONY超轻Walkman播放,那个感觉真的是震撼,让我终于知道什么才叫音质。

    而之后在另外一个发烧友的同学那里,知道了Sony的MD才是神话,堪比CD播放器,却更轻便,播放时间更长。于是拥有一个MD播放器就成了我的梦想。时间拨回大三,在日本工作的嫂子给我带回来一个MD播放器。我拿到手真的爱不释手,几个卡带都下载了满满的音乐。带到了大学,自然也是大家羡慕的对象。不过就在那个暑假,竟然这样的宝贝被偷了,然我伤心了一整个夏季。

    于是MD就成了我心里的莫名伤痛。到了日本工作,我的一个目标就是重新拥有一款MD。而就在这时,我越来越多的了解到Sony开发的最新的HI-MD技术,更是让这个技术登峰造极。一个MD盘有4G存储,可以放入几百首哥,在那个MP3已经风靡世界的时代,SONY的这个产品简直是无法超越的另类。

    查看源图像

    而最最令人深刻的,恰恰就是中岛美嘉为SONY HI-MD写的歌曲,每当听到如此震撼的靡靡之音,令人不禁想立即购买。

    查看源图像

    而这首广告歌曲以及中岛美嘉也深深地化为MD怨念的一环。

    当然HI-MD不便宜,即使是如此向往,依然经过了很多时间的考虑,终于在免税以及Yoshihama打折的诱惑下,入手了这台HI-MD。一切都很称心如意,只是自带卡带并没有这首歌曲,而且也因为中岛美嘉的缘故,发现她的许都很好听的歌曲,而且因为机缘巧合,才知道叫中岛的女歌手,另外一个大名鼎鼎的中岛美雪。

    而今天随着中岛美嘉的新闻,心中一直存在的那首歌,也越来越清晰。通过十几分钟层层搜索,终于知道了这首歌曲的名字“Legend”。同样的旋律,勾起的不仅是歌曲的回忆,更是那段MD情节,那段激情岁月!

    https://music.163.com/song?id=624822&userid=6319620423

  • Docker&AKS相关命令

    制作docker镜像

    docker build -t <your-name-for-the-image> –file <path-to-your-Dockerfile>  <path-to-project>

    例:docker build -t video-streaming –file Dockerfile .

    显示docker镜像

    docker image list

    docker镜像加载到容器

    docker run -d -p 3000:3000 video-streaming

    停止运行并删除容器

    docker kill <your-container-id>

    docker rm <your-container-id>

    彻底删除镜像

    docker rmi <your-image-id> –force

    利用compose批量挂载多个docker文件

    docker-compose up –build

    利用compose批量卸载多个docker文件

    docker-compose down

    docker-compose down && docker-compose up –build

    Docker镜像使用(阿里)

      “registry-mirrors”: [

        “https://j36f7zw9.mirror.aliyuncs.com

      ],

    Docker镜像进入

    $ sudo docker ps  

    $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  

    Docker日志

    docker logs [OPTIONS] CONTAINER

    Azure的ACR的命令

    建立镜像库

    $registry = New-AzContainerRegistry -ResourceGroupName “myResourceGroup” -Name “myContainerRegistry007” -EnableAdminUser -Sku Basic

    登陆远端镜像库

    docker login flixtubeinfony.azurecr.io –username InfonyReg –password Qm/umaR8cjhdg93Bc/ZXTxmHeixMCDdV

    打标签,并push到远端镜像库

    docker tag flixtubeinfony.azurecr.io/video-streaming:latest

    docker push flixtubeinfony.azurecr.io/video-streaming:latest

    Azure Storage

        environment:

          – PORT=80

          – STORAGE_ACCOUNT_NAME=infony

          – STORAGE_ACCESS_KEY=YoYVUiph3v0Lmp9aNk+1F68kuHLddixJTdM4ZGtyBhzhb0yMpZiCruPnMtQvARhnzA8d2ocWOLOTWEHhqS37MQ==

    Terraform相关命令

    Terraform初期化/计划/执行/销毁

    terraform init

    terraform plan

    terraform apply -auto-approve

    terraform destroy

    K8S相关命令

    设定AKS的config文件

    az aks get-versions –location westus –output table

    az aks get-credentials –resource-group flixtube –name flixtube

    执行完后,建立~/.kube/config

    获取token示例

    az ad sp create-for-rbac –role=”Contributor” –scopes=”/subscriptions/a495fe79-8307-4153-b6c3-f40b487cc8f8″

      “appId”: “751258fd-a1a4-43f7-87a9-8b5060f227ad”,

      “displayName”: “azure-cli-2021-08-02-06-22-04”,

      “name”: “751258fd-a1a4-43f7-87a9-8b5060f227ad”,

      “password”: “SuE_Hg150LsDt_KCp3cruu-1cGCo8mRC_E”,

      “tenant”: “be8bec0d-1095-4b1d-b59f-e7412eb0b2f6”

    安装K8S Dashboard

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml

    Kubectl获取服务list,POD,LOG

    kubectl get services

    kubectl get pods 

    kubectl logs video-streaming-d578d6fd8-ncpx8 -p