<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>JSON on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/json/</link>
        <description>Recent content in JSON on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Wed, 22 Apr 2026 21:48:37 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/json/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>8 种常见配置文件格式怎么选：INI、XML、JSON、YAML、TOML 到 Markdown</title>
        <link>https://www.knightli.com/2026/04/22/common-config-file-formats-ini-xml-json-yaml-toml-markdown/</link>
        <pubDate>Wed, 22 Apr 2026 21:48:37 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/04/22/common-config-file-formats-ini-xml-json-yaml-toml-markdown/</guid>
        <description>&lt;p&gt;只要你经常写代码、折腾服务器、改游戏参数，或者维护各种工具链，基本都逃不过配置文件。&lt;/p&gt;
&lt;p&gt;很多时候，真正把程序搞炸的不是算法，也不是框架，而是一行不起眼的配置：少了一个空格、多了一个逗号，或者某个值写成了系统不想看到的样子。把常见配置文件格式放在一起看，很自然会回到几个核心问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些格式更适合人来写&lt;/li&gt;
&lt;li&gt;哪些格式更适合机器来读&lt;/li&gt;
&lt;li&gt;在 AI Agent 时代，配置文件这件事会不会发生变化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇文章就是围绕这个问题做的一次简洁整理。&lt;/p&gt;
&lt;h2 id=&#34;01-配置文件本质上是在协调人和机器&#34;&gt;01 配置文件，本质上是在协调“人”和“机器”
&lt;/h2&gt;&lt;p&gt;有个说法我觉得很准确：配置文件其实就是人和程序之间签下的一份“行为契约”。&lt;/p&gt;
&lt;p&gt;它的价值很明显。你不需要重写业务代码，也不用重新编译，只改几行文本，就能改变网站行为、应用逻辑、部署方式，甚至游戏画质和隐藏选项。&lt;/p&gt;
&lt;p&gt;问题在于，这份契约天然存在矛盾。&lt;/p&gt;
&lt;p&gt;从人的角度，我们想要的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;好看、好写、层级清晰&lt;/li&gt;
&lt;li&gt;最好支持注释，方便自己和别人回来看&lt;/li&gt;
&lt;li&gt;能少写就少写，最好还能复用和模块化&lt;/li&gt;
&lt;li&gt;写错时别一碰就炸&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但从机器的角度，它并不关心优不优雅，只关心两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解析要快&lt;/li&gt;
&lt;li&gt;规则要严，类型要清楚，最好没有歧义&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么配置文件格式总是在“人类友好”和“机器友好”之间拉扯。越适合人阅读的格式，机器往往解析更麻烦；越适合机器高效处理的格式，人写起来通常越容易崩溃。&lt;/p&gt;
&lt;h2 id=&#34;02-ini简单直白但能力有限&#34;&gt;02 INI：简单直白，但能力有限
&lt;/h2&gt;&lt;p&gt;先从 &lt;code&gt;INI&lt;/code&gt; 说起。&lt;/p&gt;
&lt;p&gt;它的优点非常直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构简单&lt;/li&gt;
&lt;li&gt;分区加键值对，几乎一眼就能看懂&lt;/li&gt;
&lt;li&gt;支持注释&lt;/li&gt;
&lt;li&gt;很适合一些轻量配置场景，比如游戏参数微调、基础环境设置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你改过老游戏配置，或者手动调过一些工具参数，基本都见过它。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;INI&lt;/code&gt; 的问题也很明显。它的结构太扁平，原生不适合表达复杂嵌套和数组。再加上它通常缺少严格的类型系统，很多值本质上就是一串文本，最终怎么解释，要靠程序自己处理。&lt;/p&gt;
&lt;p&gt;所以 &lt;code&gt;INI&lt;/code&gt; 更像是一台老式但顺手的工具车，轻活很好用，复杂项目就容易力不从心。&lt;/p&gt;
&lt;p&gt;例如一个很典型的 &lt;code&gt;INI&lt;/code&gt; 配置会长这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[server]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;127.0.0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[feature]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;enable_cache&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;03-xml严谨稳定但写起来很累&#34;&gt;03 XML：严谨、稳定，但写起来很累
&lt;/h2&gt;&lt;p&gt;第二位是 &lt;code&gt;XML&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你维护过老 Java 项目，或者见过一大堆成对闭合标签的配置文件，对它应该不陌生。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;XML&lt;/code&gt; 的优点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;层级结构明确&lt;/li&gt;
&lt;li&gt;支持注释&lt;/li&gt;
&lt;li&gt;规则严整&lt;/li&gt;
&lt;li&gt;可以配合 schema 做强校验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着机器在正式读取前，就能先知道字段类型、出现次数和结构约束，安全感很高。&lt;/p&gt;
&lt;p&gt;但它对人的折磨也很经典：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标签冗长&lt;/li&gt;
&lt;li&gt;视觉噪音很大&lt;/li&gt;
&lt;li&gt;文件容易膨胀&lt;/li&gt;
&lt;li&gt;稍微漏一个闭合标签，就可能整页报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;XML&lt;/code&gt; 非常像一份盖章齐全的正式合同。机器喜欢，人工维护 often 很累。如今很多新项目已经不再优先选它，但在一些老系统和严规则场景里，它依然没有完全退场。&lt;/p&gt;
&lt;p&gt;同样的配置如果写成 &lt;code&gt;XML&lt;/code&gt;，大概会是这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;config&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;host&amp;gt;&lt;/span&gt;127.0.0.1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/host&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;port&amp;gt;&lt;/span&gt;8080&lt;span class=&#34;nt&#34;&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;feature&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;enable_cache&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/enable_cache&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/feature&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/config&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;04-json数据交换霸主但不适合手写复杂配置&#34;&gt;04 JSON：数据交换霸主，但不适合手写复杂配置
&lt;/h2&gt;&lt;p&gt;说到现代开发，&lt;code&gt;JSON&lt;/code&gt; 几乎绕不过去。&lt;/p&gt;
&lt;p&gt;对 &lt;code&gt;JSON&lt;/code&gt; 来说，一个很典型的判断是：作为数据交换格式，它非常强；但作为人工维护的配置文件，它有点别扭。&lt;/p&gt;
&lt;p&gt;它的优势包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对象和数组结构清晰&lt;/li&gt;
&lt;li&gt;网络传输友好&lt;/li&gt;
&lt;li&gt;解析器成熟&lt;/li&gt;
&lt;li&gt;对 Web API 和前后端通信非常合适&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其和 &lt;code&gt;XML&lt;/code&gt; 放在一起时，&lt;code&gt;JSON&lt;/code&gt; 的轻量优势会非常明显。同样的数据结构，&lt;code&gt;JSON&lt;/code&gt; 通常更短，也更适合在网络里传来传去。&lt;/p&gt;
&lt;p&gt;但它有个致命缺点：标准 &lt;code&gt;JSON&lt;/code&gt; 不支持注释。&lt;/p&gt;
&lt;p&gt;另外，它的语法也比较严格：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;key 必须带双引号&lt;/li&gt;
&lt;li&gt;最后一项后面不能多逗号&lt;/li&gt;
&lt;li&gt;少一个符号就会直接报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;JSON&lt;/code&gt; 很适合 API、服务之间的数据交换，却不总是适合手动维护、需要写说明、需要频繁修改的配置文件。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;server&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;host&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;port&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;feature&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;enable_cache&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;05-yaml可读性很强但缩进和隐式类型会坑你&#34;&gt;05 YAML：可读性很强，但缩进和隐式类型会坑你
&lt;/h2&gt;&lt;p&gt;如果你碰过 Docker、CI/CD、Kubernetes、自动化部署，基本一定和 &lt;code&gt;YAML&lt;/code&gt; 打过交道。&lt;/p&gt;
&lt;p&gt;它最吸引人的地方，就是看起来很“干净”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;少了很多大括号和引号&lt;/li&gt;
&lt;li&gt;用缩进表达层级&lt;/li&gt;
&lt;li&gt;支持注释&lt;/li&gt;
&lt;li&gt;还能做锚点复用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以从人的第一眼体验来说，&lt;code&gt;YAML&lt;/code&gt; 通常比 &lt;code&gt;JSON&lt;/code&gt; 友好得多。&lt;/p&gt;
&lt;p&gt;但问题也正出在这里。它把很多复杂性藏起来了，实际使用时经常出现两类经典事故：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缩进地狱&lt;/li&gt;
&lt;li&gt;隐式类型转换&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缩进问题很好理解，空格多一个少一个，配置就可能直接坏掉。更麻烦的是隐式类型转换，比如某些看起来像普通字符串的值，可能会被自动解释成布尔值或别的类型。&lt;/p&gt;
&lt;p&gt;这也是为什么很多人一边夸 &lt;code&gt;YAML&lt;/code&gt; 好看，一边又被它折腾得很惨。它在人类阅读体验上确实很好，但机器解析它时并不轻松，而且不同解析库之间还可能有细微差异。&lt;/p&gt;
&lt;p&gt;同样的配置写成 &lt;code&gt;YAML&lt;/code&gt;，通常会更清爽：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;127.0.0.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;enable_cache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;06-toml在可读性和确定性之间找平衡&#34;&gt;06 TOML：在可读性和确定性之间找平衡
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TOML&lt;/code&gt; 经常被放在“当代均衡答案”的位置上。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TOML&lt;/code&gt; 的好处在于，它有点像把 &lt;code&gt;INI&lt;/code&gt; 的直观和 &lt;code&gt;JSON&lt;/code&gt; 的类型明确结合在一起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持注释&lt;/li&gt;
&lt;li&gt;结构清楚&lt;/li&gt;
&lt;li&gt;强类型更明确&lt;/li&gt;
&lt;li&gt;日期时间等常见类型支持更自然&lt;/li&gt;
&lt;li&gt;不容易出现 &lt;code&gt;YAML&lt;/code&gt; 那种隐式转换坑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其在现代工具链里，&lt;code&gt;TOML&lt;/code&gt; 已经越来越常见，比如 &lt;code&gt;Python&lt;/code&gt; 的 &lt;code&gt;pyproject.toml&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;当然它也不是没有缺点。对于很深层的嵌套结构，&lt;code&gt;TOML&lt;/code&gt; 会显得有点啰嗦，路径式书写写多了会烦。但如果场景是中小型项目配置、工具配置、包管理配置，&lt;code&gt;TOML&lt;/code&gt; 的整体体验往往比较稳。&lt;/p&gt;
&lt;p&gt;如果你想找一种“注释有、语义清、机器也不难受”的格式，&lt;code&gt;TOML&lt;/code&gt; 确实值得优先考虑。&lt;/p&gt;
&lt;p&gt;一个常见的 &lt;code&gt;TOML&lt;/code&gt; 写法会像这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;feature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;enable_cache&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-conf-和-apache-配置不是通用格式而是领域语法&#34;&gt;07 &lt;code&gt;.conf&lt;/code&gt; 和 Apache 配置：不是通用格式，而是领域语法
&lt;/h2&gt;&lt;p&gt;有一点很值得提醒：很多人看到 &lt;code&gt;.conf&lt;/code&gt;，会误以为它是一种统一格式，其实不是。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.conf&lt;/code&gt; 只是“configuration”的后缀名，里面到底怎么写，完全看具体系统自己的规则。也就是说，&lt;code&gt;.conf&lt;/code&gt; 更像一个大类，不是一套标准语法。&lt;/p&gt;
&lt;p&gt;拿 &lt;code&gt;Apache&lt;/code&gt; 配置举例，它的配置方式很有代表性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一部分像单行指令&lt;/li&gt;
&lt;li&gt;一部分又像带作用域的标签结构&lt;/li&gt;
&lt;li&gt;很适合 Web 服务器这种特定领域&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;优点是对运维场景很顺手，表达权限、路由、虚拟主机这类规则比较自然；问题是它几乎只服务于自己的生态，不具备很强的通用性。&lt;/p&gt;
&lt;p&gt;所以这类配置更像“领域专用语言”，在特定系统里很好用，但不适合拿来当通用配置格式看待。&lt;/p&gt;
&lt;p&gt;例如一个极简的 Apache 风格配置，会更像一组指令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Listen&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;*:80&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/www/html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;08-protocol-buffers工业级强类型方案但门槛高&#34;&gt;08 Protocol Buffers：工业级强类型方案，但门槛高
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Protocol Buffers&lt;/code&gt; 其实已经不是传统意义上的“随手写个配置文件”了，而更像一套正式的数据定义和序列化方案。&lt;/p&gt;
&lt;p&gt;它的优势很强：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;强类型&lt;/li&gt;
&lt;li&gt;schema 明确&lt;/li&gt;
&lt;li&gt;向前向后兼容性好&lt;/li&gt;
&lt;li&gt;二进制传输体积小&lt;/li&gt;
&lt;li&gt;机器处理效率很高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但代价也很明显：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要先写 &lt;code&gt;.proto&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要工具链和编译步骤&lt;/li&gt;
&lt;li&gt;对小项目来说门槛偏高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它不适合“我就配个小工具”的轻量场景，但如果你是在做大型系统、RPC、分布式服务或者长期演进的数据协议，它会比很多轻量配置格式更可靠。&lt;/p&gt;
&lt;p&gt;它的写法更接近“先定义结构，再生成代码”：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;syntax&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;proto3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;ServerConfig&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;int32&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enable_cache&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;09-在-ai-agent-时代markdown-可能重新变成配置方式&#34;&gt;09 在 AI Agent 时代，Markdown 可能重新变成“配置方式”
&lt;/h2&gt;&lt;p&gt;最有意思的部分，是把 &lt;code&gt;Markdown&lt;/code&gt; 也算进了“配置文件”的讨论里。&lt;/p&gt;
&lt;p&gt;这在传统程序视角里听起来有点奇怪，因为 &lt;code&gt;Markdown&lt;/code&gt; 本来更像文档格式。但如果把对象换成大语言模型和 AI Agent，这个判断其实是成立的。&lt;/p&gt;
&lt;p&gt;为什么？&lt;/p&gt;
&lt;p&gt;因为传统程序依赖的是严格语法和固定字段，而大模型更擅长理解语义、结构和上下文。对于它们来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标题就是层级&lt;/li&gt;
&lt;li&gt;列表就是步骤&lt;/li&gt;
&lt;li&gt;加粗就是强调&lt;/li&gt;
&lt;li&gt;自然语言本身就能承载规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，当配置对象从“死板的解析器”变成“能读懂语义的 Agent”，&lt;code&gt;Markdown&lt;/code&gt; 这类人类友好的结构化文本，反而可能成为一种更自然的配置形式。&lt;/p&gt;
&lt;p&gt;这也是一个很关键的判断：在传统软件时代，很多配置格式是为了让人去适应机器；而在 AI 时代，机器开始反过来适应人的表达。&lt;/p&gt;
&lt;p&gt;比如给 Agent 写任务配置，完全可能直接写成这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 任务目标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;为新用户写一封欢迎邮件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 要求
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 语气友好
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 不超过 150 字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 提到产品的 3 个核心功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 禁止事项
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 不要承诺不存在的功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; 不要使用夸张营销语气
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;10-到底该怎么选&#34;&gt;10 到底该怎么选
&lt;/h2&gt;&lt;p&gt;如果把这些观点压缩一下，我觉得可以简单分成这样几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想要极简、轻量、扁平配置：&lt;code&gt;INI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要强结构、强校验、老系统兼容：&lt;code&gt;XML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要网络传输和接口交换：&lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要高可读性、云原生和部署配置：&lt;code&gt;YAML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要更稳的现代通用配置体验：&lt;code&gt;TOML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要特定系统内部规则：&lt;code&gt;.conf&lt;/code&gt; / &lt;code&gt;Apache&lt;/code&gt; 一类 DSL&lt;/li&gt;
&lt;li&gt;想要工业级协议和长期演进能力：&lt;code&gt;Protocol Buffers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;面向 AI Agent 的自然表达和任务编排：&lt;code&gt;Markdown&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以“最好的配置文件格式”其实并不存在。它取决于你是在为谁写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为人维护&lt;/li&gt;
&lt;li&gt;为机器高速解析&lt;/li&gt;
&lt;li&gt;为服务之间通信&lt;/li&gt;
&lt;li&gt;还是为 AI Agent 理解和执行&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;简单总结&#34;&gt;简单总结
&lt;/h2&gt;&lt;p&gt;配置文件的发展史，本质上就是人和机器不断重新分配理解成本的过程。&lt;/p&gt;
&lt;p&gt;过去是人迁就机器，所以我们要记各种括号、缩进、引号和严格规则。现在随着大语言模型和 Agent 系统越来越成熟，机器开始更能理解自然表达，于是“配置”这件事本身也在变化。&lt;/p&gt;
&lt;p&gt;也许未来很多场景里，配置文件不再是某种固定格式，而更像一段结构化意图说明。而在那之前，&lt;code&gt;JSON&lt;/code&gt;、&lt;code&gt;YAML&lt;/code&gt;、&lt;code&gt;TOML&lt;/code&gt;、&lt;code&gt;INI&lt;/code&gt;、&lt;code&gt;XML&lt;/code&gt; 这些格式依然会长期共存，各自占据最适合自己的位置。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
