# 自进化 Skill 是真的，但它带刹车：decode-codex 的维护协议拆解

> 宝玉那条「Skill 每次遇到新场景就自己更新」的推文，方向是对的，程度被夸大了。把仓库一手文件拉下来读完会发现：协议只认三类触发条件，还写着「绝不让正在跑的这一轮失稳」。

### TLDR

- **仓库坐实**：JimLiu/decode-codex 真实存在且公开，2026-08-29 实测 **117★ / 47 fork**（第三方索引站 7 月记录为 93★ / 36 fork）。推文页抓取被 X 拦截，结论全部以仓库一手文件为准。
- **术语要修正**：它做的不是严格意义的反编译（无字节码→源码），而是**反混淆 deobfuscate + 可读性还原 humanify**。
- **「每次都自更新」被夸大**：协议原文只认三类触发条件，命中才改；且明确写着「不要为了投机式重构阻塞交付」。
- **最反直觉的数据点**：全仓最大的实现脚本是 quality-gate.ts（约 135 KB），比第二大的 ledger.ts 大 4 倍；而它的测试文件（约 215 KB）比实现本身还大 1.5 倍。
- **自进化是四件套**：触发条件 + 路由表 + 安全护栏 + 留痕纪律。缺任何一件都会失控。
- **我们的决策是不装、吸收协议**：无开源许可证、README 明写不要重新分发、体积 207 MB、依赖 bun、Skill 1 仅 macOS。但那套四件套与领域无关，可直接移植。

### SRC

推文主体为 x.com/dotey/status/2093539751127040157，指向仓库 github.com/JimLiu/decode-codex。**推文正文抓取被 X 拦截（WebFetch 返回空），未能直接还原**——本报告全部结论以仓库一手文件为准，不依赖任何推文转述。核验方式为 GitHub REST API（/repos、/contents/）于 2026-08-29 实测，一手文件已落盘：SKILL.md（35,346 字节）、reference/maintenance.md（14,457 字节）、reference/quality-bar.md（12,244 字节）、README.md（5,730 字节）、package.json（564 字节）。作者身份（@dotey 即宝玉 / JimLiu）为旁证推断，非直接声明。

### BODY

<div class="sec"><div class="eyebrow"><span class="num">1</span>核查链条</div>
<h2>推文被拦之后，怎么把事实立住</h2>

<p>这次核查的起点是一次失败：推文页抓不到，<strong>WebFetch 返回空，X 平台直接拦了</strong>。这条链断掉之后通常的做法是找二手转述——但这次要核的恰恰是「转述有没有夸大」。所以换了条路：推文给了仓库地址，那就直接核仓库。</p>

<div class="jx">
  <div class="jx-h"><span>核查链条：从被拦到坐实</span><span class="jx-note">2026-08-29</span></div>
  <div class="jx-tl">
    <div class="jx-tl-row"><div class="jx-tl-t">① 推文</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#4b5f8a">抓取被拦，正文未还原<span class="m">不依赖转述，改走一手文件</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">② API</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#2563eb">GitHub REST API 核验仓库<span class="m">repo id 1278184266，公开，默认分支 main</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">③ 落盘</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0a749a">raw 文件取回本地<span class="m">SKILL.md / maintenance.md / quality-bar.md / README / package.json</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">④ 通读</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0d8a5f">SKILL.md 222 行 + 维护协议 39 行逐行读<span class="m">结论全部来自原文，不来自解读</span></div></div></div>
  </div>
</div>

<div class="jx">
  <div class="jx-h"><span>推文说法 × 仓库实测</span><span class="jx-note">核查截至 2026-08-29</span></div>
  <table class="jx-mx">
    <tr><th>核查项</th><th>推文 / 流传说法</th><th>实测结果</th><th>判定</th></tr>
    <tr><th>仓库真实性</th><td>指向 JimLiu/decode-codex</td><td>repo id 1278184266，公开，main 分支，描述「deobfuscate codex app code」</td><td class="b">坐实</td></tr>
    <tr><th>「反编译 JS 代码」</th><td>反编译</td><td>实为 deobfuscate（反混淆）+ humanify（重命名还原）；无字节码级反编译</td><td class="c">术语需修正</td></tr>
    <tr><th>「每次遇到新场景就自己更新 Skill」</th><td>无条件、每次</td><td>maintenance.md：仅三类触发条件命中才改，且设安全护栏</td><td class="c">方向对，程度夸大</td></tr>
    <tr><th>开源可自由使用</th><td>隐含「开源」</td><td>license 为 null，根目录无 LICENSE 文件，默认「保留所有权利」</td><td class="c">不可默认复用</td></tr>
    <tr><th>作者身份</th><td>@dotey 发布</td><td>owner 为 JimLiu；多方资料标注 JimLiu/baoyu-skills 为「宝玉（Jim Liu）的技能集」，@dotey 即宝玉</td><td class="a">高置信旁证</td></tr>
  </table>
  <div class="cap">五项里三项需要修正或降级——这正是「不依赖转述、直接读原文」的意义</div>
