惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
C
Cisco Blogs
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
S
Security Affairs
PCI Perspectives
PCI Perspectives
The Last Watchdog
The Last Watchdog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
News and Events Feed by Topic
W
WeLiveSecurity
T
Tenable Blog
L
LINUX DO - 最新话题
T
Tor Project blog
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
爱范儿
爱范儿
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
I
Intezer
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
S
Securelist
P
Privacy International News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
量子位
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
T
Threat Research - Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Scott Helme
Scott Helme
H
Help Net Security
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
I
InfoQ
TaoSecurity Blog
TaoSecurity Blog
Blog — PlanetScale
Blog — PlanetScale
N
News | PayPal Newsroom
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes

jola.dev

How to stop Claude from saying load-bearing | jola.dev Let libraries be libraries | jola.dev CI workflows on Tangled for Elixir | jola.dev Automatically syncing your blog to atproto and standard.site | jola.dev Appreciation for the small web | jola.dev Treating LLMs as programming books Publishing your blog to standard.site in Elixir Generating OG images in Elixir The social contract of writing Highest Random Weight in Elixir bunnyx: a bunny.net Elixir client library Building for the joy of building Running local models on an M4 with 24GB memory How to hit your Claude weekly limit so you can go outside and touch grass Dropping Cloudflare for bunny.net Building a blog with Elixir and Phoenix Ruthless Prioritization: The Path to Delivery Estimates Are More Valuable Than You Think When Software Engineers Think They Need More Focus Time If the Goal is Resiliency, Defensive Programming is Your Enemy The Magic of Daily Pull Requests: Why Smaller is Better Building a Distributed Rate Limiter in Elixir with HashRing Announcing Hex Diff Building Hex Diff Push-based GenStage The Erlang :queue module in Elixir Patterns for managing ETS tables Health checks for Plug and Phoenix The new `Registry.select/2` and what match specs are Elixir String Processing Optimization
Stay in the Loop: How I Actually Use Claude Code
Johanna Larsson · 2026-03-07 · via jola.dev

tl;dr There are only two modes: planning and executing. You can never execute without having planned first. When execution goes off-track, you stop and go back to planning. That's it.


Described this way of working to a coworker and although I don’t think this is revolutionary, it felt like it would be worth a blog post. This has been working pretty well for me, running 6+ concurrent sessions at different stages of planning and executing. It does require a lot of context switching, but the overall output has been great.

The workflow

You don't start by asking Claude to take action. You start by asking it to load context. Read Linear tickets, Notion docs, relevant files, the codebase. The goal is to build up a shared picture of the world before any work happens.

For smaller tasks you can skip the initial context building step, but it often has to happen during planning anyway.

Next up: give it the task. Tell it to research, investigate, and come back with descriptions, backgrounds, pros and cons. Crucially: no edits, no actions, not even plan mode yet. If it tries to jump ahead, hit the escape button immediately and tell it to get back on track. The goal is to have a shared understanding of the problem and a rough approach you both agree on. If there’s even a hint of ambiguity in the output, stop and ask for clarification. Only when you're completely aligned, every code path has been investigated, do you tell it to go into plan mode.

If you’re using the 200K context window version, you probably want to choose accept and reset context. If you’re on the 1M version, probably fine not to!

Finally: execution. You’ve got a plan you believe in, all the research has been done. Send Claude off to go execute and set the mode to auto-accept. You can go grab a cup of coffee now. If the planning was good enough, it should work 🤞 Come back when it’s done and verify. If the plan worked out you’re done! If it did not, fight the temptation to accept Claude’s quick fix suggestions. Go back to planning, turn off auto-accept. Reject any attempts to just “make it work”. This is where things go off the rails. Stop and tell Claude to step back and think it through. Don’t let it make edits or go back into plan mode. Work with it until you feel like you have a good understanding of what went wrong, how we can fix it, and what the implications are of that fix. Then once you’re confident in the solution: back to execution.

That’s it. Plan → Execute. If you’re not done yet, back to plan. Put yourself squarely in the loop.

Why this works

Human communication, human language, is ambiguous and we often end up in situations where you and another person think you agree on something, but you actually have completely different understandings of what that thing is. It’s only when you dig into the details that you realize your lack of alignment.

LLMs use this lossy and vague form of communication to do everything. By forcing every detail into the context and the plan you remove ambiguity and increase the chances of the tool doing the thing you want it to do.

And why reject Claude’s quick fixes as the end? This is all anecdotal, but this is where I experience the most friction. Instead of stepping back and reflecting over the failures and issues, and trying to figure out the core of the issue, in this situation Claude seems to default to try to quickly solve it, without putting in much effort. Who knows why, but you can see the pattern if you look for it. Break out of that failure loop by asking it to think.

Human in the loop

This is moving in the opposite direction of Ralph Wiggum or Gas Town. Instead of brute forcing it and having the LLM bash its virtual head against the wall, you take on the job of keeping it on track. Not by sitting by the computer watching it, not by reviewing every individual diff before approving, but by inserting yourself at the crucial points in the development flow. Don’t let it execute until you’re confident the plan is right. Don’t let it fall into the trap of quick fixes.

You do have to jump back and forth between sessions, switching context, but you’re gonna have lots of opportunities to let a few sessions load context or investigate the codebase while you review another one’s output, leading to pretty effective parallelism. LLMs don't make you more productive without you investing in finding workflows that make the tool work for you. Hopefully this helps you find yours!

The models will get better. You'll still need to set the direction.

Written by Johanna Larsson. Thoughts on this post? Find me on Bluesky at @jola.dev or why not give it a vote on Bubbles.