Ian Johnson (Medium)

RSS: https://medium.com/feed/@tacoda
Ian Johnson 关于技术、软件与开发项目的故事。

What Breaks When You Skip the Harness

The agent kept running the tests, watching them go red, scrolling up to find the failure, and then running the tests again because it had already lost the output. Third time in one session. The model ...
评论点赞收藏53 天前

Tools Are Harness Too

I had a rule in my project for months that said always check Code Health before committing. The agent followed it about 70% of the time. The other 30%, it forgot; usually on the longer tasks, when its...
评论点赞收藏54 天前

驾驭工程:围绕非确定性智能体构建可靠工作流

作者Ian Johnson将其过去六个月在Medium上发布的关于非确定性Agent工作流的系列博文(包括Bridle、Sellier、IDD、Keystone等概念)整合成了一本新书《Harness Engineering》。书中核心观点是通过实验验证了构建可靠Agent工作流的方法论:例如“飞轮效应”、“默认值优于灵活性”以及“团队层可以被具体化”。该书目前在LeanPub上线,采用“随心付”模式。对于关注AI Agent工程化、工作流可靠性及LLM应用架构的开发者来说,这是一份经过实战检验的一手经验和系统性总结,具有较高的参考价值。
评论点赞收藏55 天前

我依然生活在终端里

作者回顾了自己从高中接触Linux终端开始的经历,阐述了为什么坚持使用命令行工作流。核心观点包括:管道和文本是Unix哲学的万能接口,比GUI插件更通用;Makefile等构建工具提供了稳定的抽象,屏蔽了底层工具的变迁;键盘操作减少了思维中断的延迟。作者建议工程师每周找一个鼠标点击操作替换为命令行命令,通过积累提升效率。这是一篇基于个人经验的工程实践分享,观点清晰,对开发者有实际参考价值。
评论点赞收藏55 天前

为什么我至今仍坚守在终端

作者回忆高中时期第一次安装 Linux 的经历,通过简单的管道命令快速排查日志,体会到了命令行比图形界面更高效、更直接的快感。这种初次接触终端带来的“掌控感”和效率体验,成为了他多年来坚持使用终端作为主要工作环境的核心动力。文章通过个人故事阐述了终端在技术工作中的独特魅力。
评论点赞收藏55 天前

Sensors: The Other Half of the Harness

The pre-commit hook caught a migration last Tuesday that would have shipped to staging green and broken production on the next deploy. The migration dropped a foreign key constraint without naming a b...
评论点赞收藏56 天前

意外的框架:从简单脚本到架构演变的思考

作者最初构建了一个简单的Go二进制文件,用于将Markdown文件复制到仓库中,并将其称为安装程序。在规划1.0版本时,作者意识到该工具实际上具备框架的核心特征:包含运行时、命名扩展点、约定俗成的文件布局以及解析器。文章探讨了从简单脚本演变为框架的过程,以及这种“意外”发现对软件设计和架构理解的启示。
评论点赞收藏57 天前

代码规范文件也是入职导师

作者发现团队给AI Agent写的代码规范文件(如),对新入职工程师的引导作用远超传统文档。传统README是理想化的,而这个规范文件记录了团队踩过的坑、政治边界和具体操作细节,是“法医式”的真实记录。文章提出将这份给Agent看的文档同时作为新人入职指南,通过让新人阅读并提问来反向优化文档,形成飞轮效应。建议开发者检查自己的Agent规范文件,补充人类可读的背景和原因,将其从单纯的机器指令升级为团队知识沉淀的核心载体。
评论点赞收藏58 天前

Keystone 2.0:一次名副其实的升级

作者Ian Johnson详细解读了Keystone框架2.0版本的重大更新。核心变化在于确立了清晰的“框架词汇表”,将组件分为Framework和Agent两层,并通过索引文件简化了开发体验。其次,新增了基于HTMX和SSE的实时操作仪表盘,让开发者能直观监控Agent状态。此外,还介绍了内置MCP服务器支持、带有基线对比的评估功能以及向1.x版本的平滑迁移命令。整体而言,2.0版本通过增强可观测性和标准化接口,解决了1.x版本在工程化和维护性上的不足,是一个具有实质性改进的版本升级。
评论点赞收藏59 天前

Keystone 2.0:一次值得期待的升级

