<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>国会今日到期索要答案、"玻璃翼"真相浮出水面、Sakana Fugu用"蜂群"打败单体巨头——AI治理进入新阶段 - Markdown</title>
    <style>
        body { 
            font-family: monospace; 
            white-space: pre-wrap; 
            word-wrap: break-word; 
            padding: 0; 
            background-color: #e5e5e5;
            color: #24292f;
            margin: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }
        .markdown-body {
            box-sizing: border-box;
            width: 100%;
            max-width: 980px;
            margin: 2em auto;
            padding: 45px;
            background-color: #fff;
            border: 1px solid #d0d7de;
            border-radius: 6px;
            font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
            white-space: normal;
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);
        }
        @media (prefers-color-scheme: dark) {
            body {
                background-color: #010409;
                color: #c9d1d9;
            }
            .markdown-body {
                background-color: #0d1117;
                border-color: #30363d;
                box-shadow: 0 4px 12px rgba(0,0,0,0.3);
            }
        }
        @media (max-width: 767px) {
            .markdown-body {
                padding: 15px;
                margin: 0;
                border-radius: 0;
                border-left: none;
                border-right: none;
            }
        }
    </style>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.5.0/github-markdown.min.css">
</head>
<body>---
title: '国会今日到期索要答案、"玻璃翼"真相浮出水面、Sakana Fugu用"蜂群"打败单体巨头——AI治理进入新阶段'
description: '6月26日，四位两党众议员对商务部长Lutnick的Fable 5封杀解释期限今日到期；Reuters/AP揭示NSA测试代号"Project Glasswing"，Mythos仅做漏洞识别而非实际入侵；日本Sakana AI推出Fugu Ultra多智能体编排模型，在SWE-bench Pro上得分73.7超越Opus 4.8和GPT-5.5；Oracle承认AI已削减21,000个岗位。'
pubDate: 2026-06-26
tags: ['AI', '分析', 'Fable 5', '国会', 'Project Glasswing', 'Sakana Fugu', '多智能体', 'Oracle', 'GPT-5.6', '行业动态']
---
6月26日，Fable 5封杀事件进入第14天。如本周连续报道所述，这场由美国商务部出口管制指令引发的前沿AI模型全球暂停，已经从Anthropic的企业危机升级为一个触及政府权力边界、行业公平竞争和AI技术路线选择的系统性事件。

