<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>沉麟</title><description>Chenlin&apos;s personal site — technical writing, notes, photography and work.</description><link>https://duchenlin.top/</link><language>en</language><item><title>The story of that orb and me</title><link>https://duchenlin.top/en/notes/story-of-my-orb/</link><guid isPermaLink="true">https://duchenlin.top/en/notes/story-of-my-orb/</guid><description>From copying an existing orb outright to watching Siri&apos;s frame by frame. There was design this fine in an era with no AI at all. And I only ever wanted to hand the work off — today&apos;s models can&apos;t carry that. Whether to learn the fundamentals: I&apos;ve known the answer all along.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>随笔</category><category>思考</category><category>AI</category></item><item><title>Nine revisions of a 148px orb: what you can&apos;t state in full, AI can&apos;t get right</title><link>https://duchenlin.top/en/posts/orb-nine-revisions/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/orb-nine-revisions/</guid><description>A stronger visual model, a deeper skill, the industry&apos;s finest prototype in hand — none of it changes one thing: narration is lossy, and the model can only reconstruct the part I actually said. Nine revisions didn&apos;t buy me a prettier orb. They bought me a spec that didn&apos;t exist on day one.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>设计</category><category>方法论</category><category>Agent</category></item><item><title>Routing across several agents: five scored axes, capability as a gate, and why no data means 0.5</title><link>https://duchenlin.top/en/posts/agent-routing/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/agent-routing/</guid><description>Which agent should take a task. Scoring is the easy part; the hard part is telling “never tried” apart from “fails every time”, and stopping a broken backend from winning on stale statistics.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>Agent</category><category>架构</category><category>Python</category></item><item><title>“Say a sentence and a command runs on my machine” — that gate has five layers</title><link>https://duchenlin.top/en/posts/voice-shell-gate/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/voice-shell-gate/</guid><description>Wiring a voice assistant to a terminal is the largest risk surface in the project. Off by default, shape-checked, allowlist matched per token, verified speaker, confirmation every time — plus one truthiness bug the tests caught.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>安全</category><category>Python</category><category>语音</category></item><item><title>Building a personal site with Astro that will not gather dust</title><link>https://duchenlin.top/en/posts/astro-personal-site/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/astro-personal-site/</guid><description>The whole record from nothing to live: why a static site, how the content is organised, and the specific trade-offs made for load speed inside China.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>Astro</category><category>前端</category><category>建站</category></item><item><title>On buying the domain</title><link>https://duchenlin.top/en/notes/owning-a-domain/</link><guid isPermaLink="true">https://duchenlin.top/en/notes/owning-a-domain/</guid><description>A thought that may be out of date: having an address of your own matters more than having an account anywhere.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>随想</category></item><item><title>The code is written by AI, so I graded evidence into seven levels</title><link>https://duchenlin.top/en/posts/evidence-levels/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/evidence-levels/</guid><description>It costs a coding agent almost nothing to report “done”. So the verification levels went into the project constitution: low-grade evidence may not be passed off as high-grade, and no implementer approves their own implementation.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><category>方法论</category><category>测试</category><category>Agent</category></item><item><title>The boundaries in binary search — I re-derive them every single time</title><link>https://duchenlin.top/en/posts/binary-search-boundaries/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/binary-search-boundaries/</guid><description>After all these years I still cannot remember how to take mid, or whether the loop condition is &lt; or &lt;=. Memorising the template loses to holding on to one invariant.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><category>算法</category><category>笔记</category></item><item><title>SQLite FTS5 cannot find Chinese — I measured that before writing a line</title><link>https://duchenlin.top/en/posts/fts5-chinese/</link><guid isPermaLink="true">https://duchenlin.top/en/posts/fts5-chinese/</guid><description>unicode61 treats a whole run of Han characters as one token. The way around it is not a different tokeniser but indexing derived tokens — and here is why the query side has to drop single characters.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><category>SQLite</category><category>全文检索</category><category>Python</category></item></channel></rss>