大多数人是把 Cursor 当 IDE 用的,靠不断提示来推进:描述、审阅、纠正、再来一遍。而当我下沉一层、直接对着它的 SDK 工作时,约束条件看起来完全不同 —— 真正的瓶颈不是单条提示词写得够不够好,而是每两步之间都必须站着一个人。更好的提示词和 skills 能缩短每一步,却消不掉步与步之间的那些缝。于是我从底层把问题拆开:先是提示词,再是每个角色拿到的上下文,然后是它运行其中的承载层,最后才是把它们串起来的闭环 —— 谁交给谁、交接时必须带上什么、每个角色被禁止做什么。杠杆就在最后这层,而这一层几乎没人在做。
成效 基于这个想法做出了 TaskFlow —— 一个内部工具:说出目标之后,它自己走完规格、实现、测试、评审,而我被问到的是"要不要这么定",不再是"下一条提示词写什么"。
这个 Web 产品,是一套在客户现场跑了几十年的桌面系统的下一代。而这类项目最省事的做法是"平移":把每一个 Windows 界面在浏览器里重画一遍,然后发布。这样做出来的东西用户认得,但不会有人为它兴奋。我加入时在这条产品线上没有任何积累,六个月内设计并交付了地图优先的实时运营仪表盘,随后又主导了新调度计划模块的设计与开发 —— 这两样在桌面端都不曾以这种形态存在过。真正需要判断的是:哪些能力值得带到下一代、哪些习惯值得推翻、以及新技术究竟在什么地方真的改变了一块屏幕能做的事。
成效 仪表盘做到了功能完整的生产候选版;调度计划模块补上了产品里一处显眼的缺口,快到足以摆到客户面前 —— 两者都不是它们所取代的那块旧界面的复制品。而随之引入的 AI,成了产品后续 AI 工作的起点。
发票审核又慢又不齐整,因为规则散落在文档措辞和老员工的经验里,从来没进过任何规则引擎。我没有先去写需求说明,而是直接做了一个跑得起来的东西 —— 搭在当前版本已经对外提供的 API 上 —— 然后把它摆到真正做这件事的人面前。跟一个能跑的系统争论,比审阅一份文档有效得多:需求是以"这里判错了"的形式回来的。而由于它站在已发布的 API 上、而不是临时搭的架子上,从这个原型到第一版可上线产品之间的距离很短。这才是我在意的部分 —— 没法产品化的原型,只是个演示。
成效 每单审核约 3–5 秒,比人工审核快 95% 以上;结业项目得分 98%。同样重要的是,从原型到可上线的那一版,几乎没有推倒重来的部分。
公司的黑客松,每办一次我都报名。多数人是组队参赛的,那也是更稳妥的做法 —— 我是有意选择一个人上 —— 不是因为偏好单干,而是黑客松是唯一能把自己的判断从头到尾检验一遍的地方。分工会让死线好过很多,但我能学到的也会少很多。一个人意味着选题、架构、实现、幻灯片、演示视频、现场讲解,每一样都得我自己做对,于是一个产品的完整弧线 —— 从"挑一个值得解决的问题"到"让它跑给人看" —— 被压进几天之内。这是我能拿到的、关于自己判断力最快也最诚实的反馈,也是唯一一个什么都甩不出去的场合。
成效 连续三年,三个能跑的原型,每一个都按时完成并完成演示 —— 而每一次其实都是在排练同一套循环:找到一个真实的痛点,做出一个真的跑得起来的东西,拿到有这个问题的人面前。
这个产品的大部分比我资历还老:Windows 桌面程序、DB2 存储过程、在 SOAP 还是主流时写下的集成。面对这类软件,常见的两种反应是"别碰它"或者"建议重写",而这两种通常都不对。十二年里真正有效的做法要窄得多 —— 找到旧系统真正在消耗某个人时间的那一个点,把新东西恰好放在那里,其余原封不动。系统不需要被重写才能变好,它需要被理解到足够深,深到你知道新的那块该嵌在哪。
成效 在同一个产品上做了十二年,从未提议过重写。上面每一件都保持周边系统原样不动,却拿掉了人们早已当成"本来就这样"的工作 —— 而最近的一件,把 AI 放到了那层本被认为碰不得的技术栈上。
我被从自己的团队抽调出去,帮另一个团队做云端记账集成,而那套生态我一无所知。这种事没有"以访客身份待着"的有效版本。摆在面前的是四个月、横跨四个架构层的七个系统,以及分布在几个组里、各自只掌握其中一块、没有人掌握全貌的同事。所以第一件事是让自己变成一个他们可以跟你争论的人 —— 把他们的领域学到足以做设计,而不只是照着做。而最后一件事更重要:把归属权交还得足够彻底,让这个团队没有我也能继续扛下去。
成效 从零领域知识到生产就绪的流水线并完成交接,约四个月 —— 而现在拥有它的团队,并没有继承一份"离不开我"的依赖。
IntelliNord 并不是一个单独的 WMS 程序,而是一套运行在多种环境中的完整产品体系。我直接与公司负责人合作,把仓库作业、客户服务、合规和计费流程转化为彼此连接的软件能力;责任范围从界面与业务逻辑延伸到数据库、外部集成、服务器部署和长期生产维护。
成效 建立了连接仓库现场执行、客户可见性、自动集成、合规、计费与财务的共同技术基础。
仓库从来不是孤立运转的:计费、财务和集团报表各自依赖不同的大型外部系统,每一个都有自己的数据模型、协议和故障方式。我设计并长期维护这些集成,让 IntelliNord 与它们保持一致 —— 数据在仓库现场录入一次,就能到达所有需要它的地方。
成效 运营、计费、财务与集团报表保持同步,系统之间无需人工重复录入。
多年的交易历史压在遗留数据库里,两头不讨好:审计要在生产表上慢慢扫,而唯一的备份就是数据库本身。我没有去动内核,而是向上扩展:归档交易数据流入 AWS DynamoDB —— 刻意选了键值存储而不是关系型数据库,因为归档查询天然是按键取数,从不需要关联 —— 再由一层 AWS API 随时把数据取回来。仓储系统毫无感知;云端只是围绕着它生长出来。
成效 历史数据同时变得安全、卸载、可查询 —— 而卸掉多年历史的生产库,始终保持小而快。审计不再和生产运营抢资源,遗留内核照旧运转,一行未改。
那个年代的车辆追踪,基本等同于"被偷之后找回来":你打电话给服务商,他们配合警方去找车。没有人提供那件最平常的事 —— 让车主自己随时看一眼车现在在哪,不用向谁申请。我们做的就是这个:浏览器里的一张实时地图,基于 Google 的地图 API,而当时把一张会动的地图嵌进商业应用里还是件新鲜事。我是创始技术成员,这张地图底下的所有东西都由我来建。
成效 公司的产品实质上就是这套技术:我们验证过的设备、它们上报进入的平台、客户登录去看的那张地图,以及给他们开账单的计费系统 —— 全部从零自建。
当手机数据通信刚刚起步时,我参与开发 WAP 订票应用。Java 后台接口直接连接实时航空订座系统,保证查询与预订的速度和准确性;手机端界面保持简单,让用户无需电脑即可查询余位并完成订座。
成效 服务很快铺开,成为当时许多商务人士使用手机订票的优先选择。
参与架构和开发 ETC 在线预订与查询界面,串联航班可用性、时刻表和预订流程;同时参与版本规划、技术评估,并辅导其他开发者。
成效 为国内互联网市场快速发展阶段的在线旅行预订,建立了可实际落地的技术基础。
我发现报表、存折和存单打印高度依赖人工定位与反复调整,既耗时也容易出错。于是自行编写模板化打印工具:版式只需定义一次,后续即可按模板稳定生成,无需每次手工校准。
成效 显著提升了银行报表和客户单据打印的效率与准确性,并减少了重复的人工设置。
参与客户端银行功能、服务端服务和报表模块的开发,运行于 Unix 终端、HP-UX 服务器与 Informix 数据库环境。
成效 打下了在高要求业务流程中构建可靠、注重细节的软件系统的基础。
不少项目属于内部系统。这里分享设计思路与成果,不展示产品界面或客户数据。
一个内部工具,把一个人的 AI 编程会话变成一支小型软件团队。你说出目标,TaskFlow 规划工作并组建阵容 —— 产品规格、开发、测试、代码评审 —— 每个角色都是一个完整的 agent 会话,各有自己的模型、由 AI 写就的提示词和彼此隔离的上下文。它们沿着一条交付闭环互相交接:规格锁定、实现完成、测试通过、评审通过、开出 PR。谁需要你拍板时,它会开口问,你用语音回答。在录制的演示里,一个工单从目标走到开出 PR,大约七分钟。
工作之外持续开发的软件项目;准备就绪后会陆续在这里发布。
起因是一张账单:我订阅了不止一个 AI 编码 agent,却还在一个一个地用。AgentMux 让它们一起跑 —— Cursor Agent、Codex CLI、Claude Code,各自在同一个项目目录的独立 tmux 会话里 —— 所有终端流式汇聚到一页浏览器。把同一个任务发给三个 agent,看它们思路差多远;或者拆开任务并行推进,用手机盯着进度。完全开源。
一套跑在自己服务器上的交易工作台,核心只有一条原则:模型负责推理,但从不负责决定。每根 K 线收盘,TradeLab 截下三个周期的图,汇总数值上下文 —— 波动率、市场状态、筹码分布、多周期趋势 —— 交给两个互相独立的 AI 模型,按固定策略各写一份判断。返回的从来不是订单,而是一份提案;它必须先通过一连串确定性检查,代码才被允许把它发出去。每一份判断都在结果揭晓之前落盘,之后再拿真实走势去核对。自托管、单用户:日记、账户连接与策略都在自己的硬件上,而不是在别人的产品里。
大多数想法死在"我能说清楚"和"我能演示"之间的那道缝里。chatPOC 补上它:网站是前台 —— 你描述想法、回答 AI 反问的问题;后台是一条流水线,调度多个 AI 工具,产出一份需求文档和一个能跑的原型。免费,不用注册。流水线的产出发布在下面那个开源账号里。
刻意只用一个账号:我公开的代码都落在这里,而且是长期打理,不是一阵热闹之后就荒掉。目前它承载着 chatPOC 工具、十九个流水线构建的原型,以及 AgentMux —— 第一个搬进来的个人项目,后面还会有更多。
很多老人都备着一个应急文件夹:病历卡、保险单、重要联系人 —— 万一突然住院,家人照着它就能处理。但纸质文件夹越攒越厚,不防火不防水,而且只能放在家里。Emergency Binder 把它搬进老人随身的手机:拍照或口述录入,加密保存、分类整理,关键时刻能安全地交到家人手上。
一台摄像机拍不全一场冰球比赛:跟着攻防就丢了球门,盯着球门又错过推进。Dual Cams 让 iPhone 的两颗镜头同时录制 —— 广角跟住战局,长焦锁定球门;精彩发生时,在手机或手表上点一下,刚刚过去的画面就从两个机位各自存成成品片段。全部装备:一部 iPhone,架在稳定器和脚架上。