<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>金木的博客</title>
    <link>https://jinjiamu.pages.dev/blog/</link>
    <description>思考、实验、构建日志、学习变化与工程现场。</description>
    <language>zh-CN</language>
    <lastBuildDate>Mon, 24 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://jinjiamu.pages.dev/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>把架构规则写进 AI 真正会经过的地方</title>
      <link>https://jinjiamu.pages.dev/blog/ai-executable-boundaries/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/ai-executable-boundaries/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>用目录、类型、事件注册和验证入口，把架构要求从提示语变成可检查的修改条件。</description>
      <category domain="content-kind">essay</category>
      <category>AI Engineering</category>
      <category>MSCE</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>passed=false 里混着六种结果</title>
      <link>https://jinjiamu.pages.dev/blog/boolean-is-not-enough-for-verification/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/boolean-is-not-enough-for-verification/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>同一个 passed=false 可能表示断言失败、启动错误、超时、人工待验或主动跳过；状态、方法与任务 outcome 必须分开。</description>
      <category domain="content-kind">learning</category>
      <category>Outcome Semantics</category>
      <category>State Machine</category>
      <category>Verification</category>
    </item>
    <item>
      <title>验证码页面不一定是验证码问题</title>
      <link>https://jinjiamu.pages.dev/blog/challenge-page-is-not-the-captcha/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/challenge-page-is-not-the-captcha/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>PropertyGuru 分页在默认 HTTP 栈上变成 Cloudflare 挑战页。真正翻转结果的变量是 TLS / HTTP2 栈，不是解出 Turnstile。</description>
      <category domain="content-kind">lab</category>
      <category>Web Reverse</category>
      <category>TLS</category>
      <category>Cloudflare</category>
    </item>
    <item>
      <title>我删掉了一套数学上正确、工程上无效的学习闭环</title>
      <link>https://jinjiamu.pages.dev/blog/delete-the-fake-learning-loop/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/delete-the-fake-learning-loop/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>当模型自报概率无法穿过会话边界，我把校准器改成了案例库、真实结果与下一次任务真正看得见的记忆。</description>
      <category domain="content-kind">building</category>
      <category>AI Engineering</category>
      <category>Case Memory</category>
      <category>Developer Tool</category>
    </item>
    <item>
      <title>在向量检索之前，我先做了一个可解释的基线</title>
      <link>https://jinjiamu.pages.dev/blog/explainable-retrieval-before-embeddings/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/explainable-retrieval-before-embeddings/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>案例召回先采用文本归一化与 Jaccard；相比技术选型，更重要的是明确它已经证明什么、仍会漏掉什么。</description>
      <category domain="content-kind">lab</category>
      <category>Case Retrieval</category>
      <category>Jaccard</category>
      <category>RAG</category>
    </item>
    <item>
      <title>同一个 200 里至少有三种拒绝</title>
      <link>https://jinjiamu.pages.dev/blog/http-200-is-not-the-business-result/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/http-200-is-not-the-business-result/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>HTTP 成功、JSON 外壳和业务数据经常被写成同一次通过。企查查、Boss 直聘和微博把这三种拒绝拆开了。</description>
      <category domain="content-kind">field-note</category>
      <category>Web Reverse</category>
      <category>Protocol</category>
      <category>Verification</category>
    </item>
    <item>
      <title>让错误 Markdown 在发布前失败</title>
      <link>https://jinjiamu.pages.dev/blog/markdown-contracts-as-build-failures/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/markdown-contracts-as-build-failures/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>从 front matter、策展引用到 featured 数量，记录哪些内容错误已经硬失败，哪些曾经只是静默退化。</description>
      <category domain="content-kind">building</category>
      <category>Next.js</category>
      <category>Content Engineering</category>
      <category>Static Export</category>
    </item>
    <item>
      <title>脚本变大了，并不等于协议换了</title>
      <link>https://jinjiamu.pages.dev/blog/obfuscation-is-not-protocol-change/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/obfuscation-is-not-protocol-change/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>Akamai 传感器脚本更换 URL、增大体积并收缩 API 面之后，cookie 映射和正文替换层仍然对得上。先比协议，再决定要不要重拆混淆。</description>
      <category domain="content-kind">learning</category>
      <category>Web Reverse</category>
      <category>Version Drift</category>
      <category>Telemetry</category>
    </item>
    <item>
      <title>前端源码里的 URL，不等于访客能调用的接口</title>
      <link>https://jinjiamu.pages.dev/blog/static-ajax-is-not-the-protocol/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/static-ajax-is-not-the-protocol/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>微博热门页的静态 ajax 候选很多，真正可公开读取的只是其中经过响应分类的一小部分。</description>
      <category domain="content-kind">field-note</category>
      <category>Web Reverse</category>
      <category>Protocol</category>
      <category>Schema</category>
    </item>
    <item>
      <title>四十项测试的证据账本</title>
      <link>https://jinjiamu.pages.dev/blog/what-forty-tests-prove/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/what-forty-tests-prove/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>把 14 项历史案例、9 项相似性检查和 17 项不变量按 oracle 与边界重排，不把通过数量当成可靠性分数。</description>
      <category domain="content-kind">learning</category>
      <category>Testing</category>
      <category>Property-Based Testing</category>
      <category>Reliability</category>
    </item>
    <item>
      <title>一条被 continue 绕过的 Kill 条件检查</title>
      <link>https://jinjiamu.pages.dev/blog/when-should-a-rule-fail/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/when-should-a-rule-fail/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>从一处不可达分支出发，重新划分保存时提示、结构门禁和任务结束后的结果验证。</description>
      <category domain="content-kind">learning</category>
      <category>AI Engineering</category>
      <category>Developer Tooling</category>
      <category>Validation</category>
    </item>
    <item>
      <title>同一条边，两种事实：静态图谱与运行时追踪</title>
      <link>https://jinjiamu.pages.dev/blog/when-static-graphs-disagree-with-runtime/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/when-static-graphs-disagree-with-runtime/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>静态关系说明代码允许什么，运行时记录说明样本经过什么；本文建立冲突模型，不声称已经完成实测。</description>
      <category domain="content-kind">essay</category>
      <category>Architecture</category>
      <category>Observability</category>
      <category>Impact Analysis</category>
    </item>
    <item>
      <title>补环境脚本为什么会越补越错</title>
      <link>https://jinjiamu.pages.dev/blog/why-environment-shims-drift/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/why-environment-shims-drift/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>消除运行异常不等于复现真实行为；每一个浏览器环境桩都应该有来源、影响范围和删除实验。</description>
      <category domain="content-kind">learning</category>
      <category>Web Reverse</category>
      <category>Runtime Environment</category>
      <category>Minimal Closure</category>
    </item>
    <item>
      <title>会话队列里的所有权、幂等与未知状态</title>
      <link>https://jinjiamu.pages.dev/blog/why-global-queues-cannot-isolate-conversations/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/why-global-queues-cannot-isolate-conversations/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>现有链路已按业务身份串行；keyed mailbox、租约和 indeterminate 重试规则仍是待验证的设计扩展。</description>
      <category domain="content-kind">learning</category>
      <category>Python Automation</category>
      <category>Concurrency</category>
      <category>State Machine</category>
    </item>
    <item>
      <title>多租户隔离，不是给每张表加一个 tenantCode</title>
      <link>https://jinjiamu.pages.dev/blog/tenant-boundaries-are-server-contracts/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/tenant-boundaries-are-server-contracts/</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>从登录态、账号域、模块开通、RBAC 到数据访问：多租户边界必须成为服务端可验证的执行契约。</description>
      <category domain="content-kind">essay</category>
      <category>Architecture</category>
      <category>Multi-tenant</category>
      <category>RBAC</category>
    </item>
    <item>
      <title>签名正确，为什么 API 仍然不给真实数据？</title>
      <link>https://jinjiamu.pages.dev/blog/signature-is-not-data-access/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/signature-is-not-data-access/</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description>一次把签名、会话信誉、TLS / H2 指纹和行为环境逐层拆开的逆向对照实验。</description>
      <category domain="content-kind">lab</category>
      <category>Web Reverse</category>
      <category>TLS</category>
      <category>A/B Experiment</category>
    </item>
    <item>
      <title>从按钮事件到最小业务子图</title>
      <link>https://jinjiamu.pages.dev/blog/business-graph-before-ai-change/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/business-graph-before-ai-change/</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <description>从 1.8k+ 核心节点和 8.7k+ 关系中，只抽取与一次修改相关的组件、事件、接口和数据链。</description>
      <category domain="content-kind">building</category>
      <category>AI Engineering</category>
      <category>Knowledge Graph</category>
      <category>Impact Analysis</category>
    </item>
    <item>
      <title>自动回复的终点，不是点击“发送”</title>
      <link>https://jinjiamu.pages.dev/blog/automation-final-state/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/automation-final-state/</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description>从 64 张加密消息分片表到数据库二次确认：如何把客服自动化从 UI 动作推进到可验证的业务闭环。</description>
      <category domain="content-kind">field-note</category>
      <category>Automation</category>
      <category>SQLCipher</category>
      <category>Final State</category>
    </item>
    <item>
      <title>逆向完成之后：把一次性结论变成可回归工具</title>
      <link>https://jinjiamu.pages.dev/blog/reverse-engineering-to-regression-tooling/</link>
      <guid isPermaLink="true">https://jinjiamu.pages.dev/blog/reverse-engineering-to-regression-tooling/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>从真实样本、最小闭包和 AST 插件，到字节级测试与业务终态：逆向交付不能停在能跑一次。</description>
      <category domain="content-kind">learning</category>
      <category>Web Reverse</category>
      <category>AST</category>
      <category>Tooling</category>
    </item>
  </channel>
</rss>
