关键在于挽具
The Harness Is the Thing

原始链接: https://scott-fryxell.github.io/blog/the-harness-is-the-thing/

作者通过“智能体编码”(agentic coding)的视角阐述了软件开发的演变,指出当代开发者通过掌握“控制框架”(harness)——即人类意图与大语言模型能力之间的结构化接口,个人即可达到团队级别的开发成果。 通过在多种模型(如 Cursor、Claude 和 Deepseek)之间利用统一的工作流,作者将 AI 实现了商品化,摆脱了对单一供应商的依赖。这种方法的核心是一个“智能体控制框架”,它是一个包含显式规划(有向无环图)、独立工作角色(规划者、执行者、评估者、推广者)以及共享配置文件的结构化环境。该装置使作者能够自动化处理复杂任务,通过在前沿模型与轻量级模型间切换来优化 Token 使用,并保持对项目的创造性控制。 作者总结道,通过构建一个自包含、可审计且模块化的系统,他们重新获得了对工作流的主导权。尽管行业变化迅速且模型可用性不断演变,这种以框架为中心的方法显著提升了他们的产出与创造节奏,证明了开发者可以通过编排 AI 工具而非仅仅依赖它们“写代码”,来保持生产力和纪律性。

这篇 Hacker News 帖子围绕题为“关键在于束缚”(The Harness Is the Thing)的文章展开,评论中反映了依赖人工智能工作流所面临的挑战。用户讨论了依赖单一 AI 模型或提供商的不稳定性,特别是考虑到不断变化的使用限制和价格结构。一位用户表达了对达到 Anthropic 使用上限的担忧,并指出他们将不得不被迫实现工作流多元化。另一位用户则认为,目前的模型(例如假设的“GPT-5.6 Luna”)能力很强,前提是用户知道如何有效地引导 AI 以获得预期的输出。总的来说,这场讨论凸显了单一 AI 工具的便利性与构建更具弹性、不依赖特定模型的必要性之间日益增长的矛盾。
相关文章

原文

When I started out as a developer, I had a graybeard observe for me that Moore's law also applies to software. I didn't understand that this constant conversation about how we were solving problems was the arc of progress; that complaining about J2EE and how slow Netbeans was, and wheezing about table-based layouts and constant full-page reloads, was the day-to-day optimizing that is also an engine of progress.

The last eighteen months have been a particular window of relentless improvement. Tab completions have given way to agentic coding which has given way to managing your agents with a harness. I've gone from being awed at the productivity gains to settling into the game and squeezing the lemon to see what I can get.

There are new truths

Single developer projects can build to the caliber and consistency of large development teams. You can and should build bespoke applications and you don't have to sweat onboarding experienced engineers; if they know their stack backwards and forwards they'll quickly know how to contribute to yours. But most of all, I have learned that the harness is the thing; the fulcrum from which my expectations meet the LLM's capabilities.

At the moment my rig is supported by two subscriptions (Cursor, Claude) that I can augment with Pi as needed. All three share my skills and AGENTS.md. Though I am using three TUIs, I have a unified experience. This has commodified the models for me; there is no magic sauce or special experience in Claude or Cursor that I need in order to be productive. I have zero anxiety about the transition from Cursor to Codex at the end of this month.

The cost advantage

In the commodity1 era I can get great results from a host of available models, but I've been leaning on deepseek-v4-flash-0731 since it came out. It's a rare case that I dip into my Anthropic API budget to utilize Fable.

I can run Deepseek on most maintenance and simple tasks. It's when I am exploring a serious feature or large refactor with lots of moving parts that I reach for the frontier. Recently I learned about prewalk2, Can Bölük's technique that uses frontier for the planning phase and first task, then hands off once the pattern is set. I paired it with the planner/worker/critic split from Building an Advanced Agentic Harness3 - a single prompt that plans, executes, and critiques itself confuses its own objectives, so each role gets isolated instead. I built both into a skill, with a supporting Pi extension that can take over at any stage of work.

Exploration leads to a plan formalized into an explicit DAG (directed acyclic graph) task list. Then a worker takes over, focusing on implementing the DAG one node at a time. Once complete, I bring in the critic to simplify and question what was implemented. Often this phase will push back enough that the worker phase is revisited. But once satisfied, the critic gives way to a promoter, which is my reminder that a job is not complete until you've properly communicated it to others.

I added the promoter step to shore up a weak spot I have for wanting to ship and move on. It's my reminder to let people know about work I'm completing. I need a little help from Fable in this phase, as promotion is subtle and easily borked, and nobody likes a critic so running it through the frontier gives it more weight.

A shallow arc of five stops - explore, planner, worker, critic, promoter. A pale band runs along the inside of the whole arc, as deep as the tallest peak: that is the commodity model, and it carries most of the work. Two red peaks rise into the head of worker, and a much shallower one straddles the seam between critic and promoter.