</div>

<div class="sec"><div class="eyebrow"><span class="num">2</span>工程量</div>
<h2>最大的文件不是反混淆器，是判定有没有做完的门禁</h2>

<p>先看一个反直觉的数据点。这是个反混淆工具，你会以为最大的脚本是反混淆器——<strong>不是。</strong></p>

<div class="jx">
  <div class="jx-h"><span>单 Skill 的工程量分布</span><span class="jx-note">deobfuscate-javascript</span></div>
  <div class="jx-bars">
    <div class="jx-bar-row">
      <div class="jx-bar-lab">quality-gate.test.ts（测试）</div>
      <div class="jx-bar-track"><div class="jx-bar-fill" data-w="100%" style="background:#b85c0a"></div></div>
      <div class="jx-bar-val">215 KB</div>
    </div>
    <div class="jx-bar-row">
      <div class="jx-bar-lab">quality-gate.ts（实现）</div>
      <div class="jx-bar-track"><div class="jx-bar-fill" data-w="63%" style="background:#0a749a"></div></div>
      <div class="jx-bar-val">135 KB</div>
    </div>
    <div class="jx-bar-row">
      <div class="jx-bar-lab">ledger.ts（第二大实现）</div>
      <div class="jx-bar-track"><div class="jx-bar-fill" data-w="15%" style="background:#4b5f8a"></div></div>
      <div class="jx-bar-val">33 KB</div>
    </div>
    <div class="jx-bar-row">
      <div class="jx-bar-lab">SKILL.md（路由与契约）</div>
      <div class="jx-bar-track"><div class="jx-bar-fill" data-w="16%" style="background:#0d8a5f"></div></div>
      <div class="jx-bar-val">35 KB</div>
    </div>
  </div>
  <div class="cap">全仓 85 个 .ts：43 个实现（约 733 KB）+ 42 个测试（约 551 KB），测试与实现体积比 0.75</div>
</div>

<p>最大的实现脚本是判定质量的门禁，比第二大的大 4 倍；门禁的测试文件比门禁本身还大 1.5 倍。作者把最大的人力投在了<strong>「判定做没做完」而不是「把活干出来」</strong>。</p>

<div class="keypoint">
  <strong>判断：</strong>作者踩过最大的坑不是「还原不出来」，而是<strong>「以为还原完了，其实没有」</strong>。验收逻辑的复杂度，往往是被生成逻辑的不可靠性逼出来的——你在生成上省下的力气，会以双倍价格在验收上被收回去。
</div>

<div class="sec"><div class="eyebrow"><span class="num">3</span>协议本体</div>
<h2>自进化不是「让 Agent 随便改自己」</h2>

<p>协议原文在 reference/maintenance.md，开篇第一句定调：「Treat this skill as a living asset, not a frozen tool」（把 Skill 当成活的资产，不是冻住的工具）。但要让它活着而不失控，靠的是四件套。</p>

<p>第一件是<strong>触发条件</strong>——只有命中下面三类才允许动手改 Skill。</p>

<div class="jx">
  <div class="jx-h"><span>三类触发条件</span><span class="jx-note">命中任一才动手</span></div>
  <table class="jx-mx">
    <tr><th>#</th><th>触发条件</th><th>原文要点</th></tr>
    <tr><th>1</th><td>明显缺陷</td><td>脚本 bug、校验门误判、指令错误或误导、文档里失效的路径 / flag / 脚本名</td></tr>
    <tr><th>2</th><td>可优化的流程</td><td>你手工完成了一个本可由脚本 flag 代劳的步骤；更优的阶段排序；在多个 chunk 上重复做了同一个手工修正</td></tr>
    <tr><th>3</th><td>新的 / 漏掉的 npm 包身份</td><td>某个 vendor chunk 不在注册表里；某个公开包差点被写成手写兼容实现；值得引入的外部工具</td></tr>
  </table>
</div>

<p>第二件是<strong>路由表</strong>——协议里最见功力的一张表。它不是笼统说「更新 Skill」，而是指明每一类发现的<strong>确切归宿</strong>：新的 vendor 包写进注册表并补通过/失败两组测试、漏判的包先改 shim 再加固守卫、脚本 bug 修完必须补测试防回退、边界情况追加进 caveats.md。原则只有一句：<strong>一处事实只存一处。</strong>没有路由表，Agent 不知道往哪写，就会随手塞进 SKILL.md，越塞越臃肿，最后没人敢动。</p>

<div class="sec"><div class="eyebrow"><span class="num">4</span>最精妙的一段</div>
<h2>绝不让正在跑的这一轮失稳</h2>

<p>第三件是<strong>安全护栏</strong>，小标题原文是「never destabilize the run you're in」（绝不让正在跑的这一轮失稳）。三条规则按风险分级。</p>