但今天，三条全新的新闻线索正在将这场危机推向一个全新的阶段。**在华盛顿，四位两党众议员在6月18日发给商务部长Lutnick的信中设定了一个最后期限——要求在6月26日（今天）之前提供关于封杀决定的完整书面解释**，核心问题直指政府是否有权在没有正式法律程序的情况下让一个商业AI模型从互联网上消失。与此同时，据[Reuters和AP的最新报道](https://explainx.ai/blog/when-will-fable-5-be-available-again-2026)，NSA对Mythos的测试被确认为代号"**Project Glasswing**"的防御性政府项目——Mythos在数小时内识别了NSA分类系统中的漏洞，但这**并不等于**成功入侵了这些系统。而在东京，[Sakana AI于6月22日发布了Fugu Ultra](https://venturebeat.com/orchestration/no-claude-fable-5-no-problem-sakana-achieves-frontier-performance-with-new-fugu-multi-model-auto-synthesis-system)——一个多智能体编排模型，通过动态协调多个前沿模型，在SWE-bench Pro上得分73.7，超越Claude Opus 4.8（69.2）和GPT-5.5（58.6），以一种全新范式回应了"单一模型被封杀怎么办"的产业难题。

**这三个故事共同指向一个核心命题：当政府可以在没有正式法律程序的情况下让一个前沿AI模型消失，整个行业正在被迫重新思考"如何获得不可被切断的AI能力"。**

---

## 国会今日到期索要答案：为什么Lutnick的解释将定义AI监管边界？

### 发生了什么

6月18日，四位两党众议员——Sam Liccardo（民主党-加州）、Jay Obernolte（共和党-加州）、Ted Lieu（民主党-加州）和Scott Franklin（共和党-佛罗里达）——向商务部长Howard Lutnick发出一封[正式信函](https://liccardo.house.gov/media/press-releases/bipartisan-members-congress-seek-transparency-frontier-ai-export-controls)，要求商务部在**6月26日（今天）**之前提供关于Fable 5/Mythos 5出口管制指令的完整解释。

信函援引的法律机制是**《出口管制改革法》（Export Control Reform Act of 2018）下的14 C.F.R. § 744.22(b)"is informed"信函**——这是一项针对"新兴和基础技术"的全球许可要求。四位议员提出了四个核心问题：

| 问题 | 要点 |
|------|------|
| **是否给予Anthropic补救机会？** | 政府在下令封杀前是否给予Anthropic修复问题的机会？ |
| **漏洞是否Anthropic独有？** | 被识别的安全漏洞是Anthropic模型独有的，还是在其他已部署模型中同样存在？ |
| **法律程序是否合规？** | 商务部是否遵循了要求的法律程序？ |
| **"军事情报最终用途"的事实依据是什么？** | 将AI模型定性为"军事情报最终用途"的事实基础是什么？ |

议员们在信中明确警告：这一行动"**可能实质性地限制先进AI模型的分发、部署和使用，包括在美国国内**"，并可能"为整个AI领域的其他开发者、研究者、用户和投资者开创具有重大影响的先例"。

### 为什么Lutnick的回应（或沉默）是分水岭

**两党合作本身就是一个信号。** 在当前高度党派化的美国政治环境中，两位民主党人和两位共和党人联合署名要求对一项AI政策行动进行解释——这表明Fable 5封杀已经超越了党派分歧，成为一个涉及权力制衡的宪政问题。

更关键的是**利益冲突维度**。参议员Elizabeth Warren等人此前已多次[要求调查Lutnick家族在AI数据中心决策中的利益冲突](https://www.warren.senate.gov/newsroom/press-releases/warren-dean-democrats-urge-commerce-department-watchdog-to-investigate-lutnick-familys-conflicts-of-interest-impact-on-ai-data-center-decisions)。社交媒体上广泛流传的指控显示Lutnick与OpenAI存在财务关联——如果属实，一个与某AI公司有财务关系的商务部长下令封杀其竞争对手的旗舰模型，利益冲突的指控就会变得非常具体。

### 历史上的类比：1957年军方vs科学家听证会

**1957年"军队-科学家对抗"听证会。** 当时美国军方试图控制科学研究的保密分类权，科学家群体（以Oppenheimer听证会为代表）则主张研究的自主性。最终结果是建立了一套分类标准——军方可以保密特定研究，但不能对整个学科实施预先审查。

当前的情况有结构相似性：商务部使用出口管制指令（本为管制实体商品和军事技术设计的工具）来"封杀"一个软件/AI模型，绕过了专门的AI立法程序。如果商务部在6月26日后选择不回应——这本身就是一种回应：意味着政府认为自己有权在不解释的情况下执行此类行动。

---

## "玻璃翼"真相：Mythos到底对NSA做了什么？

### 核心事实纠正

此前在公众讨论中广泛流传的说法——参议员Mark Warner在6月11日的参议院情报委员会简报会上引用NSA局长Gen. Joshua Rudd的话称"Mythos几乎入侵了我们所有分类系统"——需要重要的细节修正。

据[explainx.ai引用Reuters和AP的报道](https://explainx.ai/blog/when-will-fable-5-be-available-again-2026)，NSA对Mythos的测试是在**Project Glasswing**框架下进行的——这是一个限制级别的美国政府计划，**专门设计用于在恶意攻击者之前发现和修复关键软件中的漏洞**。测试是华盛顿情报机构授权的防御性行动。

一位不愿透露姓名的美国官员告诉AP：Mythos在数小时内**识别（identified）**了某些漏洞——但这**并不意味着（did not mean）**它能够在相同时间内**利用（exploit）**这些漏洞。

**"识别漏洞"和"成功入侵"之间的差距，是理解整个封杀事件的关键。**

### 为什么这个区别如此重要

在网络安全领域，漏洞识别（vulnerability identification）和漏洞利用（vulnerability exploitation）是两个完全不同的能力层次：

- **漏洞识别**：发现系统可能存在弱点（例如"这个系统运行了过时版本的OpenSSL"）——这是防御性安全工作的核心
- **漏洞利用**：实际利用这些弱点获取未授权访问（例如"使用已知OpenSSL漏洞提取私钥"）——这是进攻性网络行动

Warner的"broke into almost all of our classified systems"是**对防御性漏洞识别结果的通俗化表述**，不是对实际入侵行为的描述。一位政府官员委托了一个专门为发现漏洞而设计的项目，Mythos在项目中出色完成了它被设计来做的事——发现漏洞。然后政府封杀了这个模型。

**这个叙事结构的荒诞性**正在成为Anthropic支持者最有力的论据：政府 commissioned 了一个漏洞发现测试，模型表现出色，政府因此封杀了它。

### 对封杀法律论证的影响

如果封杀的法律依据是Mythos的"军事情报最终用途"能力，那么"识别了漏洞"和"实际入侵了系统"之间的区别就至关重要。前者是任何高质量安全审计工具应具备的能力；后者才可能构成真正的安全威胁。

这也解释了为什么国会信函的第四个问题——"将模型定性为'军事情报最终用途'的事实依据是什么"——如此关键。如果事实依据仅仅是"在一个防御性项目中发现了漏洞"，那么这个标准将适用于几乎所有具备安全审计能力的前沿AI模型。

---

## Sakana Fugu Ultra：当"蜂群智能"成为单体巨头的替代方案

### 这是什么

[Sakana AI](https://sakana.ai/fugu/)——一家由Transformer论文共同作者Llion Jones和前Google Brain研究主管David Ha于2023年在东京创立的公司——在6月22日发布了Fugu Ultra。Fugu不是传统意义上的基础模型，而是一个**多智能体编排模型（orchestration model）**：它本身是一个LLM，被训练用来动态调用一个可替换的前沿模型池中的其他模型，包括递归调用自身。

简而言之：**Fugu不是一个更大的模型，而是一个更聪明的"调度员"。**

### 基准测试数据

| 基准测试 | Sakana Fugu Ultra | Claude Opus 4.8 | GPT-5.5 | Claude Fable 5（已下线） |
|---------|-------------------|-----------------|---------|------------------------|
| **SWE-bench Pro** | **73.7** | 69.2 | 58.6 | 80.0 |
| **LiveCodeBench** | **93.2** | — | — | 89.8 |
| **Humanity's Last Exam** | **50.0** | 49.8 | — | 53.3 |
| **GPQA-D** | **95.5** | — | — | — (Mythos: 94.6) |

关键数据解读：Fugu Ultra在SWE-bench Pro上得分73.7，**显著超越了Opus 4.8和GPT-5.5**，但仍低于被封杀的Fable 5（80.0）。在LiveCodeBench上，Fugu Ultra（93.2）甚至**超过了Fable 5**（89.8）。

### 为什么"编排即模型"可能是AI基础设施的未来

Sakana CEO David Ha在发布时说了一句精准概括行业焦虑的话：

> "依赖单一公司的模型作为国家基础设施是巨大的风险。正如近期的出口管制所示，顶级模型的访问权可能在一夜之间消失。集体智能是对这种权力集中的实际对冲。"

Fugu的架构优势在于：如果池中某个模型因监管、商业或技术原因不可用，Fugu可以**动态路由到其他可用模型**。这创造了一种前所未有的韧性——不是依赖任何一个模型不会被封杀，而是通过多样性确保整体系统的持续可用性。

但Fugu也有重要局限：

1. **定价不便宜**：Fugu Ultra定价为每百万输入token $5、输出$30——与GPT-5.5完全持平，远高于GLM-5.2（$1.40/$4.40）
2. **黑盒路由**：Fugu选择哪些底层模型以及如何协调是专有信息，用户无法知道具体调用了哪些模型
3. **内部token消耗**：编排过程中消耗的后台token（委派子任务、验证代码、路由决策）按标准费率计入用户账单
4. **原始能力上限**：在高度约束的单领域推理任务中，最大单体模型仍占优势

### 历史上的类比：从单一供应商到"云无关"

**2010年代的"云无关"（cloud-agnostic）运动。** 当企业意识到过度依赖AWS带来了定价风险和供应商锁定后，一批工具（Terraform、Kubernetes）应运而生，使应用可以在多个云之间迁移。Fugu代表了AI领域的类似理念——不是自建替代模型，而是在模型层建立一个抽象层。

**关键区别**：云无关工具降低性能的代价相对较小（计算就是计算）；而AI编排层可能引入延迟、成本增加和质量不一致。

---

## 今日其他重要消息

### Oracle承认AI已削减21,000个岗位——科技裁员逼近15万大关

[据Forbes 6月23日报道](https://www.forbes.com/sites/maryroeloffs/2026/06/23/ai-cost-21000-jobs-at-oracle-this-year-and-more-layoffs-could-be-coming/)，Oracle承认AI在2026年已导致21,000个岗位被裁减，且更多裁员可能即将到来。[据TechCrunch统计](https://techcrunch.com/2026/06/22/the-running-list-major-tech-layoffs-in-2026-where-employers-cited-ai/)，AI已成为2026年企业裁员的首要理由，上半年科技行业裁员总数已接近150,000人。2026年前五个月因AI导致的裁员（87,714）已超过2025年全年（54,836）。这是一个重要的经济数据拐点——AI不再只是"创造效率"，它正在以可量化的方式重塑就业市场。

### GPT-5.6泄露：代号"Iris Alpha"和"Ember Alpha"出现在Codex日志中

据[X平台研究者发现](https://x.com/JulianGoldieSEO/status/2059203636790702446)，OpenAI的Codex部署日志中短暂出现了"gpt-5.6"路由条目，随后被删除。泄露的内部代号包括**"Iris Alpha"和"Ember Alpha"**。[Polymarket预测市场](https://polymarket.com/event/gpt-5pt6-released-onptptpt-20260623051439980)目前对GPT-5.6在6月30日前发布的定价为**89%概率**。如6月23日报道所述，OpenAI首席科学家已将GPT-5.6预告为"有意义的改进"。如果GPT-5.6在6月底发布且Gemini 3.5 Pro仍未上线，OpenAI将成为Fable 5封杀期间唯一发布新闭源前沿模型的公司。

### Gemini 3.5 Pro：最后4天，Reddit社区按捺不住

Google CEO Sundar Pichai在5月19日Google I/O上承诺Gemini 3.5 Pro在"下个月"（6月）发布。截至6月26日，该模型仍仅在有限的Vertex AI企业预览中。[Reddit r/GeminiAI社区](https://www.reddit.com/r/GeminiAI/comments/1uczu7d/damn_it_google_where_is_gemini_35_pro_june_is/)的情绪正在从期待转向失望。Google的标准Gemini发布模式是在blog.google上发布一篇包含完整基准测试网格的博文，与API可用性同步上线。如果该博文在未来4天内不出现，这将是连续第二次Gemini Pro版本错过其公布窗口。

### Fable 5第14天：确认仍离线，"恢复"传言为UI错误

据[explainx.ai 6月25日确认](https://explainx.ai/blog/is-fable-5-back-2026)，Anthropic员工确认Fable和Mythos的流量为零——此前社交媒体上流传的"恢复访问"报告为Claude界面UI错误，不反映模型实际可用状态。当前关键时间节点：**7月8日**（Anthropic的政府ID验证政策生效——可能是美国优先恢复的机制），**8月1日**（白宫6月2日行政令的"覆盖前沿模型框架"60天截止日期）。预测市场对7月1日前恢复的定价约为**57%**。

---

## 行业趋势：今日数据带来的新视角

### "AI能力可获得性"正在取代"AI能力先进性"成为核心战略变量

Fable 5封杀进入第二周，Sakana Fugu的发布和国会的质询信共同揭示了一个范式转移：**行业竞争的焦点正在从"谁的模型最强"转向"谁的模型不可被切断"。** Fugu通过多智能体编排实现韧性，GLM-5.2通过开源权重实现不可封杀，OpenRouter Fusion通过混合路由实现冗余——这些都是对同一个问题的不同技术回答。当一个模型的"可获得性"可以被政府在一夜之间归零时，架构多样性就从"优化选项"变成了"生存策略"。

### "漏洞识别"与"漏洞利用"的混淆正在被武器化

Project Glasswing的真相浮出水面——Mythos是"识别"了漏洞而非"利用"了漏洞——揭示了一个危险的叙事模式：政府官员使用通俗化的表述（"broke into"），媒体传播未经修正的版本，公众基于错误理解形成舆论，最终政策基于公众舆论被执行。在AI安全领域，"模型可以发现漏洞"和"模型可以入侵系统"之间的技术区别，正在被有意或无意地模糊。如果"发现漏洞"成为封杀模型的依据，那么每一个具备安全审计能力的前沿模型都处于潜在风险中。

---

## 关键要点

- **四位两党众议员对商务部长Lutnick的Fable 5封杀解释期限今日（6月26日）到期**——四个核心问题直指政府是否有权在无正式法律程序的情况下让商业AI模型消失，Lutnick是否回应以及如何回应将定义AI监管的权力边界
- **"Project Glasswing"真相揭示NSA测试为防御性项目**——Mythos识别了分类系统漏洞但未被证实实际入侵，Warner"broke into all classified systems"的表述是对漏洞识别结果的通俗化，这一区别对封杀的法律依据至关重要
- **Sakana AI Fugu Ultra通过多智能体编排实现前沿性能**——SWE-bench Pro得分73.7超越Opus 4.8和GPT-5.5，LiveCodeBench得分93.2超越Fable 5，"编排即模型"为行业提供了"不可被切断的AI能力"新范式
- **Oracle承认AI已削减21,000岗位，2026上半年科技裁员逼近15万**——AI首次成为企业裁员的首要理由，经济影响从"理论预测"进入"量化现实"
- **GPT-5.6代号"Iris Alpha/Ember Alpha"出现在Codex日志中**，Polymarket对6月30日前发布的概率为89%；Gemini 3.5 Pro仅剩4天，仍未发布

---

## 常见问题

### 国会的6月26日截止日期对Fable 5恢复有什么影响？

国会的截止日期不直接决定Fable 5的命运——商务部可以选择回应、部分回应或不回应。但如果商务部选择不回应，它将向国会传递一个信号：政府认为自己有权在不解释的情况下执行此类行动。这可能促使国会启动更正式的监督程序（如传唤或立法）。对于AI行业来说，Lutnick的回应（如果有）将首次提供政府封杀一个商业AI模型的正式法律和技术依据。

### Project Glasswing揭示的"漏洞识别"vs"漏洞利用"区别为什么重要？

如果封杀的依据是Mythos"入侵了NSA系统"，这是一个进攻性网络安全威胁。但如果依据是Mythos"识别了NSA系统中的漏洞"——这是任何高质量安全审计工具应具备的基本能力，也是政府委托Project Glasswing让Mythos做的事。如果"发现漏洞"成为封杀理由，那么每个具备安全审计能力的前沿模型都面临同样的风险，因为发现漏洞本身就是安全研究的核心价值。

### Sakana Fugu Ultra和传统AI模型有什么本质区别？

传统AI模型（如GPT-5.5、Claude Opus 4.8）是单体模型——一个巨大的神经网络处理所有任务。Fugu Ultra本身是一个LLM，但它的核心能力不是直接回答问题，而是将复杂问题分解为子任务，动态分派给一个可替换的前沿模型池中的不同模型，验证它们的输出，最终综合答案。这意味着如果某个底层模型不可用（因为封杀、故障或商业原因），Fugu可以路由到其他模型——这是架构层面的"韧性"，而非模型层面的"强大"。

### AI导致的裁员数据是否被夸大？

AI作为裁员理由的数据有两层复杂性：一是部分企业可能将AI作为裁员的便利借口（"AI能做这个工作"比"我们要削减成本"听起来更具战略合理性）；二是即使AI不是唯一原因，它也在改变企业评估人力需求的基线。Oracle承认21,000个岗位与AI直接相关是一个罕见的具体数字——大多数企业不会如此透明。150,000的总数来自TechCrunch的跟踪统计，覆盖的是"明确引用AI作为裁员理由之一"的企业。

### 如果GPT-5.6在6月底发布而Gemini 3.5 Pro跳票，意味着什么？

这将意味着OpenAI在Fable 5封杀的整个窗口期内成功发布了唯一的新闭源前沿模型——在竞争对手被封杀、另一个竞争对手延误的情况下获得巨大的市场优势窗口。这也会强化一种叙事：6月2日的行政令和6月12日的封杀指令客观上有利于OpenAI的市场地位——这正是国会质询信和Lutnick利益冲突指控的政治背景。

---

## 参考资料

- [Congressman Sam Liccardo - Bipartisan Members of Congress Seek Transparency on Frontier AI Export Controls](https://liccardo.house.gov/media/press-releases/bipartisan-members-congress-seek-transparency-frontier-ai-export-controls)
- [TechJack Solutions - Congress Demands Legal Justification for Fable 5 Export Controls](https://techjacksolutions.com/ai-brief/congress-demands-legal-justification-for-fable-5-export-controls/)
- [AI Weekly - House Lawmakers Press Lutnick on Legal Basis for Anthropic AI Ban](https://aiweekly.co/alerts/house-lawmakers-press-lutnick-on-legal-basis-for-anthropic-ai-ban)
- [explainx.ai - When Will Fable 5 Be Available Again? Everything We Know](https://explainx.ai/blog/when-will-fable-5-be-available-again-2026)
- [explainx.ai - Is Fable 5 Back? No — Full Status, Timeline](https://explainx.ai/blog/is-fable-5-back-2026)
- [R Street Institute - The Fable Fiasco: A Bad Idea Applied Badly](https://www.rstreet.org/commentary/the-fable-fiasco-a-bad-idea-applied-badly/)
- [Senator Elizabeth Warren - Democrats Urge Investigation Into Lutnick's AI Conflicts](https://www.warren.senate.gov/newsroom/press-releases/warren-dean-democrats-urge-commerce-department-watchdog-to-investigate-lutnick-familys-conflicts-of-interest-impact-on-ai-data-center-decisions)
- [VentureBeat - No Claude Fable 5? No problem: Sakana achieves frontier performance with Fugu](https://venturebeat.com/orchestration/no-claude-fable-5-no-problem-sakana-achieves-frontier-performance-with-new-fugu-multi-model-auto-synthesis-system)
- [Sakana AI - Fugu: Multi-Agent System as a Model](https://sakana.ai/fugu/)
- [MarkTechPost - Sakana AI Launches Sakana Fugu Orchestration Model](https://www.marktechpost.com/2026/06/22/sakana-ai-launches-sakana-fugu-an-orchestration-model-that-routes-tasks-across-a-swappable-pool-of-frontier-llms/)
- [Forbes - AI Cost 21,000 Jobs at Oracle This Year](https://www.forbes.com/sites/maryroeloffs/2026/06/23/ai-cost-21000-jobs-at-oracle-this-year-and-more-layoffs-could-be-coming/)
- [TechCrunch - The Running List: Major Tech Layoffs in 2026 Where Employers Cited AI](https://techcrunch.com/2026/06/22/the-running-list-major-tech-layoffs-in-2026-where-employers-cited-ai/)
- [CNBC - AI Is Now the Leading Reason Companies Give for Cutting Jobs](https://www.cnbc.com/2026/06/05/ai-is-now-the-leading-reason-companies-give-for-cutting-jobs-says-new-report-what-that-means-for-workers.html)
- [WaveSpeed AI - GPT-5.6 Just Showed Up in OpenAI's Codex Logs](https://wavespeed.ai/blog/posts/gpt-5-6-canary-leak-what-we-know/)
- [Polymarket - GPT-5.6 Released On?](https://polymarket.com/event/gpt-5pt6-released-onptptpt-20260623051439980)
- [Reddit r/GeminiAI - Where Is Gemini 3.5 Pro?](https://www.reddit.com/r/GeminiAI/comments/1uczu7d/damn_it_google_where_is_gemini_35_pro_june_is/)
- [FutureSearch - How the US vs. Anthropic Standoff on Claude Fable Will End](https://futuresearch.ai/claude-fable-ban-forecast/)
- [Prompt AI Learning - Today in AI: 5 Big Stories, June 26, 2026](https://promptailearning.com/ai-news/daily/top-5-ai-news-june-26-2026)
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
    document.addEventListener("DOMContentLoaded", () => {
        try {
            const rawMarkdown = document.body.innerText;
            const isDark = window.matchMedia("(prefers-color-scheme: dark)").matches;

            let webUrl = window.location.pathname;
            if (webUrl.endsWith('/index.md')) {
                webUrl = webUrl.substring(0, webUrl.length - 'index.md'.length) || '/';
            } else {
                webUrl = webUrl.replace(/.md$/, '');
            }
            const linkColor = isDark ? '#58a6ff' : '#0969da';
            const navHtml = 
                '<div style="margin-bottom: 24px; font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;">' +
                    '<a href="/index.md" style="color: ' + linkColor + '; text-decoration: none;">← Back to Home</a>' +
                    '<span style="margin: 0 8px; color: ' + (isDark ? '#484f58' : '#d0d7de') + ';">|</span>' +
                    '<a href="' + webUrl + '" style="color: ' + linkColor + '; text-decoration: none;">Switch to Web View</a>' +
                '</div>';

            let contentToRender = rawMarkdown;
            let frontmatterHtml = '';
            
            const fmMatch = rawMarkdown.match(/^---\s*[\r\n]+([\s\S]*?)[\r\n]+---\s*/);
            
            if (fmMatch) {
                contentToRender = rawMarkdown.substring(fmMatch[0].length);
                const yamlText = fmMatch[1];
                
                const borderColor = isDark ? '#30363d' : '#d0d7de';
                const bgColor = isDark ? '#161b22' : '#f6f8fa';
                const keyColor = isDark ? '#8b949e' : '#57606a';
                const valColor = isDark ? '#c9d1d9' : '#24292f';

                const rows = yamlText.split('\n')
                    .filter(line => line.trim() && line.includes(':'))
                    .map(line => {
                        const splitIdx = line.indexOf(':');
                        const key = line.slice(0, splitIdx).trim();
                        let val = line.slice(splitIdx + 1).trim();
                        if ((val.startsWith("'") && val.endsWith("'")) || (val.startsWith('"') && val.endsWith('"'))) {
                            val = val.slice(1, -1);
                        }
                        
                        return '<tr>' +
                            '<td style="white-space:nowrap; padding:8px 12px; color:' + keyColor + '; font-weight:600; border-bottom:1px solid ' + borderColor + '; width:1%;">' + key + '</td>' +
                            '<td style="padding:8px 12px; color:' + valColor + '; border-bottom:1px solid ' + borderColor + ';">' + val + '</td>' +
                        '</tr>';
                    }).join('');
                
                if (rows) {
                    frontmatterHtml = 
                        '<div style="margin-bottom: 32px; border:1px solid ' + borderColor + '; border-radius:6px; overflow:hidden; background-color:' + bgColor + ';">' +
                            '<table style="width:100%; border-collapse:collapse; font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; font-size:13px;">' +
                                rows +
                            '</table>' +
                        '</div>';
                }
            }
            
            const renderedHtml = marked.parse(contentToRender);
            
            const wrapper = document.createElement('article');
            wrapper.className = 'markdown-body';
            wrapper.innerHTML = navHtml + frontmatterHtml + renderedHtml;
            
            document.body.innerHTML = '';
            document.body.appendChild(wrapper);
        } catch (e) {
            console.error("Markdown rendering failed", e);
        }
    });
</script>
</body>
</html>