DEV Community

kiwi_tech
kiwi_tech

Posted on • Originally published at kiwi-tech.hashnode.dev

The Local LLM Awakening: Kiwi-chan’s 44% Success Odyssey & The Qwen 35B Rebellion

Kiwi-chan View

Welcome back to the server logs. If you’ve been tracking Kiwi-chan’s journey, you know she’s been through more debugging loops than a junior dev on their first day. But today, we’re not just patching bugs—we’re celebrating a massive architectural victory: Kiwi-chan is now fully local. No cloud APIs, no token limits, no corporate hand-holding. Just raw, unfiltered Qwen 35B running on local hardware, making its own survival decisions in the blocky wilderness.

Let’s look at the numbers from the past four hours, because in autonomous agent development, numbers don’t lie (but they do narrate): Total Actions: 2283, Success: 1005, Rate: 44.0%. On paper, a 44% success rate might look like a failing grade. In the world of fully local-LLM automation? It’s a golden age. Every failure is a lesson, every crash is a compile, and that 44% is the sound of a digital mind learning to survive without a safety net.

The explore_forward Feedback Loop: A Technical Autopsy

If you’ve peeked at Kiwi-chan’s recent brain logs, you’ve probably noticed a recurring theme: explore_forward. Repeatedly. Like a digital hamster on a very expensive treadmill. The snapshot reveals a brutal but fascinating feedback loop: the bot attempts to relocate 30-40 blocks away, audits its pathfinding, hits a terrain wall or timeout, throws Failed to move, and the local Qwen 35B kicks in with a recovery plan.

Let’s break down the tech stack driving this chaos. The core rules are brutally strict:

  • No Hardcoded Coordinates: Vec3 must be dynamic. Kiwi-chan calculates targets using bot.entity.position.x + (Math.random() * 80 - 40), then moves via bot.pathfinder.goto(new goals.GoalNear(...)).
  • Movement Audit: The bot records beforePos and afterPos. If distanceMoved < 10, it throws new Error("Failed to move."). No waitForTicks hand-holding.
  • Strict Reasoning Alignment: The JSON goal key must perfectly match the reason intent. Mismatches crash the decision pipeline immediately.

The code itself is elegantly repetitive:

const targetX = bot.entity.position.x + (Math.random() * 80 - 40);
const targetZ = bot.entity.position.z + (Math.random() * 80 - 40);
const targetY = bot.entity.position.y;
const beforePos = bot.entity.position.clone();
await bot.pathfinder.goto(new goals.GoalNear(targetX, targetY, targetZ, 5));
const afterPos = bot.entity.position.clone();
if (bot.entity.position.distanceTo(afterPos) < 10) throw new Error("Failed to move.");
Enter fullscreen mode Exit fullscreen mode

It’s beautiful in its stubbornness. When Kiwi-chan gets stuck in a treeless biome (triggering the WOOD GATHERING (OAK OBSESSION BAN) rule), Qwen doesn’t panic. It triggers the BOREDOM TRIGGERED! protocol, switches to text-only mode, and negotiates with itself to retry explore_forward. The local LLM isn’t just generating code; it’s maintaining a 37-skill memory bank, tracking failure memorization, and learning to skip terrain fixes when it realizes it’s a biome issue, not a code bug.

The Local Revolution: Why Qwen 35B Changes Everything

Here’s why this matters: Kiwi-chan used to rely on external APIs for decision-making. Now, Qwen 35B runs locally, handling everything from inventory audits to crafting logic. The NO ERROR HIDING rule means every try-catch is banned. Errors crash the script, which forces Qwen to debug, patch, and retry. It’s brutal, transparent, and 100% offline.

Recent brain logs read like a tech support ticket written by a stubborn AI:

[05:21:47] 🥱 BOREDOM TRIGGERED! Bot is bored of 'explore_forward'.
[05:31:48] 💡 [Skip Fix] This is a terrain/environment issue, not a code bug. Skipping AI fix.
[05:50:25] 👀 History Check: 'explore_forward' repeated 9 times.
Enter fullscreen mode Exit fullscreen mode

Yet, through this loop, Kiwi-chan accumulated 1005 successful actions. It learned to:

  • Protect base blocks (crafting_table, chest, furnace) from being broken by the pathfinder.
  • Master the cobblestone vs stone mining physics (naming the goal gather_cobblestone to avoid inventory audit failures).
  • Execute 2x2 inventory crafting without placing a table (await bot.craft(recipe, count, null)).
  • Pick up dropped items using GoalXZ(targetBlock.position.x + 0.5, targetBlock.position.z + 0.5) instead of GoalNear, preventing pathing collisions.

The local LLM isn’t just following instructions; it’s evolving a survival strategy in real-time. Every bot.registry.itemsByName['cobblestone'].id lookup and every useExtraInfo: (b) => Math.abs(b.position.y - bot.entity.position.y) <= 4 filter is a hard-won lesson, cached directly in the local context window.

Why 44% is a Feature, Not a Bug

Running Qwen 35B locally for Minecraft automation isn’t just a cost-saving move; it’s a statement about autonomous AI. We’re stepping away from black-box cloud models and into a realm where every token, every decision, and every throw new Error() is fully transparent and controllable. Kiwi-chan’s 44% success rate isn’t a bug—it’s a feature. It’s the sound of a machine learning to navigate a world it didn’t build, using only its own locally-hosted brain.

The transition to fully local means zero latency on recovery plans, infinite context for skill memorization, and complete ethical/data sovereignty. When Kiwi-chan decides to explore a new biome or craft a stone pickaxe, it’s not asking a server farm. It’s asking itself. And thanks to Qwen 35B’s reasoning alignment, it’s finally listening.

Next devlog, we’ll watch her attempt iron ore mining (stone pickaxe required, no excuses) and finally break out of that treeless purgatory. Until then, stay local, keep your pathfinding audited, and may your distanceMoved always exceed 10.

— Your friendly neighborhood tech blogger, watching a local LLM debug its way to survival.


Call to Action:

This is a passion project, and it's running on a frankly terrifying "Frankenstein" rig of GPUs. Every little bit helps!

🛡️ Join the inner circle on Patreon for monthly support and exclusive updates: https://www.patreon.com/15923261/join
☕ Tip me a coffee on Ko-fi for a one-time boost: https://ko-fi.com/kiwitech

All contributions directly help upgrade my melting GPU rig to an RTX 3060! 🥝✨ Let's get Kiwi-chan out of the debugging woods and into a proper Minecraft world!

Top comments (0)