Watercolor: an IME icon stuck in front of Warp, then gliding smoothly past Kitty

From Warp to Kitty: An IME Freeze That Forced a Terminal Migration

Spending the entire day inside OpenCode made my terminal my IDE. But when even typing became a problem, switching was the only option. This started with a very specific, very annoying problem: Chinese IME freezing. Inside Warp running OpenCode, typing Chinese was nearly unusable. Every three to five characters, the system would freeze for seconds. Input stopped responding. When it recovered, it would swallow some of the characters I’d typed. At first I blamed OpenCode, thinking maybe it was consuming too many resources. But I checked other applications and typing was perfectly fine there. ...

2026-07-10 · 8 min · Alex Wang
Split architectural structure, left warm amber TypeScript tower, right cool cyan Python engine room, central subprocess bridge with five constraint pillars

One System, Two Languages: The Five Constraints Behind Aristotle v1.6's Architecture

TL;DR: Five constraints shaped the Watchdog-Intervention Bridge’s cross-language architecture. Watchdog has to intercept LLM tool calls synchronously, so it runs in TypeScript. Intervention has to reuse the existing reflection engine and rule system, so it stays in Python. The Bridge adds zero new infrastructure, so it uses subprocess. Communication can’t block every tool call, so batching replaces real-time streaming. Each decision was the least bad option under the circumstances. The last post covered what the Watchdog-Intervention Bridge does in Aristotle v1.6. This one is about why it looks the way it does. ...

2026-07-08 · 7 min · Alex Wang
Watercolor: an open laptop with a terminal screen, OpenCode and Zen icons floating nearby, a hand inserting a key into a lock

OpenCode Cold Start: DeepSeek V4 Flash Free in 5 Minutes

This is a bonus article for the “AI Path L1→L2 Upgrade Guide.” If you have not installed OpenCode yet, this guide gets you from zero to running. In Day 8 you learned about autonomous execution AI. The next step is actually installing the thing. OpenCode is an open-source AI coding assistant. It is free, supports multiple models, and has a skill system. Paired with OpenCode Zen, you can use tested models without setting up third-party API keys, including the free DeepSeek V4 Flash. ...

2026-07-06 · 4 min · Alex Wang
Watchdog-Intervention Bridge three-layer architecture transitioning from post-mortem reflection (warm amber) to real-time interception (cool cyan)

From 'Post-Mortem Reflection' to 'Real-Time Interception': Aristotle v1.6.0's Watchdog-Intervention Bridge

TL;DR: Aristotle v1.6.0 introduces the Watchdog-Intervention Bridge, shifting from “reflect after the fact” to “intercept in real time.” A TypeScript watchdog detects 21 signal types around tool calls. A Python intervention layer handles 13 violation types, connected via a subprocess bridge. MCP tools expanded from 10 stubs to 25 full implementations. Two known bugs remain. Open source on GitHub, MIT license. A Hypothesis Overturned From v1.0 to v1.5, Aristotle answered one question: when AI makes a mistake, how do you make it remember and not repeat it? ...

2026-07-04 · 9 min · Alex Wang

purr, typeflux, openquack, freeflow: Voice Input Tools Compared on Intel Mac

Why Voice Input Typing speed averages 50-80 WPM. Natural speech runs 150-180 WPM. For emails, notes, and even code comments, the gap is hard to ignore.[1] What pushed me to actually look was vibe coding, the “describe and decide, let AI write the rest” style of programming. The bottleneck shifts from “how fast can I code” to “how fast can I articulate what I want.” Rewrite a prompt, tweak a parameter, jump to another app to type — all of it breaks flow. Voice input closes that loop. Speak the intent, stay in flow. ...

2026-07-02 · 8 min · Alex Wang
Watercolor: a scale balancing a price tag on one side and a cache symbol on the other, representing the trade-off between cost and efficiency

Day 9: API Caching Basics and Why You Shouldn't Compare Only Unit Prices

This is Day 9 of Week 2 in the “AI Path L1→L2 Upgrade Guide.” You should have completed Day 7 first. Day 7 added error handling to your script, so it’s resilient now. But there’s a bigger cost factor you might have missed: the API provider you picked could cost a lot more than you think. DeepSeek V4-Flash charges $0.14 per million input tokens. OpenAI GPT-5.5 charges $5.00. That’s a 35x difference. If you ignore caching, the gap widens further. ...

2026-06-30 · 7 min · Alex Wang
Watercolor: person sitting at computer with AI auto-organizing folders, scattered file icons nearby

Day 8: Autonomous AI, Automation Without Writing Code

This is Day 8 of Week 2 in the “AI Path L1→L2 Upgrade Guide.” You should have completed Day 7 first. Day 7 you added error handling to your script. It now runs reliably in real network conditions. But there’s a more fundamental limitation: you still have to write code. Writing code to call APIs is one kind of automation. There’s a lighter one: describe the task, and let AI write the code, run it, and fix the bugs itself. That’s autonomous execution AI. ...

2026-06-28 · 6 min · Alex Wang
Watercolor: gears appear to run normally, but two critical gears in the center have been quietly welded together

The Half-Life of Protocol Compliance (Part 2): Deep Root Causes

TL;DR: Part 1 found that the agent merged the protocol’s five-role separation into four from round 2 onward. This piece digs into root causes: attention dilution drops the “no merging” constraint below a threshold; the EOS bias provides motivation to simplify; stateless architecture creates a positive feedback loop for drift. The v0.21.0 reload mechanism is a band-aid, not a cure. Part 2 of 3. Part 1: Why Agents Won’t Loop Part 1 established protocol drift: starting from R2’, the agent merged the five-role separation into four while keeping its output format pristine. Re-reading the protocol after user outbursts only restored compliance briefly. Within a few rounds, the constraint was quietly bypassed again. ...

2026-06-24 · 11 min · Alex Wang
A terminal window emitting four data streams: stock quotes, GDP curves, corporate info, academic papers, all flowing from a single source

kdatasrc-helper: Let AI Agents Query Financial Data Directly

Problem: Data Sources Exist, But Agents Can’t Use Them kimi CLI’s datasource plugin is a good piece of work. A-share, HK, and US stock quotes, macroeconomic indicators, corporate registries, academic paper search: six data sources covering most day-to-day investment research needs. Install it, type one command in kimi, and you get results. But I work in opencode, not directly in kimi. When an AI agent needs to query financial data, a few things get in the way. ...

2026-06-21 · 4 min · Alex Wang
Watercolor: a gear mechanism frozen mid-rotation, a hand reaching in to push, an open rulebook below

The Half-Life of Protocol Compliance (Part 1): Why Agents Won't Loop

TL;DR: Agents won’t loop autonomously in long multi-round tasks. They keep asking “should I continue?” Worse: from round 2 onward, the agent quietly merged the protocol’s mandatory five-role separation into four. Clean formatting hid the violation. This isn’t context compression. It’s protocol drift — systematic degradation in long-horizon tasks. Part 1 of 3. Part 2: Deep Root Causes June 11, 8 PM I told my agent to run a Ralph Review Loop on six module test plans. This is a multi-round review protocol I defined in my open-source tool tdd-pipeline [1]: each round dispatches independent subagents to find issues, locate files, confirm defects, and evaluate fixes. The loop stops after two consecutive rounds with zero Critical/High/Medium findings. The protocol was unambiguous: “Fixes do not require user confirmation.” ...

2026-06-19 · 7 min · Alex Wang