跬步 On Coding

我的2025

今天是2026年的第一个周日,窗外是珠海特有的温润海风。这一年,我从深圳到珠海,从一家迷茫的小公司到了老牌的金山办公。如果说2024年是本命年的阵痛,那么2025年对我来说,更像是在这激荡的技术浪潮中,努力寻找平衡与自洽的一年。

依然按照惯例,絮絮叨叨地复盘下我的2025吧。

行云创新:及时止损的教训

2025年的开头,我还在行云创新做云原生产品。当时做的是基于 K8s 的在线云 IDE,技术方案其实挺有意思:用 K8s 调度启动在线编辑器,用 code-server 和 selkies 暴露桌面 IDE,甚至还研究了 Docker Windows 容器。为了解决文件同步,我设计了 Sidecar 模式的文件服务,负责上传变更、初始化 git 目录这些活儿。

技术上虽然有成就感,但职场环境却让我第一次深刻体会到“庙小妖风大”。

先是内部莫名其妙的同事纠纷,随后是让人窒息的“服从性测试”。有一次我下班刚到家,就被领导一个电话叫回去值守,其实压根不是我的问题。最崩坏的是关于技术方向的讨论,领导要求我周末加班,把已经验证通过的方案改回到之前被废弃的死路上。我坚持了专业意见,并坦言周末搞不定,结果就是失去了所谓的“信任”。

AI Agent 工程化实践:从 Prompt 到 Context 的思维转变

最近在新公司这边,大部分精力都耗在了 AI Agent 的落地应用上。大家都在谈 Agent,网上的 Demo 也是满天飞,但当你真正把这玩意儿往生产环境搬的时候,会发现完全是两码事。

简单的说,AI Agent 的核心逻辑其实并不复杂,本质上就是一个基于 ReAct(Reasoning and Acting)范式的工程结构,程序在一个死循环里不断地调用 LLM 的 API,让它根据当前的观测去决策下一步是思考还是行动。

起初我也觉得这就跟写个脚本差不多,但在实际调试过程中,我发现让 Agent “跑通”不难,但要让它“跑好”、“省钱”且“不犯蠢”,这里面全是工程细节。我也复盘了一下这段时间的踩坑经历,总结了一些在工程实践中的“巧思”。

系统性思维的陷阱:从“完美方案”到“有效落地”

我做程序员已经 10 多年了。

回想刚入行那会儿,我的思维模式很简单:产品经理提什么,我就做什么。那时候追求的是“短平快”,像个执行指令的机器,代码写得快就是牛。

后来加入了腾讯,随着职级的提升,负责的系统越来越复杂,我开始意识到:写代码只是冰山一角,做方案才是真正的考验。

所谓的“系统性思维”,一度让我受益匪浅,但最近我发现,如果一旦陷入对“完美”的执念,系统性思维反而会成为阻碍项目落地的最大陷阱。今天想和大家聊聊,如何在架构设计、风险控制和实际落地之间找到那个微妙的平衡点。

pingsix-ingress-controller启动

https://github.com/zhu327/pingsix

PingSIX 自从上次重构之后, 我一直在考虑如何扩展这个项目的功能与使用场景, 有2个方向可以考虑:

  1. 支持proxy-wasm插件
  2. 实现pingsix-ingress-controller

在调研了proxy-wasm的相关功能后, 结论是由于pingora面向的场景是CDN的反向代理, 所以没有考虑过方便的修改请求体与响应体, 这就造成很难基于pingora来实现proxy-wasm的ABI, 如果我要自己定义一个wasm的接口协议, 没法复用社区现有的proxy-wasm插件, 那就没必要了, 不如直接写Rust的插件. 相关参考内容:

在放弃了proxy-wasm的支持后, 我开始调研如何实现pingsix-ingress-controller, 由于pingsix的的资源定义是参考apisix来实现的, 所以就直接参考apisix-ingress-controller来实现我们自己的pingsix-ingress-controller.

编写可维护的代码 -- 面向AI编程

这是最近在小组内做的一次技术分享的文字稿,总体来说我觉得没有表达出特别硬核的内容,我本身也希望说这次分享不用讲的太硬核,在分享的开头还设计了互动环节,分享的过程中也尝试加入一些问答来互动,奈何现公司的技术氛围确实比较沉闷,似乎同事都比较I,好在最后的问答环节有几个比较好的问题,总体来说还算是一次成功的分享吧,希望自己能输出更多的好内容。

P1: 我们写的代码是写给谁看的?

  • (🎤 互动环节): “大家有没有过接手一个项目时,看到的第一感觉是:我该从哪下手?结果花了三天才搞明白一个功能的逻辑。有过类似经历的兄弟举个手我看看?”
  • 小说家写小说给读者,建筑师盖房子给业主… 那我们程序员写代码,最终是写给未来的自己,和接手我们代码的同事看的。
  • 代码的可维护性,决定了我们是在“创造价值”还是在“创造负债”。

P2: 举几个代码坏味道的例子?

  • (🎤 互动环节): “看过《重构》的同学应该都知道代码坏味道。来,大家一起吐槽一下,你在项目里见过最痛苦的代码坏味道是什么?” (引导大家说出几个)
  • 其实按照我朴素的理解,能让我快速理清逻辑的就是好代码,理解起来很费劲的,那肯定就充满坏味道。
  • 正如我在入职后接手的kitam项目,它就充满了这些味道:
    • 代码逻辑不内聚:功能实现像天女散花。
    • 分层过多且混乱:一个请求要穿越重重关卡。
    • 外部依赖离散:数据库、缓存的调用没有统一规范。