diff --git a/guides/20260531_openhands_mastering_advanced.md b/guides/20260531_openhands_mastering_advanced.md new file mode 100644 index 00000000..7764b1f5 --- /dev/null +++ b/guides/20260531_openhands_mastering_advanced.md @@ -0,0 +1,202 @@ +# Mastering OpenHands: Advanced Topics and Optimization + +Once you’ve used OpenHands on a few real tasks, the next step is not just learning more features — it’s making the workflow faster, more reliable, and easier to repeat. + +This guide covers advanced habits and optimization techniques that help teams get better results from OpenHands over time. + +## The mindset shift + +The biggest improvement comes when you stop treating the tool like a one-off assistant and start treating it like part of an engineering system. + +That means thinking about: + +- task shape +- prompt quality +- repo readiness +- environment stability +- validation strategy +- repeatability + +If those pieces are in place, the agent can do much better work. + +## 1. Define task boundaries clearly + +A large part of performance comes from task design. + +Good task boundaries: + +- one feature +- one bug +- one refactor +- one workflow +- one test target + +Bad task boundaries: + +- fix everything in the repo +- make the app better +- improve the codebase somehow + +The more specific the target, the less time gets wasted on guesswork. + +## 2. Use repo conventions as leverage + +The agent works better when the repo already has clear patterns. + +Helpful conventions include: + +- consistent file naming +- predictable project structure +- standard test commands +- clear README/setup docs +- typed APIs where possible +- linting and formatting defaults + +You are not just helping humans when you standardize — you’re helping the agent reason faster too. + +## 3. Reduce environment friction + +A slow or flaky environment destroys productivity. + +To optimize the workflow: + +- keep dependencies reproducible +- avoid manual setup steps where possible +- pin versions when needed +- document required env vars +- make startup scripts deterministic + +When the environment is stable, the agent can spend time solving the problem instead of fighting setup issues. + +## 4. Prefer small iteration cycles + +The highest leverage comes from short loops. + +A strong loop looks like this: + +1. inspect the task +2. make a small change +3. validate immediately +4. fix failures +5. repeat + +Long untested edits are usually where problems hide. + +## 5. Use tests as a steering wheel + +Tests are not just for verifying correctness after the fact. They also guide the implementation. + +Useful habits: + +- run the narrowest test that proves the change +- add regression coverage for the specific issue +- keep tests close to the behavior being changed +- don’t wait until the end to validate + +If a task is testable, the agent should use that test signal early. + +## 6. Avoid unnecessary scope expansion + +A common failure mode is “while I’m here, I’ll also fix…” + +That sounds efficient, but it usually slows everything down. + +Better approach: + +- solve the assigned issue first +- keep unrelated cleanup separate +- open a follow-up if you spot more work + +That keeps the PR reviewable and the workflow predictable. + +## 7. Use structured prompts + +Good prompts are usually structured, not poetic. + +A practical format is: + +- goal +- repo or file context +- constraints +- acceptance criteria +- test expectations + +Example: + +> Update the auth middleware so unauthenticated requests redirect to `/login`. Add a regression test. Do not change unrelated routes. + +That gives the agent something concrete to execute. + +## 8. Make validation part of the plan + +Don’t treat validation as an afterthought. + +Before starting, know how you’ll confirm success: + +- unit test +- integration test +- lint check +- manual repro +- build verification + +The best workflows define the success condition up front. + +## 9. Keep the output reviewable + +A good OpenHands result should be easy for a human to inspect. + +That means: + +- focused diffs +- clear commit messages +- no hidden unrelated changes +- explicit reasoning in the PR body +- tested behavior + +The more readable the output, the less review friction you create. + +## 10. Tune for the team, not just the task + +Optimization is not just about one agent run. It’s about the whole team getting faster. + +Useful team-level improvements: + +- shared prompt templates +- common repository setup notes +- known-good validation commands +- branch naming conventions +- standard PR structure + +Once those conventions exist, every future task gets easier. + +## Advanced workflow example + +Here’s a strong pattern for a more complex task: + +1. Start with a short issue summary. +2. Identify the files likely involved. +3. Check the current behavior. +4. Make the smallest safe code change. +5. Add a regression test. +6. Run the narrowest validation first. +7. Expand validation only if needed. +8. Summarize the change clearly in the PR. + +That workflow keeps the agent focused and makes the result easier to trust. + +## Common optimization mistakes + +- Overloading the task with too many requirements. +- Skipping tests because the change seems obvious. +- Letting the environment drift. +- Using vague prompts. +- Changing unrelated files. +- Ignoring repo conventions. + +If you see one of these, it usually means the workflow needs more structure, not more effort. + +## Final takeaway + +OpenHands gets much better when you optimize the workflow around it. + +The biggest wins come from small tasks, strong conventions, immediate validation, and clean prompts. Once your team has that foundation, OpenHands becomes a lot more than a novelty — it becomes part of how work actually gets shipped.