[{"data":1,"prerenderedAt":282},["ShallowReactive",2],{"\u002Fblog\u002Fopencode-productive-stack\u002F:en":3,"\u002Fblog\u002Fopencode-productive-stack\u002F-surround:en":178,"blog-all-posts:en":179},{"id":4,"title":5,"author":6,"body":10,"date":160,"description":161,"extension":162,"image":163,"locale":164,"meta":165,"minRead":166,"navigation":167,"original":168,"path":169,"pinned":168,"seo":170,"source":171,"sourceUrl":23,"stem":172,"tags":173,"updated":163,"__hash__":177},"blog\u002Fblog\u002Fopencode-productive-stack.en.md","Stable, Fast, Productive, Cheap: My AI Coding Stack, Documented",{"name":7,"avatar":8},"Chen Dahuang",{"src":9,"alt":7},"\u002Favatar.jpg",{"type":11,"value":12,"toc":151},"minimark",[13,28,35,38,43,51,54,58,61,67,73,79,85,91,97,101,104,111,115,118,121,134,140,144],[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\u002F2086611065920733305",[25],"nofollow","X","; this is the full configuration write-up.",[17,29,30,31],{},"The conclusion first: ",[32,33,34],"strong",{},"OpenCode + OpenChamber + a DeepSeek V4 Flash subscription via OpenCode Go + a DeepSeek V4 Flash subscription via Ollama Cloud.",[17,36,37],{},"I've run this stack under long-term heavy use, and it delivers four things: stable, fast, productive, cheap. I've had 15 projects open in a row, all running code at the same time, and the quota barely moved.",[39,40,42],"h2",{"id":41},"why-opencode-openchamber","Why OpenCode + OpenChamber",[17,44,45,46,50],{},"The selection journey is in ",[21,47,49],{"href":48},"\u002Fblog\u002Fagent-harness-selection","another article","; here's just the outcome-level reasoning. OpenCode is currently the most balanced multi-model core — open source, many providers, mature Client\u002FServer, desktop app, and subagents. OpenChamber is the best-polished front end I've used in an open-source harness GUI: a maintainer who truly cares, refined, stable, and its occasional small bugs never get in the way of long-term use.",[17,52,53],{},"Web interface + PWA — nearly indistinguishable from a desktop client, with updates you don't do by hand.",[39,55,57],{"id":56},"the-setup-revolves-around-three-needs","The Setup Revolves Around Three Needs",[17,59,60],{},"My OpenCode configuration is built around three things: context management, memory, and external capabilities.",[17,62,63,66],{},[32,64,65],{},"1. opencode-dcp (open source) — dynamic context pruning."," When the context hits a threshold, it automatically compresses older content into technical summaries: keeps key information, drops noise, cleans duplicates, and removes low-value content like tool errors from the context. Long sessions that don't blow up the context — this is the foundation for running long tasks all day.",[17,68,69,72],{},[32,70,71],{},"2. opencode-goal-plugin — goal management."," Adds Goal mode to long tasks, so the agent can be pulled back when it drifts.",[17,74,75,78],{},[32,76,77],{},"3. Hermes Memory — layered memory (I'll open source it on demand)."," My heaviest plugin: I ported the Hermes agent's layered memory mechanism onto OpenCode, remembering user preferences, project decisions, and past lessons across sessions. New projects don't start from zero.",[17,80,81,84],{},[32,82,83],{},"4. context7-MCP."," Look up the latest official docs for libraries and frameworks — no manual digging.",[17,86,87,90],{},[32,88,89],{},"5. grep-MCP."," Search real-world usage across all of GitHub — far more reliable than writing from memory.",[17,92,93,96],{},[32,94,95],{},"6. open-computer-use — desktop automation."," Lets the AI directly operate macOS apps: clicking, typing, scrolling, dragging, screenshots, reading the accessibility tree. Especially useful for testing and acceptance.",[39,98,100],{"id":99},"the-cost-math-how-two-subscriptions-get-spent","The Cost Math: How Two Subscriptions Get Spent",[17,102,103],{},"DeepSeek V4 Flash is the value core of this stack: genuinely smart, genuinely cheap. The OpenCode Go subscription covers the main workflow; the Ollama Cloud subscription is the second channel — together they cost less than one mainstream first-party coding plan, with higher output.",[17,105,106,107,110],{},"The claim that \"models inside third-party shells get dumbed down\" needs unpacking: ",[32,108,109],{},"the root cause of degradation is a shell that does no harness engineering for the model",", not the act of changing shells. OpenCode's support for open models is first-tier; DeepSeek V4 Flash runs in it steadily and fast — which is exactly why I dare to stack 15 projects on it.",[39,112,114],{"id":113},"the-lesson-stick-with-the-original-pairing","The Lesson: Stick with the Original Pairing",[17,116,117],{},"Friends in group chats often ask: is there a universal AI coding desktop? One that connects to every subscription and never dumb models down?",[17,119,120],{},"After talking with a few friends who tinker at high intensity every day, our conclusion was unanimous: it doesn't exist. Stick with the original pairing.",[122,123,124,128,131],"ul",{},[125,126,127],"li",{},"GPT → Codex: direct official subscription, the most stable native scheduling.",[125,129,130],{},"Gemini → AntiGravity: the speed ceiling, long windows without choking.",[125,132,133],{},"DeepSeek, GLM and other open models → open-model-friendly harnesses like OpenCode \u002F ZCode.",[17,135,136,137],{},"Put a model into a mismatched shell and you basically can't escape degraded intelligence, slower responses, and broken subscriptions. ",[32,138,139],{},"Keep each model in the seat where it's most comfortable — the combination is your stack.",[39,141,143],{"id":142},"finally","Finally",[17,145,146,147,150],{},"I've run this stack for months, and the biggest change isn't how much money I saved — it's that ",[32,148,149],{},"I dare to open tasks",". Because it's stable and cheap, opening 15 projects doesn't scare me. The value of a tool stack ultimately shows up in how much work you dare to put on it.",{"title":152,"searchDepth":153,"depth":153,"links":154},"",2,[155,156,157,158,159],{"id":41,"depth":153,"text":42},{"id":56,"depth":153,"text":57},{"id":99,"depth":153,"text":100},{"id":113,"depth":153,"text":114},{"id":142,"depth":153,"text":143},"2026-09-09","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.","md",null,"en",{},8,true,false,"\u002Fblog\u002Fopencode-productive-stack",{"title":5,"description":161},"x","blog\u002Fopencode-productive-stack.en",[174,175,176],"OpenCode","AI Coding","Configuration","lDieSfGf0bGByAhX88okksnSUOOSyR0E7KeYL7eEjvs",[163,163],[180,188,197,206,213,220,226,228,236,242,249,258,265,273],{"path":48,"title":181,"description":182,"date":183,"minRead":184,"tags":185},"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,[186,187],"AI Agent","Tool selection",{"path":189,"title":190,"description":191,"date":192,"minRead":184,"tags":193},"\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",[194,195,196],"Cloudflare","Indie development","Tech stack",{"path":198,"title":199,"description":200,"date":201,"minRead":184,"tags":202},"\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",[203,204,205],"DeepSeek","API","AI tools",{"path":207,"title":208,"description":209,"date":201,"minRead":210,"tags":211},"\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.",7,[203,212,205],"Model review",{"path":214,"title":215,"description":216,"date":192,"minRead":166,"tags":217},"\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.",[194,218,219],"Free tier","Deployment",{"path":221,"title":222,"description":223,"date":160,"minRead":166,"tags":224},"\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.",[186,225,187],"Harness",{"path":169,"title":5,"description":161,"date":160,"minRead":166,"tags":227},[174,175,176],{"path":229,"title":230,"description":231,"date":232,"minRead":233,"tags":234},"\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,[235,195],"Product thinking",{"path":237,"title":238,"description":239,"date":232,"minRead":166,"tags":240},"\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.",[235,241],"Demand judgment",{"path":243,"title":244,"description":245,"date":183,"minRead":246,"tags":247},"\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,[203,248,212],"Multimodality",{"path":250,"title":251,"description":252,"date":253,"minRead":254,"tags":255},"\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,[194,256,257],"Circumvention","Open-source project",{"path":259,"title":260,"description":261,"date":160,"minRead":210,"tags":262},"\u002Fblog\u002Ftui-cognitive-bandwidth","TUI Is Killing Your Cognitive Bandwidth: Time to Shatter the \"Geek Filter\" in AI Coding","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.",[175,263,264],"Interaction design","Essay",{"path":266,"title":267,"description":268,"date":269,"minRead":184,"tags":270},"\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",[271,272],"AI thinking","Humanistic essay",{"path":274,"title":275,"description":276,"date":277,"minRead":278,"tags":279},"\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,[280,281],"X operations","Content growth",1789752313146]