<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Observability on 我的技术博客</title>
    <link>http://38.175.203.122/tags/observability/</link>
    <description>Recent content in Observability on 我的技术博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 18 Sep 2026 16:50:19 +0800</lastBuildDate>
    <atom:link href="http://38.175.203.122/tags/observability/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Level 3 → Level 4：一次 Harness 升级的实录</title>
      <link>http://38.175.203.122/posts/level4-upgrade/</link>
      <pubDate>Fri, 18 Sep 2026 16:50:19 +0800</pubDate>
      <guid>http://38.175.203.122/posts/level4-upgrade/</guid>
      <description>&lt;h1&gt;Level 3 → Level 4：一次 Harness 升级的实录&lt;/h1&gt;
&lt;h3&gt;—— 六个真实缺陷，和它们是怎么被抓住的&lt;/h3&gt;
&lt;blockquote&gt;&lt;strong&gt;作者：小周&lt;/strong&gt;&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;p&gt;上一篇《Harness Engineering 从入门到实战》里，我按 Fowler 的方法论从零搭了一个带 Harness 的排班系统，走到了 &lt;strong&gt;Level 3&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但那篇的第三部分「Level 4 进阶实战」&lt;strong&gt;只有讲解，没有落地&lt;/strong&gt;——我列出了四个实操，一个都没做。这篇是补课记录。&lt;/p&gt;
&lt;p&gt;不过这篇文章&lt;strong&gt;不打算写成「我是怎么搭成功的」&lt;/strong&gt;。那种文章没什么价值，因为真正的知识不在成功路径上。&lt;/p&gt;
&lt;p&gt;我要写的是：&lt;strong&gt;这一路上我踩了哪些坑、每个坑是怎么被抓住的、以及为什么单靠&#34;更努力&#34;抓不住它们。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;全文有 &lt;strong&gt;6 个真实缺陷&lt;/strong&gt;，每一个都是：先做错 → 被抓住 → 修好 → 变成永久防护。&lt;/p&gt;
&lt;hr/&gt;
&lt;h2&gt;先说结论：这篇最有价值的部分，是我的错误&lt;/h2&gt;
&lt;p&gt;升级过程中，被抓住的问题按严重性排：&lt;/p&gt;
&lt;div class=&#34;table-wrap&#34;&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;问题&lt;/th&gt;&lt;th&gt;危险在哪&lt;/th&gt;&lt;th&gt;谁抓到的&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;验证闸门失败却返回成功&lt;/td&gt;&lt;td&gt;闸门形同虚设，给虚假安全感&lt;/td&gt;&lt;td&gt;手工排查&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;架构检查漏检（用 grep）&lt;/td&gt;&lt;td&gt;以为在检查，其实没检查到位&lt;/td&gt;&lt;td&gt;对抗测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;strong&gt;闸门被整体替换，自检拦不住&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;所有防护一夜失效&lt;/td&gt;&lt;td&gt;对抗测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;架构检查误报（还是 grep）&lt;/td&gt;&lt;td&gt;噪声让人绕过检查&lt;/td&gt;&lt;td&gt;正常运行暴露&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;测试假覆盖&lt;/td&gt;&lt;td&gt;测试全绿，但删掉代码也不报错&lt;/td&gt;&lt;td&gt;子 Agent 变异测试&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;死代码 + 文档撒谎&lt;/td&gt;&lt;td&gt;安全推理建立在假前提上&lt;/td&gt;&lt;td&gt;子 Agent 审查&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;注意第 1、2、3 条的共同点：它们都不是&#34;某个功能没实现&#34;，而是&#34;某个本该把关的东西，其实没在把关&#34;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这类缺陷最可怕，因为它让你&lt;strong&gt;以为自己是安全的&lt;/strong&gt;。&lt;/p&gt;
&lt;hr/&gt;
&lt;h1&gt;第一部分：Level 3 → Level 4，要补什么&lt;/h1&gt;
&lt;p&gt;按 Fowler 文章第 22 章，Level 4（Agent Platform）的特特征有七项。对照我的排班项目盘点：&lt;/p&gt;
&lt;div class=&#34;table-wrap&#34;&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;Level 4 特征&lt;/th&gt;&lt;th&gt;升级前状态&lt;/th&gt;&lt;th&gt;这篇做了什么&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Review agents&lt;/td&gt;&lt;td&gt;❌ 未做&lt;/td&gt;&lt;td&gt;✅ AI 代码审查（Inferential Sensor）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Permissions&lt;/td&gt;&lt;td&gt;⚠️ 只有文字约束&lt;/td&gt;&lt;td&gt;✅ 校验和基线 + CI 独立比对&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Observability&lt;/td&gt;&lt;td&gt;❌ 未做&lt;/td&gt;&lt;td&gt;✅ 验证历史 + 变更审计&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Orchestration&lt;/td&gt;&lt;td&gt;❌ 未做&lt;/td&gt;&lt;td&gt;✅ 多 Agent 编排状态机&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCP&lt;/td&gt;&lt;td&gt;⬜ 可选&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sandboxes&lt;/td&gt;&lt;td&gt;⬜ 受限&lt;/td&gt;&lt;td&gt;诚实说明做不到（见下文）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multiple agents&lt;/td&gt;&lt;td&gt;❌ 未做&lt;/td&gt;&lt;td&gt;✅ 真实跑了 Coder/Tester/Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;但开工之前，先发现地基是坏的。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
