[{"data":1,"prerenderedAt":265},["ShallowReactive",2],{"\u002Fblog\u002Ftui-cognitive-bandwidth\u002F:en":3,"\u002Fblog\u002Ftui-cognitive-bandwidth\u002F-surround:en":160,"blog-all-posts:en":161},{"id":4,"title":5,"author":6,"body":10,"date":142,"description":143,"extension":144,"image":145,"locale":146,"meta":147,"minRead":148,"navigation":149,"original":150,"path":151,"pinned":150,"seo":152,"source":153,"sourceUrl":23,"stem":154,"tags":155,"updated":145,"__hash__":159},"blog\u002Fblog\u002Ftui-cognitive-bandwidth.en.md","TUI Is Killing Your Cognitive Bandwidth: Time to Shatter the \"Geek Filter\" in AI Coding",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":133},"minimark",[13,28,31,34,37,42,45,52,58,64,67,71,74,81,84,88,94,97,100,104,107,110,113,117,120,123,130],[14,15,16],"blockquote",{},[17,18,19,20,27],"p",{},"The core argument first appeared on ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fx.com\u002Frealchendahuang\u002Fstatus\u002F2087949416808518106",[25],"nofollow","X","; this is the full-length version.",[17,29,30],{},"A pile of AI coding agents are rushing to ship TUIs these days, and Claude Code owes a big share of the blame for that trend. It made conversing with an AI in the terminal to write code an art form — but it also set a taste and a path dependence: a \"truly advanced\" coding agent must default to a terminal interface; the web version is an afterthought, even mocked as \"not programmer enough.\"",[17,32,33],{},"And the result? Build a complicated TUI first — all the colors, status bars, shortcuts, and mode switching — then call it \"immersive,\" \"efficient,\" and \"respectful of programmers.\"",[17,35,36],{},"Really?",[38,39,41],"h2",{"id":40},"you-think-youre-conversing-but-youre-wrestling","You Think You're Conversing, but You're Wrestling",[17,43,44],{},"For the small group who live in the terminal all day, sure, TUI feels great. For many more people, it's a wall built on purpose. When you collaborate with an agent through a TUI, you're constantly doing three things:",[17,46,47,51],{},[48,49,50],"strong",{},"Recalling shortcuts and modes."," Every tool has its own keymap. New users are lost; even veterans relearn every tool's personal habits.",[17,53,54,57],{},[48,55,56],{},"Locating information inside a scrolling stream of characters."," State isn't laid out for you — it's buried in a timeline you excavate by scrolling and searching.",[17,59,60,63],{},[48,61,62],{},"Praying you haven't stumbled into some weird state."," Mode switching is invisible; you often don't know which mode you're in until something breaks.",[17,65,66],{},"That's not interaction anymore — that's wrestling with an interface.",[38,68,70],{"id":69},"information-density-is-not-information-efficiency","Information Density Is Not Information Efficiency",[17,72,73],{},"The favorite word of TUI defenders is \"density.\" But push information density to the extreme and you pay for it by trampling readability and recoverability to the minimum.",[17,75,76,77,80],{},"A truly efficient interface should ",[48,78,79],{},"spread the state out in front of you",", letting your eyes and spatial sense do the understanding — which task is running, which session is waiting for input, which file got changed, all visible at a glance. Instead of forcing everything into short-term memory while your brain maintains an invisible map of \"current system state.\"",[17,82,83],{},"Human working memory has four to seven slots. The TUI interaction model essentially spends your most precious cognitive resource on \"remembering interface state\" instead of \"thinking about the problem.\"",[38,85,87],{"id":86},"it-also-cultivates-a-bad-habit","It Also Cultivates a Bad Habit",[17,89,90,91],{},"Worse, the TUI ecosystem cultivates a broken value judgment: ",[48,92,93],{},"treating mastery of a tool's keymap as an ability in itself.",[17,95,96],{},"So people spend enormous energy adapting to the interface instead of thinking about the problem. The measure of a programmer becomes \"can you recite these shortcuts\" rather than \"can you decompose the problem clearly.\"",[17,98,99],{},"A good tool should lower the cost of thinking, not move the cost of thinking into \"how to operate this interface.\"",[38,101,103],{"id":102},"web-ui-can-be-fast-and-clean","Web UI Can Be Fast and Clean",[17,105,106],{},"Some say the web is slow and not \"native.\" It's 2026 — that argument is long dead.",[17,108,109],{},"A web UI can be just as fast and clean: install it as a PWA and it's nearly indistinguishable from a desktop client, with easier updates — no manual upgrades, just refresh for the latest version. Long sessions, parallel tasks, visualized task states — these are exactly the strengths of browser DOM, not character streams.",[17,111,112],{},"My own daily setup is a web interface like OpenChamber on an OpenCode core, under long-term heavy use — rock solid. If I nitpick, the occasional small web bug never affects long-term use, whereas certain TUI mode switches have bitten me plenty of times.",[38,114,116],{"id":115},"tools-exist-to-serve-people-not-to-prove-whos-more-hardcore","Tools Exist to Serve People, Not to Prove Who's More \"Hardcore\"",[17,118,119],{},"Claude Code itself is excellent, no dispute. But it popularized the \"TUI is the orthodox way\" aesthetic, and the imitators that followed are worse — they skip interaction design entirely and treat \"living in the terminal\" as proof of sophistication.",[17,121,122],{},"Dressing up anti-human interaction as sophistication — it's genuinely hilarious.",[17,124,125,126,129],{},"Tools exist to serve people. The standard should always be: ",[48,127,128],{},"did it lower the total cost of getting your work done?"," If an interface makes you spend energy \"wrestling with the interface,\" it's a liability no matter how \"hardcore\" it looks.",[17,131,132],{},"Next time you pick a coding agent, take the filter off first.",{"title":134,"searchDepth":135,"depth":135,"links":136},"",2,[137,138,139,140,141],{"id":40,"depth":135,"text":41},{"id":69,"depth":135,"text":70},{"id":86,"depth":135,"text":87},{"id":102,"depth":135,"text":103},{"id":115,"depth":135,"text":116},"2026-09-09","A pile of AI coding agents are rushing to ship TUIs, stuffing interaction back into the 1980s terminal paradigm and calling it \"immersive\" and \"respectful of programmers.\" This piece breaks down the three mechanisms by which TUI systematically lowers your cognitive bandwidth — and why Web UI is the right answer.","md",null,"en",{},7,true,false,"\u002Fblog\u002Ftui-cognitive-bandwidth",{"title":5,"description":143},"x","blog\u002Ftui-cognitive-bandwidth.en",[156,157,158],"AI Coding","Interaction design","Essay","SArTpobj9jKwl1X1Z4NgVGfnQ6mDq5OFuVEhBgzJJPY",[145,145],[162,171,180,189,195,203,209,216,224,230,237,246,248,256],{"path":163,"title":164,"description":165,"date":166,"minRead":167,"tags":168},"\u002Fblog\u002Fagent-harness-selection","After tinkering with Pi Agent, OMP, Codex, and ZCode, why I finally chose OpenCode + OpenChamber","A retrospective on choosing an Agent Harness: three criteria — GUI experience, vendor lock-in, and freedom for secondary development — ruled out Pi Agent, OMP, Codex, and ZCode, and finally settled on the OpenCode core + OpenChamber interface.","2026-08-06",6,[169,170],"AI Agent","Tool selection",{"path":172,"title":173,"description":174,"date":175,"minRead":167,"tags":176},"\u002Fblog\u002Fcloudflare-broke-stack","2026 indie dev best practices: the Cloudflare \"broke-ass all-in-one\" stack","The zero-cost tech stack for indie developers: Codex for writing code, GitHub for version control, Stripe for payments, TanStack Start for frontend, Hono + Workers for backend, D1 for database, R2 for storage, KV for caching — all running on Cloudflare.","2026-06-15",[177,178,179],"Cloudflare","Indie development","Tech stack",{"path":181,"title":182,"description":183,"date":184,"minRead":167,"tags":185},"\u002Fblog\u002Fdeepseek-api-web-search","DeepSeek's API has built-in web search — freeload the official search via the Responses API","DeepSeek built web search straight into the API: call deepseek-v4-flash through the Responses interface and declare the web_search tool. No third-party search engine integration, no search API key required.","2026-08-05",[186,187,188],"DeepSeek","API","AI tools",{"path":190,"title":191,"description":192,"date":184,"minRead":148,"tags":193},"\u002Fblog\u002Fdeepseek-v4-flash-review","DeepSeek V4 Flash stable release, hands-on: cheap, fast, 1M context, built-in search","A few days deep-diving the stable DeepSeek V4 Flash release: aggressively cheap, lightning fast, 1M context, official built-in web search, fully open source. The one weakness is multimodality — but you can patch it by combining other models.",[186,194,188],"Model review",{"path":196,"title":197,"description":198,"date":175,"minRead":199,"tags":200},"\u002Fblog\u002Ffree-cloudflare","How free users can squeeze Cloudflare dry — how far does the free tier actually get you?","Cloudflare's free tier can carry an entire personal internet infrastructure: DNS, CDN, Pages, Workers, KV, D1, R2, email, Tunnel, AI Gateway and more.",8,[177,201,202],"Free tier","Deployment",{"path":204,"title":205,"description":206,"date":142,"minRead":199,"tags":207},"\u002Fblog\u002Fmodel-harness-decoupling","The First-Party Harness Isn't Always the Best Answer: In the Open-Model Era, Pick Your Model and Harness Separately","Using Claude? Go Claude Code. In the open-model era that instinct deserves an upgrade. The first-party advantage is real, but training a good model and building a good harness are two different kinds of engineering — here's why models and harnesses are now separable choices, plus a positioning map of five harnesses.",[169,208,170],"Harness",{"path":210,"title":211,"description":212,"date":142,"minRead":199,"tags":213},"\u002Fblog\u002Fopencode-productive-stack","Stable, Fast, Productive, Cheap: My AI Coding Stack, Documented","OpenCode + OpenChamber + two DeepSeek V4 Flash subscriptions: 15 projects running code simultaneously and the quota barely moved. The full configuration laid out — context pruning, layered memory, desktop automation, and the \"stick with the original pairing\" lesson.",[214,156,215],"OpenCode","Configuration",{"path":217,"title":218,"description":219,"date":220,"minRead":221,"tags":222},"\u002Fblog\u002Fproduct-faxin-principle","The founding-intention principle: why indie developers must learn to let go","Why do you set out? Who do you set out for? Which problem are you actually trying to solve? A product's sharpness comes from what you dare to cut.","2026-06-20",10,[223,178],"Product thinking",{"path":225,"title":226,"description":227,"date":220,"minRead":199,"tags":228},"\u002Fblog\u002Fproduct-pain-vs-itch","Don't get carried away when users say \"that's awesome\": pain points vs. itch points","Verbal approval is worth nothing. There's only one hard standard for judging demand: what the user is willing to pay.",[223,229],"Demand judgment",{"path":231,"title":232,"description":233,"date":166,"minRead":234,"tags":235},"\u002Fblog\u002Fqwen-vision-for-deepseek","Giving DeepSeek multimodality: the Qwen-3.7-Flash vision approach","DeepSeek V4 Flash has no multimodality — what do you do for image understanding? After surveying the market, the most cost-effective option right now is Qwen-3.7-Flash: recognizing an image costs almost nothing, and pairing it with V4 Flash patches the gap.",5,[186,236,194],"Multimodality",{"path":238,"title":239,"description":240,"date":241,"minRead":242,"tags":243},"\u002Fblog\u002Fsub-store-cloudflare","I moved my proxy subscription aggregation to Cloudflare","Merge multiple proxy services plus your own nodes into one single subscription, with routing rules configured server-side — clients just subscribe.","2026-06-28",4,[177,244,245],"Circumvention","Open-source project",{"path":151,"title":5,"description":143,"date":142,"minRead":148,"tags":247},[156,157,158],{"path":249,"title":250,"description":251,"date":252,"minRead":167,"tags":253},"\u002Fblog\u002Fvalue-not-external","Debating whether something has value is itself worthless","Our value is not defined by anyone. In the age of AI, how should we understand ourselves?","2026-06-18",[254,255],"AI thinking","Humanistic essay",{"path":257,"title":258,"description":259,"date":260,"minRead":261,"tags":262},"\u002Fblog\u002Fx-growth-1000-followers","Gained 1000+ followers in a little over a day — here's what I did","In June I ran my X account seriously and gained 1000+ followers in a little over a day. This post records what I did and the feedback I got.","2026-06-16",12,[263,264],"X operations","Content growth",1789752313247]