<div class="jx">
  <div class="jx-h"><span>安全护栏三条</span><span class="jx-note">按改动风险分级</span></div>
  <div class="jx-tl">
    <div class="jx-tl-row"><div class="jx-tl-t">安全</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#0d8a5f">纯数据与文档改动<span class="m">注册表条目、caveats、文档修正——可就地改</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">会改行为</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#b85c0a">脚本改动必须带着测试一起提交<span class="m">提交前跑通测试套件，绝不留红色测试</span></div></div></div>
    <div class="jx-tl-row"><div class="jx-tl-t">风险太高</div><div class="jx-tl-b"><div class="jx-tl-blk" style="background:#6d3fd4">只记 TODO，本轮不动<span class="m">Don't block delivery on a speculative refactor</span></div></div></div>
  </div>
</div>

<div class="keypoint">
  <strong>判断：</strong>第三条最反直觉，也最重要。<strong>自进化的优先级永远低于「把手上的活干完」。</strong>多数人想象中的「Agent 应该持续优化自己」正好相反——中途改规则，会让已经在跑的产物前后不一致，调试成本远高于改进收益。没有这条护栏，「Agent 自己改自己」会迅速退化成行为漂移：越改越偏、旧能力被悄悄覆盖、出问题无法回溯。
</div>

<p>第四件是<strong>留痕纪律</strong>：每一轮结束都要提交；Skill 的自我改进必须单独成 commit，与业务产出严格分开；Skill 类提交统一前缀「skill(名称): 改了什么」，业务进度另走检查点约定；中间工作区保持 gitignore，永不入库。</p>

<p>这套成本极低，但三个月后你能靠它回溯「这条规则当初为什么加的」。</p>

<div class="sec"><div class="eyebrow"><span class="num">5</span>装不装</div>
<h2>不装这个 Skill，吸收它的协议</h2>

<p>决策是不装。理由是硬的，与能力无关。</p>

<div class="jx">
  <div class="jx-h"><span>不装的五条理由</span><span class="jx-note">按阻断程度排序</span></div>
  <table class="jx-mx">
    <tr><th>风险项</th><th>实测情况</th><th>影响</th></tr>
    <tr><th>许可证缺失</th><td>license 为 null，无 LICENSE 文件 → 默认保留所有权利</td><td class="c">高：不能合法复制进技能库或二次分发</td></tr>
    <tr><th>作者明文限制</th><td>README 末尾注明：提取的代码 © OpenAI，不要重新分发</td><td class="c">高：仓库自带产物属受限内容</td></tr>
    <tr><th>平台与运行时</th><td>Skill 1 仅 macOS + 已装 ChatGPT.app；Skill 2 脚本需 Bun</td><td class="c">阻断：Windows 上 Skill 1 完全不可用</td></tr>
    <tr><th>体积</th><td>207 MB，反混淆产物一并提交进仓库</td><td class="a">中：克隆成本极高</td></tr>
    <tr><th>领域不匹配</th><td>我们的主业是具身智能落地 + 内容 IP，不是 JS 逆向</td><td class="a">中：装上大概率吃灰，还占上下文</td></tr>
  </table>
</div>

<p>但那套四件套——<strong>触发条件 / 路由表 / 安全护栏 / 留痕纪律——与具体领域完全无关</strong>，可以直接移植。我们现有的几个 Skill 目前都是静态的：这次踩的坑，下次照样再踩一遍。</p>

<p>移植时要做两处改造：去掉对 bun test 测试套件的硬依赖（我们的 Skill 多为 Markdown 型，无测试框架），改成「改脚本必须实跑一次验证」；路由表从它的 scripts/ + reference/ 结构改成适配我们的 references/ + scripts/ + assets/ 结构。</p>

<p>三条立刻可做的动作：<strong>给已有 Skill 各建一个 references/caveats.md</strong>，把踩过的坑写进去（微信编辑器吞掉哪些样式、哪次粘贴后错位了——这些现在是「每次重新讲一遍」，写进去就是永久能力）；<strong>下次排版时跑一遍新协议</strong>，跑完问一句「这轮有没有命中三个触发条件」；<strong>给每个 Skill 加统一的留痕前缀</strong>。</p>

<div class="srcline">
  <div class="h">这份审计的边界</div>
  推文正文因 X 平台拦截未能直接还原，<strong>本报告全部结论以仓库一手文件为准，不含推文转述</strong>。<br><br>
  作者身份（@dotey 即宝玉 / JimLiu）为旁证推断而非直接声明。仓库当前<strong>无开源许可证</strong>；本报告为研究性分析，不构成法律意见，不建议复制或二次分发该仓库内容。
</div>
</div>
</div>
</div>
</div>
</div>

---

*来源：神机百见-具身解读 · https://www.shenjibailian.com/jiedu/article/self-improving-skill-audit/*