作者Ian Johnson讨论了Keystone框架2.0版本的更新理念。他强调大版本升级必须带来实质性的形态变化,而非仅仅修改版本号。文章指出,开发者希望看到工具在核心架构或交互方式上有显著不同,否则就是浪费用户的注意力。作者通过回顾Keystone 1.x的设计理念,引出2.0版本需要解决的关键问题,即如何让用户直观感受到这是一个全新的工具。这反映了当前前端框架迭代中普遍存在的“伪创新”现象,以及开发者对真正有价值的技术进步的期待。
评论点赞收藏59 天前

给 AI Agent 规则集建立版本管理纪律

文章主张将 AI Agent 的“规则集(Harness)”视为基础设施代码,必须建立严格的版本管理纪律。作者指出,团队通常忽视对规则变更的审查,导致规则冲突或破坏工作流。核心建议包括:1. 变更审查:检查规则冲突、作用域及可逆性;2. 迁移纪律:结构性变更需提前公告并编写迁移说明;3. 发布策略:根据影响范围采取不同发布流程,重大变更集中在每月固定时间进行;4. 回滚与修正:不仅需回滚代码,还需修正因规则养成的团队习惯。通过建立这些工程化纪律,避免规则集随时间漂移,提升团队协作效率。
评论点赞收藏59 天前

The Daemon in the Middle

My laptop runs a Python process that does almost nothing. Every 60 seconds it asks Jira for the list of open tickets, looks at each one, and decides whether anything needs to happen. Most of the time,...
评论点赞收藏60 天前

组织约束:AI编程中那些“一层之外”的关键决策

文章通过一个具体的Laravel迁移编写场景,探讨了AI代理开发中常被忽视的组织层面问题。作者指出,虽然我们可以定义代码生成的规范,但关于任务来源、优先级判定和完成标准的决策往往在代码层之外。这种‘一层之外’的结构性约束被比喻为‘组织Harness’,强调了在自动化开发流程中,理解和管理这些隐性组织规则的重要性。
评论点赞收藏61 天前

意图驱动交付:一种让AI Agent在约束下工作的交付模型

作者提出一种介于Vibe Coding和传统规格驱动开发之间的AI工作流模式。核心是将“意图合同”作为最小可验证的工作单元,明确范围、接受标准和风险,让Agent在约束下执行中间环节,人类仅在关键节点审核。文章详细描述了从信号到发布的六步流程、合同结构、以及在实际项目中遇到的坑(如Bot身份验证问题),强调这是一种交付模型而非单纯的编码风格。
评论点赞收藏61 天前

Ports and Adapters for Prose

I rewrote the same skill file three times last month. Each time I changed the explanation. The trigger conditions never changed. I’d baked them into the body so deeply that touching the explanation me...
评论点赞收藏62 天前

作用域规则详解:全局、项目与路径匹配

文章深入探讨了Claude Code中三种作用域规则(全局、项目级、路径级)的实际行为差异与常见误区。作者指出默认将所有配置放在全局是一个普遍存在的错误,会导致规则失效或性能损耗。文章旨在澄清这些概念,帮助开发者更有效地管理AI编码助手的上下文和指令。
评论点赞收藏63 天前

Agent 运行后的复盘机制

文章通过一个AI Agent重构代码耗时五小时且最终产出低效的真实案例,探讨了Agent运行后缺乏事后复盘(Post-Mortem)的问题。作者指出团队在首次失败后未吸取教训,导致两周后相同故障模式再次出现,强调了建立Agent运行复盘机制的重要性。
评论点赞收藏64 天前

Lisp对Ruby的深远影响:从语法糖到范式融合

文章深入分析了Ruby语言中源自Lisp的核心特性,包括谓词命名约定、闭包与块、一等函数、符号、集合方法、惰性枚举、鸭子类型及表达式导向设计。作者指出Ruby本质上是带有函数式口音的面向对象语言,其表达力源于对Lisp和Smalltalk思想的融合,而非单纯的原创。
评论点赞收藏65 天前

Lisp对Ruby的影响

文章探讨了Ruby语言设计深受Lisp影响的观点,指出虽然语法上移除了括号和前缀表示法,但其链式调用、过滤转换及不可变数据处理的代码形态本质上仍是Lisp风格的体现。
评论点赞收藏65 天前

将显式边界作为AI代理的操作约束

作者分享了一次AI编程助手因缺乏接口抽象而破坏工作流的踩坑经历,提出在代码库中建立显式边界(Explicit Seams)作为AI代理的可操作性约束,以增强系统鲁棒性。
评论点赞收藏66 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。