
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>TechLog</title>
      <link>https://joker1point.github.io/techlog/blog</link>
      <description>AI Agent 工程化实践复盘：架构设计、容错与可靠性、上下文工程与成本治理。</description>
      <language>zh-cn</language>
      <managingEditor>birenwenmou@qq.com (眠月)</managingEditor>
      <webMaster>birenwenmou@qq.com (眠月)</webMaster>
      <lastBuildDate>Sun, 06 Sep 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://joker1point.github.io/techlog/tags/engineering/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://joker1point.github.io/techlog/blog/agent-lessons-precipitation</guid>
    <title>如何沉淀 Agent 每次的踩坑经验</title>
    <link>https://joker1point.github.io/techlog/blog/agent-lessons-precipitation</link>
    <description>把&quot;记住教训&quot;从 agent 的自觉变成基础设施：三层漏斗体系——规则强制捕获（项目级原始档）→ 定期蒸馏（全局技能）→ 协议化进化（活性维护）。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>agent</category><category>dev-lessons</category><category>engineering</category><category>methodology</category><category>knowledge-management</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/agent-memory-safe-compaction</guid>
    <title>AI 记忆的抗膨胀：从&quot;淘汰谁&quot;到&quot;留下谁&quot;</title>
    <link>https://joker1point.github.io/techlog/blog/agent-memory-safe-compaction</link>
    <description>跨会话的项目记忆文件会像所有&quot;活&quot;的文档一样膨胀。本文记录一次从 26KB 到 14.7KB 的安全精简：为什么&quot;热度评分淘汰&quot;不可行（使用不可观测、低频高损会误杀），改成&quot;准入三条&quot;，以及&quot;先归档 → 先落点 → 后删除 → 再对账&quot;的搬迁式精简流程与两个对账脚本。</description>
    <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>agent</category><category>memory</category><category>knowledge-management</category><category>engineering</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/agent-skill-governance</guid>
    <title>我是如何保证 Agent Skill 多而不乱的？</title>
    <link>https://joker1point.github.io/techlog/blog/agent-skill-governance</link>
    <description>700+ Skill 库的四层治理体系：L1 排序层（选得对）、L2 存储管理层（管得住）、L3 分区保护层（改不坏）、L4 自进化层（不腐烂），叠加快慢双路径检索。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>agent</category><category>skill</category><category>governance</category><category>engineering</category><category>methodology</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/ai-eleven-defenses</guid>
    <title>让 AI 写代码背后的十一道防线</title>
    <link>https://joker1point.github.io/techlog/blog/ai-eleven-defenses</link>
    <description>一份脱敏的真实项目复盘：用 69 份文档、1067 条标题、560 份验证留痕，在 AI 动手写代码之前搭出十一道防线——目的不是限制 AI，而是敢让它碰生产系统。</description>
    <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>ai-coding</category><category>agent</category><category>engineering</category><category>dev-process</category><category>datawhale</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/android-webview-shell-pitfalls</guid>
    <title>安卓 WebView 薄壳踩坑记：模拟器出网、渲染闪退与消失的图标</title>
    <link>https://joker1point.github.io/techlog/blog/android-webview-shell-pitfalls</link>
    <description>把一个博客装进 14 KB 的安卓壳只花了大半天，但让它在一台模拟器上真正跑起来，花掉的时间比写壳还多。这篇不谈「怎么造壳」，只记路上踩的五个坑：模拟器出不了网、渲染模式静默回退、宿主内存紧张把模拟器拖垮、装完桌面没有图标、以及一个被样式优先级吃掉的按钮。它们的共同点是几乎都不报错。</description>
    <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>android</category><category>webview</category><category>debugging</category><category>emulator</category><category>engineering</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/android-webview-shell</guid>
    <title>只用一个系统 WebView：把博客装进 14 KB 的安卓壳</title>
    <link>https://joker1point.github.io/techlog/blog/android-webview-shell</link>
    <description>好奇心起于一个 3.1 MB 的手机应用——把它拆开、再把它运行时下载的三十个代码包读完，发现它自己几乎什么都不干。于是我反过来给博客做了一个 14 KB 的安卓壳：只用系统自带的 WebView，补上网页本身做不到的返回、断网重试与全屏。本文只讲这件事本身——为什么可以这么薄、壳怎么写、怎么发出去；调试路上踩的坑，另起一篇单说。</description>
    <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>android</category><category>webview</category><category>apk</category><category>reverse-engineering</category><category>engineering</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/anthropic-ai-native-startup</guid>
    <title>Anthropic官方手册：打造AI原生创业公司的核心要点</title>
    <link>https://joker1point.github.io/techlog/blog/anthropic-ai-native-startup</link>
    <description>解读Anthropic官方手册，系统阐述如何从第一天起将AI深度融入验证、构建、运营与积累等各环节，打造真正的AI原生创业公司。</description>
    <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>ai</category><category>startup</category><category>anthropic</category><category>product</category><category>engineering</category><category>opinion</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/billing-safety-retry-state-machine</guid>
    <title>成本治理：付费 API 的计费安全与双重试状态机设计</title>
    <link>https://joker1point.github.io/techlog/blog/billing-safety-retry-state-machine</link>
    <description>以 OpenAI 文生图 API 为例，解析生成请求与图片下载为什么必须是两个独立重试状态机：关键差异在计费语义——一个是未确认态可能重复扣费，一个是已付费的幂等免费操作。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>api</category><category>cost</category><category>retry</category><category>billing</category><category>architecture</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/blog-ci-gate</guid>
    <title>从&quot;记得跑&quot;到&quot;跑不掉&quot;：博客文章检查的 CI 门禁</title>
    <link>https://joker1point.github.io/techlog/blog/blog-ci-gate</link>
    <description>博客的文章检查脚本经过几轮校准后已经很准，但一个问题把我问住了：&quot;它以后每次都会跑吗？&quot;本文记录把检查装进部署门禁的完整过程——为什么&quot;红叉警告&quot;不算强制、怎么按变更类型分流检查强度，以及如何用临时分支和负测试证明门禁&quot;会拦、且拦得准&quot;。</description>
    <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>blog</category><category>ci</category><category>github-actions</category><category>devops</category><category>engineering</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/building-site-data-security</guid>
    <title>我建站如何确保数据安全</title>
    <link>https://joker1point.github.io/techlog/blog/building-site-data-security</link>
    <description>从独立开发者视角，系统梳理建站全链路数据安全实践：Cloudflare 隧道架构、开发阶段单测与静态扫描、API 六维防护、渗透测试验证、灰度发布与回滚、二阶安全兜底。</description>
    <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>security</category><category>devops</category><category>engineering</category><category>cloudflare</category><category>api</category><category>opinion</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/dev-lessons-skill-distillation</guid>
    <title>把 22 篇项目文档蒸馏成一个可进化的全局技能</title>
    <link>https://joker1point.github.io/techlog/blog/dev-lessons-skill-distillation</link>
    <description>将 22 篇原始复盘文档蒸馏为全局技能 dev-lessons：按领域分文件（LLM 应用、前后端异步、数据库迁移、上游复用、部署环境、协作测试），每条经验附场景标签与溯源字段，并内置进化协议（同问题复现三次升级为元原则、元原则超 15 条强制合并）。</description>
    <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>agent</category><category>skill</category><category>engineering</category><category>knowledge-management</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/exetrace-native-rewrite</guid>
    <title>20.4 MB → 1.72 MB：把一个 Windows 工具从 tkinter 重写成 Win32 原生控件</title>
    <link>https://joker1point.github.io/techlog/blog/exetrace-native-rewrite</link>
    <description>一个记录&quot;你打开过哪些应用&quot;的桌面小工具，Python 版功能最全但体积 20.4 MB、常驻 5-8 MB。这一轮用 Rust + Windows 公共控件重写了一个原生版：exe 1.72 MB、托盘常驻约 4.5 MB。重写不是翻译——列表虚拟化与&quot;运行中自动隐藏&quot;、图标的三种形态、项目管理扫描、以及把工具变成&quot;可以被 Agent 调用的接口&quot;，每一步都是跟平台重新谈条件。</description>
    <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>windows</category><category>rust</category><category>performance</category><category>desktop</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/flowwatch-alert-rules</guid>
    <title>从&quot;事后看&quot;到&quot;事中拦&quot;：给流量观测工具装上告警规则引擎</title>
    <link>https://joker1point.github.io/techlog/blog/flowwatch-alert-rules</link>
    <description>一个自维护的本机流量观测工具，被三次真实事故各推着长出一个能力：20 小时静默停摆催生看门狗，单日 124GB 上行催生代理哨兵，一次 207GB 事故催生&quot;本机连接&quot;面板。最新一轮把写死阈值的哨兵泛化成告警规则引擎：任意进程 × 可组合条件 × Web 配置。本文记录这条演进路径与三个设计决策：为什么只告警不处置、为什么规则要能解释、以及为什么出口必须能兜底。</description>
    <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>observability</category><category>windows</category><category>network</category><category>system-design</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/focus-on-firstline-practice</guid>
    <title>在 AI 时代，聚焦一线从业</title>
    <link>https://joker1point.github.io/techlog/blog/focus-on-firstline-practice</link>
    <description>在 AI 时代，信息数量的增量远大于信息质量的增量。永远聚焦一线从业，坚持实操上手，最小 MVP，避免无效输入。</description>
    <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>ai</category><category>opinion</category><category>engineering</category><category>mindset</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/from-developer-to-junior-architect</guid>
    <title>从程序员到初级架构师的思考路径</title>
    <link>https://joker1point.github.io/techlog/blog/from-developer-to-junior-architect</link>
    <description>编程语言只是实现模块功能的方式，而模块功能是整体架构的一部分。理解架构的本质——它是什么、影响了什么、为什么这样设计、遇到了哪些场景和问题——再思考用什么工具解决这些实际问题。当测试通过、功能正常、日志正常，你就已经是一位初级架构师了。</description>
    <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>architecture</category><category>engineering</category><category>career</category><category>opinion</category><category>mindset</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/memory-guard-demote-tier</guid>
    <title>不杀，先让路：内存守护的降级档是怎么长出来的</title>
    <link>https://joker1point.github.io/techlog/blog/memory-guard-demote-tier</link>
    <description>一台 32GB 的开发机长期在 10% 可用内存附近徘徊——&quot;临界才杀进程&quot;意味着天天在悬崖边保持不动。这一轮改版给守护脚本加了降级档：警告线以下不杀，先把最大的非前台进程降优先级、交还工作集；再加&quot;你正在看的应用全家豁免&quot;、和一次真实搁浅事故修出来的状态落盘。三个决策都不是设计阶段想出来的，而是上线后逐次事故长出来的。</description>
    <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>reliability</category><category>windows</category><category>system-design</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/memory-guard-last-line-of-defense</guid>
    <title>最后一道内存防线：内存守护脚本的设计取舍与真实战报</title>
    <link>https://joker1point.github.io/techlog/blog/memory-guard-last-line-of-defense</link>
    <description>32GB 开发机被 Electron 全家桶吃干、一天在 3% 可用内存附近挣扎之后，我写了一个只做一件事的守护脚本：内存临界前杀掉占用最大的进程。难点不在杀谁，而在什么时候动手、谁不能杀、守护者自己死了怎么办。附真实战报与一次杀-重生循环的根因复盘。</description>
    <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>reliability</category><category>system-design</category><category>windows</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/mpt-pr-1291-contribution-review</guid>
    <title>给 119k star 项目提 PR：8 小时从评论到合并的完整复盘</title>
    <link>https://joker1point.github.io/techlog/blog/mpt-pr-1291-contribution-review</link>
    <description>一次向 MoneyPrinterTurbo（119k+ star）提交 OpenAI 兼容文生图素材源并被合并的完整复盘：占坑式沟通拿到约束、用数据回应&quot;改动过大&quot;的顾虑、测试证据链决定合并速度，以及维护者在后续 PR 中指出的付费 API 容错设计缺陷。</description>
    <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>open-source</category><category>agent</category><category>python</category><category>engineering</category><category>pr</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/multi-route-retrieval-experiment</guid>
    <title>修 5 坏 2，还是修 3 坏 0？——一次 55 题的多路召回实验，与两个能亲手操作的复盘页</title>
    <link>https://joker1point.github.io/techlog/blog/multi-route-retrieval-experiment</link>
    <description>给检索链路补一条字面路（BM25）去修专名盲区：55 题实测，两条路全程都开能多答对 5 题、但也弄坏 2 题；改成「查询点了名、且语义路确实没找到」才补路，则多答对 3 题、零回退。本文记录四配置对比、λ 的两次扫描（含一个被数据否决的方向）、以及一条必须诚实标注的「不算数的修复」，文末附两个无需后端、离线的交互式复盘页。</description>
    <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>rag</category><category>retrieval</category><category>hybrid-search</category><category>bm25</category><category>evaluation</category><category>chromadb</category><category>engineering</category><category>vdb-news</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/onboarding-project-deep-understanding</guid>
    <title>如何快速接手一个项目并构建深度项目认知</title>
    <link>https://joker1point.github.io/techlog/blog/onboarding-project-deep-understanding</link>
    <description>接手陌生项目的四阶段方法论：宏观定向（1-2小时）→ 架构建模（半天）→ 运行验证（半天）→ 持续深化。12 个可执行步骤，配合 agent 技能栈实现认知加速。</description>
    <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>onboarding</category><category>engineering</category><category>architecture</category><category>methodology</category><category>agent</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/port-feature-from-reference</guid>
    <title>从参考项目移植功能的标准流程</title>
    <link>https://joker1point.github.io/techlog/blog/port-feature-from-reference</link>
    <description>将参考项目（如 NextChat、web-tools）的功能移植到当前项目的标准流程：从分析参考项目、确认集成范围、数据模型迁移、后端实现、前端实现、端到端验证到提 PR，覆盖 Python/FastAPI + Streamlit 技术栈的完整实践。</description>
    <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>engineering</category><category>open-source</category><category>python</category><category>fastapi</category><category>streamlit</category><category>workflow</category><category>opinion</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/product-film-standard-v2</guid>
    <title>把产品短片做成可执行规范：封面、节奏、音效、动图四件套</title>
    <link>https://joker1point.github.io/techlog/blog/product-film-standard-v2</link>
    <description>一条 52 秒的产品短片，从「靠感觉做」变成「按规范复现」：四件套的实测参数、为什么每段时长必须是 GIF 的整数遍、音效为什么全部本地合成而不进素材库、指针为什么要放大到界面宽的 4.5%，以及用「承接（carry）」替代「淡入淡出换片」的改造过程。</description>
    <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>members</category><category>video</category><category>engineering</category><category>methodology</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/rag-chunking-refactor-and-eval-traps</guid>
    <title>把 143 块拆到 45 块：一次 RAG 分块重构，和它揭出来的评测陷阱</title>
    <link>https://joker1point.github.io/techlog/blog/rag-chunking-refactor-and-eval-traps</link>
    <description>把一句 RecursiveCharacterTextSplitter(1000, 200) 换成「清洗 → 画像 → 分层 → 校验 → 回退」的自适应分块器，全库 1959 → 1120 块、HTML 残留 38.3% → 0%、单篇最多块数 143 → 45。但改起来容易、证明它变好很难：A/B 显示六个检索配置全部正向，同时也让「多路召回 +11.1%」缩水到 +2.2pp——原来那部分增益是在补偿脏文本，不是互补召回。本文连同评测自身的三个陷阱（wall-clock 时间窗、judge 随机失败、n=18 时符号会翻）与一次生产语料重建的前置验证一起记录。</description>
    <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>rag</category><category>chunking</category><category>evaluation</category><category>chromadb</category><category>llm</category><category>engineering</category><category>vdb-news</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/rag-pipeline-architecture</guid>
    <title>RAG 链路全解析：从文档入库到混合记忆的实战架构</title>
    <link>https://joker1point.github.io/techlog/blog/rag-pipeline-architecture</link>
    <description>详述 RAG（检索增强生成）的完整技术链路，包括文档入库、向量化、召回重排、Prompt 拼接，以及基于 Node.js + ChromaDB + SQLite 的三层混合记忆进阶方案。</description>
    <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>rag</category><category>ai</category><category>llm</category><category>embedding</category><category>chromadb</category><category>nodejs</category><category>architecture</category><category>engineering</category><category>vdb-news</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/webpack-to-turbopack</guid>
    <title>前端工程化：从 Webpack 到 Turbopack 的迁移指南</title>
    <link>https://joker1point.github.io/techlog/blog/webpack-to-turbopack</link>
    <description>Next.js 15 默认使用 Turbopack，本文对比 Webpack 和 Turbopack，提供完整的迁移策略和性能数据。</description>
    <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>webpack</category><category>turbopack</category><category>build-tools</category><category>engineering</category>
  </item>

  <item>
    <guid>https://joker1point.github.io/techlog/blog/what-counts-as-same-event</guid>
    <title>什么才算「同一件事」：热点聚类的三轮试错，与把判同交给模型之后发生的事</title>
    <link>https://joker1point.github.io/techlog/blog/what-counts-as-same-event</link>
    <description>把「同一件事的多方报道」聚成一条时间线，听起来是道相似度题，实际做下来：纯余弦区分不了「同一领域」和「同一件事」（语料两两余弦最大仅 0.706），加实体词会把 Arxiv 每日批次串成 10 条大簇，最后只能退回最保守的口径。v2 把判同交给模型，第一次评测就被教做人——模型错判时置信度同样是 0.95+，校准阈值救不了。而上线之后最反直觉的发现是：判同明明准了，缺的却是「有人跟它撞题」。</description>
    <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
    <author>birenwenmou@qq.com (眠月)</author>
    <category>clustering</category><category>event-clustering</category><category>llm</category><category>prompt-engineering</category><category>evaluation</category><category>rag</category><category>engineering</category><category>vdb-news</category>
  </item>

    </channel>
  </rss>
