[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-harness-agent-coding-steadier-loop-en":3,"article-related-harness-agent-coding-steadier-loop-en":29,"series-tools-e522fdf6-aaa1-46b3-87dd-1dfd46a89e6c":76},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":11},"e522fdf6-aaa1-46b3-87dd-1dfd46a89e6c","harness-agent-coding-steadier-loop-en","Harness turns agent coding into a steadier loop","\u003Cp data-speakable=\"summary\">Harness turns long-running coding agents into a steadier workflow.\u003C\u002Fp>\u003Cp>I've been using coding agents for a while now, and honestly, they kept feeling like over-caffeinated interns. Fast on the first pass, eager to agree, and weirdly bad at staying on track once the task got messy. They'd write a file, then drift. They'd fix one bug, then quietly break three others. And when I asked for frontend work, the output often looked like it was designed by someone who had only seen screenshots of interfaces.\u003C\u002Fp>\u003Cp>That got annoying enough that I started paying attention to anything that made agents less flaky. The piece that kicked this off is Anthropic’s engineering blog post on \u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fengineering\">Anthropic Engineering\u003C\u002Fa>, published on \u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fnews\">Anthropic’s site\u003C\u002Fa> and discussed in the context of their coding workflow work. The author named in the source material is Prithvi Rajasekaran from \u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fcompany\">Anthropic\u003C\u002Fa>. I’m not going to pretend the original source gives me neat public metrics here; it doesn’t. But the ideas are concrete enough that I can actually turn them into something you can use.\u003C\u002Fp>\u003Ch2>Stop treating the agent like a chat box\u003C\u002Fh2>\u003Cblockquote>Anthropic’s engineering write-up focuses on long-running agentic coding and improved frontend design quality.\u003C\u002Fblockquote>\u003Cp>What this actually means is that the useful unit is not a single prompt-response pair. It’s a loop: plan, execute, inspect, adjust, repeat. If I keep talking to the model like it’s just autocomplete with opinions, I get shallow help. If I give it a process, it can stay useful for much longer.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786043023625-ye2m.png\" alt=\"Harness turns agent coding into a steadier loop\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>I ran into this when I tried to use an \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> for a multi-file refactor. The first answer was fine. The second answer was still fine. By the third turn, the model was forgetting earlier constraints and acting like the repo had no history. That’s not a “bad model” problem so much as a “bad operating model” problem.\u003C\u002Fp>\u003Cp>How to apply it: stop asking for one-shot magic. Give the agent a job with checkpoints. Tell it what to inspect before it edits anything, what it must preserve, and how it should report progress. If you want reliability, make the workflow explicit.\u003C\u002Fp>\u003Cul>\u003Cli>Start each task with a short objective and a stop condition.\u003C\u002Fli>\u003Cli>Require a brief plan before code changes.\u003C\u002Fli>\u003Cli>Ask for a summary of what changed and what still looks risky.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>That sounds simple because it is. The annoying part is that most of us skip it, then blame the model when the process was the real mess.\u003C\u002Fp>\u003Ch2>Long tasks need memory, not vibes\u003C\u002Fh2>\u003Cp>One of the big themes here is persistence. Long-running agents are only useful if they can carry context across steps without turning into mush. That means the workflow has to protect the important bits: constraints, decisions, and open questions.\u003C\u002Fp>\u003Cp>What this actually means is that you should externalize state. Don’t trust the model to “remember” everything that matters. Put the important stuff in files, tickets, or structured notes. I’ve had much better results when the agent reads a task spec from disk, updates a changelog, and writes down assumptions before it moves on.\u003C\u002Fp>\u003Cp>I’ve seen people try to solve this with bigger prompts. That helps for about five minutes. Then the context window starts doing its usual garbage-collector impression. The better fix is boring: store state outside the conversation.\u003C\u002Fp>\u003Cp>How to apply it: give the agent a working directory with a task file, a checklist, and a decision log. Ask it to update those artifacts as it goes. If it can’t point to what changed, it probably didn’t really understand the job.\u003C\u002Fp>\u003Cul>\u003Cli>Use a \u003Ccode>TASK.md\u003C\u002Fcode> file for the goal and constraints.\u003C\u002Fli>\u003Cli>Use a \u003Ccode>DECISIONS.md\u003C\u002Fcode> file for tradeoffs and rejected paths.\u003C\u002Fli>\u003Cli>Use a \u003Ccode>STATUS.md\u003C\u002Fcode> file for what is done, blocked, or pending review.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>That makes the system less magical, sure. It also makes it a lot less annoying to debug.\u003C\u002Fp>\u003Ch2>Frontend quality is mostly about taste plus guardrails\u003C\u002Fh2>\u003Cp>The source material also points at frontend design quality, which is where a lot of coding agents embarrass themselves. They can produce valid UI code that still looks like a demo from 2018. The issue is usually not syntax. It’s judgment.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786043021950-tzwf.png\" alt=\"Harness turns agent coding into a steadier loop\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>What this actually means is that you need explicit design constraints. If you want better UI, you have to tell the agent what “better” means in your project. Layout rhythm, spacing scale, typography rules, component reuse, motion limits, color usage, accessibility expectations. If you don’t name those things, the model fills in the blanks with whatever it has seen most often.\u003C\u002Fp>\u003Cp>I ran into this when generating a settings page. The first pass worked functionally, but the spacing was chaotic and the hierarchy was weak. Once I added a tiny design brief and a few examples from the existing app, the output improved immediately. Not because the model got smarter, but because I stopped making it guess.\u003C\u002Fp>\u003Cp>How to apply it: keep a design contract in the repo. Make the agent read it before touching UI code. If you have a component library, say so. If you care about accessibility, say so. If your app uses a specific spacing scale, say so.\u003C\u002Fp>\u003Cul>\u003Cli>Define a small set of approved components.\u003C\u002Fli>\u003Cli>List spacing, font, and color rules in one place.\u003C\u002Fli>\u003Cli>Require the agent to explain how the new UI matches the system.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>That last part matters. If it can’t explain the match, I don’t trust the result.\u003C\u002Fp>\u003Ch2>Planning beats improvisation when the task is ugly\u003C\u002Fh2>\u003Cp>Another thing I keep seeing in better agent workflows is a bias toward planning before action. That’s not bureaucracy. It’s damage control. When tasks involve multiple files, hidden dependencies, or interface changes, improvisation gets expensive fast.\u003C\u002Fp>\u003Cp>What this actually means is that the agent should outline the approach before it edits code. Not a novel. Just enough to surface assumptions and likely failure points. I want to see the path before I let it touch production code.\u003C\u002Fp>\u003Cp>I’ve had agents jump straight into implementation and then spend the next four turns cleaning up avoidable mistakes. Once I switched to “plan first, then patch,” the whole thing got calmer. Fewer surprise regressions. Fewer weird half-fixes. Less time reading code that clearly shouldn’t exist.\u003C\u002Fp>\u003Cp>How to apply it: make planning a required step for anything beyond a small edit. Ask for a concise plan, the files likely to change, and the risks the model sees. Then approve or correct that plan before it writes anything.\u003C\u002Fp>\u003Cp>That also gives you a nice side effect: you can catch bad assumptions early, when they’re still cheap.\u003C\u002Fp>\u003Ch2>Inspection is where agent workflows stop lying to you\u003C\u002Fh2>\u003Cp>If there’s one part people skip, it’s inspection. They let the agent write code, maybe run a test, and call it done. That’s how you end up with a repo full of plausible nonsense. The point of a long-running coding agent is not just output. It’s self-review.\u003C\u002Fp>\u003Cp>What this actually means is that the loop should include reading back the result and checking it against the goal. The agent should inspect diffs, summarize what it changed, and call out anything suspicious. If it only knows how to generate, it’s half a tool.\u003C\u002Fp>\u003Cp>I’ve seen this save me on tiny errors that would have taken longer to notice by hand. A bad import. A missing prop. A style rule that got violated in one corner of the app. The model won’t always catch these, but if you ask it to inspect deliberately, the hit rate improves enough to matter.\u003C\u002Fp>\u003Cp>How to apply it: after every meaningful edit, require a review pass. Ask the agent to compare the current diff against the original request and list mismatches. If it can run tests or linting, make it report the results in plain language, not just paste output.\u003C\u002Fp>\u003Cul>\u003Cli>Ask for a diff summary after each change set.\u003C\u002Fli>\u003Cli>Ask for a risk list with the top three things that might still be wrong.\u003C\u002Fli>\u003Cli>Ask for next steps if the task is not fully complete.\u003C\u002Fli>\u003C\u002Ful>\u003Cp>That review step is boring. It also saves you from pretending the first answer was good enough.\u003C\u002Fp>\u003Ch2>The workflow matters more than the model bragging rights\u003C\u002Fh2>\u003Cp>I know everyone wants to talk about model quality, but the source here is really about workflow quality. A decent model inside a bad process still behaves badly. A solid process can make a less flashy model feel much more dependable.\u003C\u002Fp>\u003Cp>What this actually means is that your agent setup should look more like a production system and less like a demo. Inputs, checkpoints, state, review, exit criteria. If any of those are missing, you’re depending on luck.\u003C\u002Fp>\u003Cp>I’ve watched teams spend weeks arguing over prompts when the real issue was that nobody agreed on what “done” meant. Once we added task files, review steps, and a fixed output format, the agent became easier to trust. Not perfect. Just less chaotic.\u003C\u002Fp>\u003Cp>How to apply it: define the workflow before you tune the model. Decide where the task starts, where state lives, when the agent pauses, and who approves the result. Then build prompts around that process instead of the other way around.\u003C\u002Fp>\u003Cp>That’s the part people hate because it feels less clever. Fine. I’d rather be less clever and more correct.\u003C\u002Fp>\u003Ch2>The template you can copy\u003C\u002Fh2>\u003Cpre>\u003Ccode># Agent Coding Workflow Template\n\n## 1. Task Brief\n- Goal:\n- Non-goals:\n- Files likely to change:\n- Constraints:\n- Stop condition:\n\n## 2. Required Context\n- Read these files first:\n  - TASK.md\n  - DECISIONS.md\n  - STATUS.md\n  - relevant source files\n- Preserve these rules:\n  - existing APIs\n  - design system rules\n  - test and lint standards\n\n## 3. Planning Step\nBefore editing code, produce:\n- a short implementation plan\n- the files you expect to modify\n- the main risks\n- any assumptions you are making\n\n## 4. Implementation Step\nWhen editing:\n- make the smallest useful change set\n- keep code style consistent with the repo\n- update state files if decisions change\n- do not expand scope without asking\n\n## 5. Inspection Step\nAfter changes:\n- summarize the diff in plain English\n- list what was verified\n- list what still looks risky\n- note any follow-up work\n\n## 6. Frontend Quality Rules\nIf the task touches UI:\n- follow the existing spacing scale\n- reuse approved components\n- keep typography consistent\n- maintain accessibility basics\n- explain how the result matches the design system\n\n## 7. Output Format\nReturn:\n1. Plan\n2. Changes made\n3. Verification\n4. Remaining risks\n5. Next recommended step\n\n## 8. Example Prompt\nYou are working in this repo as a coding agent.\nRead TASK.md, DECISIONS.md, and STATUS.md first.\nWrite a short plan before editing anything.\nThen implement the smallest safe change.\nAfterward, inspect your diff and report risks and verification results.\nIf this touches UI, follow the design rules and explain how the output matches them.\nDo not claim completion unless the stop condition is met.\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>This template is mine, based on the workflow ideas in Anthropic’s engineering material, not a verbatim copy of their post. The original source that triggered this breakdown is the Anthropic engineering blog at \u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fengineering\">https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u003C\u002Fa>. If you want the original context, start there; if you want something you can paste into your own repo today, use the block above and adapt it to your stack.\u003C\u002Fp>","I break down Anthropic’s Harness post into a copy-ready workflow for longer-running coding agents and better frontend output.","zhuanlan.zhihu.com","https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2066182783156872526",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1786043023625-ye2m.png","tools","en","3b3c9d3f-47b5-453b-892f-241bf29d986b",[17,18,19,20,21],"AI agents","coding workflow","frontend design","prompting","Anthropic",[23,24,25],"Long-running coding agents work better with explicit checkpoints and stored state.","Frontend quality improves when design rules are written down instead of implied.","A review step after every meaningful edit catches more mistakes than one-shot prompting.",1,"2026-08-06T19:03:18.986388+00:00","2026-08-06T19:03:18.959+00:00",{"tags":30,"relatedLang":35,"relatedPosts":39},[31,33],{"name":21,"slug":32},"anthropic",{"name":17,"slug":34},"ai-agents",{"id":15,"slug":36,"title":37,"language":38},"harness-long-running-agent-coding-template-zh","Harness 讓長任務編程更像真開發","zh",[40,46,52,58,64,70],{"id":41,"slug":42,"title":43,"cover_image":44,"image_url":44,"created_at":45,"category":13},"c21b1af8-9be1-43e4-892d-8a4f9ab8c16b","source-2-swaps-bsp-for-meshes-and-octrees-en","Source 2 swaps BSP for meshes and octrees","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785978184152-le0e.png","2026-08-06T01:02:44.396782+00:00",{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"60582080-6e78-42fc-87e5-85c2c5d1655e","golang-basics-for-beginners-2026-en","Golang basics for beginners in 2026","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785976359754-atcf.png","2026-08-06T00:32:16.673622+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"422265fa-3472-489b-a791-af1622f7461b","run-linux-containers-on-wsl-with-wslc-en","Run Linux containers on WSL with wslc","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785933173005-9jnb.png","2026-08-05T12:32:28.209285+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"90a9e12a-c375-4082-b7f7-9c2f56f4b803","claim-alibaba-cloud-free-trial-ecs-credits-en","Claim Alibaba Cloud Free Trial Credits on ECS","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785846783510-ed2x.png","2026-08-04T12:32:35.510907+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"9d41f638-ce04-4c38-8791-b1bf0136ac61","deepseek-v4-flash-turns-agent-work-cheap-en","DeepSeek V4 Flash turns Agent work cheap","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785785622118-cv0b.png","2026-08-03T19:33:16.512658+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"f7b3e715-3846-4073-a11a-724cee335a56","gpt-56-sol-cuts-gpu-costs-20-en","GPT-5.6 Sol cuts GPU costs 20%","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1785780227547-t9b5.png","2026-08-03T18:03:17.835161+00:00",[77,82,87,92,97,102,107,112,117,122],{"id":78,"slug":79,"title":80,"created_at":81},"8008f1a9-7a00-4bad-88c9-3eedc9c6b4b1","surepath-ai-mcp-policy-controls-en","SurePath AI's New MCP Policy Controls Enhance AI Security","2026-03-26T01:26:52.222015+00:00",{"id":83,"slug":84,"title":85,"created_at":86},"27e39a8f-b65d-4f7b-a875-859e2b210156","mcp-standard-ai-tools-2026-en","MCP Standard in 2026: Integrating AI Tools","2026-03-26T01:27:43.127519+00:00",{"id":88,"slug":89,"title":90,"created_at":91},"165f9a19-c92d-46ba-b3f0-7125f662921d","rag-2026-transforming-enterprise-ai-en","How RAG in 2026 is Transforming Enterprise AI","2026-03-26T01:28:11.485236+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"6a2a8e6e-b956-49d8-be12-cc47bdc132b2","mastering-ai-prompts-2026-guide-en","Mastering AI Prompts: A 2026 Guide for Developers","2026-03-26T01:29:07.835148+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"3ab2c67e-4664-4c67-a013-687a2f605814","garry-tan-open-sources-claude-code-toolkit-en","Garry Tan Open-Sources a Claude Code Toolkit","2026-03-26T08:26:20.245934+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"66a7cbf8-7e76-41d4-9bbf-eaca9761bf69","github-ai-projects-to-watch-in-2026-en","20 GitHub AI Projects to Watch in 2026","2026-03-26T08:28:09.752027+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"9f332fda-eace-448a-a292-2283951eee71","practical-github-guide-learning-ml-2026-en","A Practical GitHub Guide to Learning ML in 2026","2026-03-27T01:16:50.125678+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"1b1f637d-0f4d-42bd-974b-07b53829144d","aiml-2026-student-ai-ml-lab-repo-review-en","AIML-2026 Is a Bare-Bones Student Lab Repo","2026-03-27T01:21:51.661231+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"6d1bf3f6-e191-4d30-b55b-8a0722fa6afe","ai-trending-github-repos-and-research-feeds-en","AI Trending Tracks Repos and Research Feeds","2026-03-27T01:31:35.709532+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"010539a1-4c3a-4bd3-937a-26616422ee0d","awesome-ai-for-science-research-tools-map-en","Awesome AI for Science Is Becoming a Real Research Map","2026-03-27T01:46:50.89513+00:00"]