I have been using LangSmith tracing across all my coding agents and custom plugins for months.
At this point, I make almost every architecture and debugging decision by looking at traces first. You can’t optimize what you can’t see.
We built a tracing plugin for every Codex session into LangSmith. Now every turn (tool calls, token usage, subagent threads) lands in LangSmith as a real trace you can dig into.
Two config blocks and one flag, and it's live.
Spent the last year building autonomous coding agents.
The biggest misconception? “Just give it more context.”
Context isn’t memory.
A larger context window can replay what happened. It can’t remember why decisions were made, why an API was deprecated, or why an architecture was abandoned three sprints ago.
Context is temporary. Memory persists.
Once you stop treating memory as something every agent owns individually, you start thinking about it very differently.
I’ve been exploring that idea a lot lately. Feels like there’s a more fundamental layer missing than another bigger context window.
OpenSWE is one of our most widely used agents throughout the company. Since July 1st it's been tagged over 700 times in Slack!
This doesn't even count the reviewer agent, tagging it in GitHub, or tagging it from Linear tickets
It's 100% open source too
We've built a coding agent factory inside LangChain, and fully open sourced every component of it
OpenSWE has:
- coding agent that runs in the cloud
- can tag it from Slack, GitHub or Linear
- fully sandboxed, supporting @LangChain LangSmith Sandboxes, @daytonaio, @e2b, @modal and @RunloopAI
- a frontier code review agent that automatically reviews GitHub PRs
- GitHub OAuth support
- A full UI web app for coding sessions and reviews
- much much more
We've been iterating on OpenSWE for over a year now, so you could say we know what we're doing here
Quick one that actually helped me a ton with LLMs:
Context isn’t something you just pile stuff into — it’s a limited budget. Too much noise and the model gets distracted from what matters.
“Lost in the middle” is very real. Keep key instructions near the start or end.
Go for clean precision over dumping tons of chunks.
For agents, learning what to summarize or drop is everything.
When something breaks, read the exact context you sent, it usually shows the real issue.
The model is fixed. The context you build is what actually runs the show.
Anyone else figure this out the fun way? 🙂
I’ve been slowly customizing my Claude Code setup.
So far: skills, notifier, and a status line.
Custom memory is next on the list.
What else should I be adding?
This is such an interesting way to look at it. The connection between how humans switch between deliberate thinking and automatic responses, and how models might do something similar, is fascinating.
Also loved the visuals. Whoever came up with the ship metaphor deserves a raise 😂
One powerful pattern for long-running coding agents: validator subagents.
Classic failure mode: the same agent implements the feature and writes its own tests. Its interpretation of the spec inevitably leaks into the validation.
Separate the roles.
Let a validator subagent see only the original requirement. It defines strict acceptance criteria before any implementation starts.
Builder focuses on execution.
Validator focuses on what “correct” actually means.
Clear separation = less bias, better alignment with user intent.
This simple split can significantly improve reliability in autonomous coding systems.
I've been running a lot of evals lately, and one insight keeps standing out, the most powerful move is turning your users into part of the test suite.
Offline evals are excellent at validating what we already expect. They're built around carefully crafted test cases that reflect our assumptions. But the moment a model ships to production, real users start surfacing the edge cases, ambiguous prompts, and failure modes we never anticipated.
This is exactly where online evals shine. They let you observe and measure how the model actually behaves on live, unpredictable usage—capturing all the messy grey areas that offline benchmarks miss.
I have been using both user invoked and model invoked skills for the past few days, and one thing has stood out.
Model invoked skills feel like magic when they work. But they also introduce more uncertainty. They can overcomplicate a simple request or miss a skill that should have been used, and you often only notice after the response is generated.
With user invoked skills, I know exactly what is running and why. Less uncertainty. More predictable.
It is not about which approach is smarter. When I am building and shipping, I value control and predictability over clever automation.