Depending on how we define harness, it's at its core a loop around llm calls with the tool field populated and a function per to use them after a round trip, easily fits into a single file in a crude setup. I think everyone should try writing a simple harness just for the learning experience, it gets thorny rather quickly.<p>Another aspect to this is model training, since bots are now being trained with a harness, and that has the tools it gets most burned in to weights. In my own harness, I tried Read,Edit,Write tools which always put the latest text of a file upfront, only one copy, to reduce context window growth as the bot tended to reread a file before/after edits. While this greatly slowed window growth, cache hits dropped to ~50%. If you give the bot a Grep and Read with Offset/Limit, this aligns with training and reduces window growth, even with the read-before-write pattern. You can see the pattern of grep-read when it does the default "use bashisms for everything instead of the dedicated tools"<p>I'm now exploring ways to remove the need for a shell tool completely, for various reasons, but notably limiting potential for loss of control. Early experiments hint this will not work well due to the heavy shell usage in training, but I'm not throwing in the towel just yet!