Repository Level Harness Coverage #4385
Replies: 2 comments 2 replies
|
Thanks for writing this up — I agree the term “harness” is overloaded. I tend to think of Deep Agents as a general harness for building agents, where a coding agent is one possible application built on top of it, rather than the harness being something wrapped around a coding agent. I think the repo-centered framing may be more specific to coding agents than to Deep Agents itself. Deep Agents is meant to support many kinds of long-running/task-oriented agents, not only agents operating inside a repository. For now, we generally prefer to expose composable primitives — tools, instructions, middleware, memory, subagents, persistence, HITL, etc. — and adopt existing conventions where they make sense, rather than introduce a new repo-level configuration standard. So I don’t think this is an area we’re actively trying to define as a first-class abstraction right now. If there are specific missing primitives that would make Keystone-style or repo-centered workflows easier to build on Deep Agents, those would be useful to hear. |
|
The ambiguity gets smaller if you split it by what owns the loop. In Claude Code's design the harness is the runtime that owns the agent loop, tool dispatch, permissions, and context management, while the repo-level setup (CLAUDE.md, skills, hooks) is configuration the harness loads. Calling both "harness" breeds the confusion, since one is executable machinery and the other is declarative environment. I traced Claude Code's version of this layer by layer and rebuilt it as runnable Python examples: |
Uh oh!
There was an error while loading. Please reload this page.
Hello! I have been playing around a lot with harnesses recently. I actually just wrote a book about what I've learned in the past six months: https://leanpub.com/harness-engineering
There's a lot of confusion around the word harness right now. I was focusing on the harness as the "repo-centric environment for the agent". Of course LangChain refers to their product as a harness. And others see Claude Code as a harness. This generates a lot of confusion. Here's the model I have in my book:
I was referring to the middle areas as the harness - the stuff the developer can change. I don't really care what we call it so long as we disambiguate it. I shipped a tool not long ago called Keystone. It is a harness at the project level. At first I thought LangChain would mostly be used for orchestrators - but this project proves it can also be what I refer to as a 'coding agent'. It makes me wonder what else can be covered. I'm assuming we can cover the layers in between with Python code - or with some way to load rules, etc. This is already done by the coding agent, I'm sure, but they are primitives. The idea of this project was to provide a way to quickly bootstrap and maintain a repo-centered harness long-term.
Is this something that can be covered? Would it be making this project do too much? Could it be done with a toml file instead of a markdown file? Would that be easier or harder for users to consume?
All reactions