This has dropped my usage of Fable in even my most intense contexts by 75%. This feels sane, something akin to AI soak. I can take care of my clients and make real progress on my own projects on my two twenty-dollar plans, as I juggle in and out of Pi for Deepseek or the Fable infusion.

A product harness connection

My product4 is a camera app designed to make it easy to take a picture and see it converted into a vector graphic, one at a time. It's fun because it's simple. The resolution drops, the picture is simplified into value layers, and shapes. It keeps the context and removes the detail so you can draw it back in. That's all it's designed to do. You print it out and you draw on top of it. Or import it into Procreate and draw within all the layering.

This functionality is made available to the harness via poster-driver5. Open it in headless Chrome and drive the live site to give you posters from any graphic or deconstructed video you want . This makes scripting the app as easy as loading a web page.

An advanced use case which before, only had clumsy solutions is now available and fun to use; a feature with plenty of runway to explore

# run from harness root
npm run make:animation artifacts/my-movie.mp4

The LLM helped me figure this out and wrote a script that I keep in my harness; so it can run a billion times without burning tokens. The product got more powerful because the harness can reach it. There is support for the filesystem API. After enabling it on Brave, I am syncing my thoughts to the work directory. Harvesting my own sad boy lyrics to sing in my room by myself. It hurts so good. Another creative use I am exploring is working on a blender environment that is my neighborhood in 3d with posters overlaid on top. A scene, a storyboard a hell of a lot more than I can offer from the web.

The app feels fully available now in a way that was impossible a year ago. Creative people can still use a non-AI tool in an AI way. We can keep for ourselves the funnest parts about being creative.

Breaking down the harness

I live my workday out of this harness6. I have my nvim config mapped into the work directory, and now the LLM knows what file I have open and can edit it and, since I'm still a slow swimmer, help me use the right motions. Harness as jig is the way I'm trying to think of it: the LLM is there editing my config with me so I can stay focused on working while also staying disciplined about using vim commands.

The harness is self-contained to support more than a home directory (sandboxing, a web interface, File System Access API, Docker, Deno executable, etc).

These concepts are still forming in my mind so I've been referencing npm start, cursor-agent, claude as TUIs to keep the concept of a harness clear. All TUIs share the harness.

Remaining auditable is important enough that the TUIs are instructed to keep things inside the artifacts/ directory. Cursor uses .gitignore to ignore files, which I think is smart, so a git-less root is required. I have a skill that syncs the harness with the repo in the work directory. Skills, extensions, and AGENTS.md are first-class citizens at the root, waiting to be modified and built upon. TUIs have to toe the line.

brayness/
├── AGENTS.md
├── AGENTS.local.md
├── bin/
├── prompts/
├── plans/
├── skills/
├── extensions/
├── artifacts/
└── work/
    ├── realness/
    ├── blog/
    ├── brayness/
    ├── nvim/
    └── ...

Initially I was too prescriptive with my skills; I am learning to lighten the specificity, and that there is a line past which you are burning tokens mansplaining to clankers. As the harness settles down I'll need to adopt a more empirical approach to confirming the impact of changes.

Here are some mapped to my planning arc.

explore

  • nvim-buffers
  • flexible-visual-system
  • vault
  • interview-prep
  • vuetify-to-semantic

planner

  • planning
  • memory
  • previous-work
  • project-tooling
  • brayness-sync

worker

  • realness-design
  • typography
  • user-interface
  • rust-best-practices
  • agent-browser
  • logo-finder

critic

  • critic
  • test-coverage
  • simplify
  • vue-inspect

promoter

  • hyperframes
  • readable
  • zoom-to-ableton
  • motion-systems

With my feet back on the ground I no longer feel lost in cursor-agent or Claude. I have agency over workflow and can craft how I engineer solutions. What I learn using Pi often rolls back into my Claude and Cursor experience. With Pi I trust I can bash my way through any problem. Let the harness run the scripts. Coordinate the scripts with the LLMs.

In the last three months I find myself leaving the editor for a terminal more and more. It feels like a harmony of reasons why. Trusting the code to the agents, switching to Ghostty, and fighting skill rot via nvim have happened, normally reshuffling the deck like this would cripple my output yet my personal projects and client work are at the highest level and tempo. Little things like building context around long-running agentic tasks with splits have helped settle me into the AI experience.


This was all made urgent when the government banned Fable and started signaling daddy privilege over the industry. I, and I assume about a hundred thousand other software developers, suddenly felt the need to diversify our model access. So, for freedom, we collectively decided to give these Chinese models a try. Pi went from a tool I had gotten working and was just playing around with to the most important piece of my rig.

comments7

  1. https://www.emergingtrajectories.com/lh/commodification-and-circularity/
  2. https://stencil.so/blog/prewalk
  3. https://data4sci.com/blog/building-an-advanced-agentic-harness
  4. https://realness.online/about
  5. https://realness.online/poster-driver
  6. https://github.com/scott-fryxell/brayness
  7. https://news.ycombinator.com/item?id=49452346
联系我们 contact @ memedata.com