Markdown 真死了吗?别急,问题不在 Markdown 😅
你刷到“Markdown 已死?HTML 当立?”这种标题,多半是被长文档折磨过。
现实是:
- 给人读:Markdown 依然很香。
- 给 AI 智能体交换信息:Markdown 一旦超过 100 行,就容易变成“找重点大赛”。
- 用 HTML:结构很强,机器好解析;但标签、样式、无用属性一堆,智能体要先“扫垃圾”。
咱们要的其实是第三条路:更像 HTML 那样有结构,但又像 Markdown 那样干净。一层专门给智能体用的“交互层”。
下面这篇就教你怎么落地。你照着抄模板就能用。
1)为什么 Markdown 长了就难用
Markdown 的问题不在语法,而在“缺少强约束”。
你写 20 行没事。 写到 200 行,常见灾难就来了:
- 重点埋在段落里:智能体要读整段才能知道关键字段是什么。
- 列表层级漂移:缩进一乱,含义就变味。
- 同一信息多处出现:目标、约束、背景、输出格式散落在不同小节。
- 检索成本高:你让另一个智能体“只改预算字段”,它得通篇翻。
人类读文还能跳读。 智能体一旦要“自动解析 + 自动执行”,Markdown 就开始吃力。
2)HTML 适合机器,但对智能体是“噪音制造机”
HTML 的强项是结构明确。比如 <table>、<section>、<li> 这些。
但当你真拿 HTML 做智能体之间的协议,会出现一个尴尬点:
- 标签太多。
- 属性太多。
- 样式太多。
- 语义和展示经常混在一起。
智能体接到一坨 HTML,经常得先做这件事:
把没用的标签、style、class、空 div 清掉,再提取结构。
这就很浪费 token,也浪费时间。
3)给智能体的“交互层”应该长什么样
记住这四个标准,基本不会翻车:
- 少噪音:能不用标签就不用,能短就短。
- 强结构:字段固定、区块固定,别让模型猜。
- 可校验:最好能直接 JSON Schema / YAML 校验。
- 可增量更新:只改一个字段,不要整段重写。
你会发现,一个很实用的策略是:
外壳用极简标记(便于人读),核心数据用 JSON/YAML(便于机器解析)。
这就是“类似 HTML,但更简单”的路子。
4)推荐的实战格式:Slim Blocks(极简区块)
我常用一套写法,长得像 Markdown,但每个块都有固定名字和固定字段。 你可以把它当成“给智能体的轻协议”。
模板(直接复制就能用)
@meta
id: task_2026_001
version: 1
lang: zh
@goal
一句话目标:
@context
- 背景:
- 已知信息:
- 不要做的事:
@inputs(json)
{
"topic": "",
"audience": "",
"constraints": []
}
@output_contract
- 输出类型:markdown / json / html / text
- 必须包含:
- 禁止包含:
@work
- 步骤约束(可选):
- 质量检查点:
@deliverable
在这里输出最终内容
你会发现它有两个优点:
- 人类看着不累(比 HTML 清爽)。
- 智能体很好抓重点(每块含义固定)。
5)示例:让一个智能体写教程,另一个智能体做审稿
A 智能体(作者)收到的任务
@meta
id: article_42
version: 3
lang: zh
@goal
写一篇面向产品经理的《用 RAG 搭一个公司知识库》教程。
@context
- 背景:公司内部资料散落在飞书、网盘、Confluence。
- 读者:不写代码也能看懂。
- 不要做的事:别堆术语,别贴一堆论文。
@inputs(json)
{
"length": "1500-2200",
"tone": "口语化,像同事聊天",
"must_include": ["架构图文字版", "选型建议", "避坑清单"],
"tools": ["Qdrant", "OpenAI/兼容接口"]
}
@output_contract
- 输出类型:markdown
- 必须包含:标题、导语、小标题、要点列表、示例、避坑清单
- 禁止包含:空话、泛泛而谈
B 智能体(审稿)怎么“只改一处”
它不用通篇改,只要做增量指令:
@patch
target: @deliverable
operation: replace_section
section_title: "避坑清单"
content: |
- 向量库没分 namespace:不同业务数据串味,答复像精神分裂
- chunk 太大:检索命中却不精确,回答飘
- 没做权限:知识库变成内网信息泄露器
这种“补丁式更新”对多智能体协作特别友好。 你让审稿智能体改一个模块,它就只动那一块,不会把整篇文章重写得面目全非。
6)什么时候用 JSON,什么时候用“区块协议”
给你一个很直白的选择表:
- 纯机器对机器(要入库、要程序解析、要校验):用 JSON。
- 人要参与阅读 + 机器也要解析:用 Slim Blocks + 内嵌 JSON。
- 纯人读的长文档:Markdown 随便写,别折磨自己。
如果你现在做的是“智能体流水线”(规划→执行→审稿→发布),强烈建议用第二种。
7)避坑清单(真的很常见)
- 块名随意起:今天叫
@goal,明天叫@target,下游智能体会懵。 - 同一信息多处写:目标在
@goal,又在@context复述一遍,模型会自相矛盾。 - 输出契约不写清:不声明“必须包含/禁止包含”,你会得到一堆花里胡哨的废话。
- 把展示细节塞进协议:比如颜色、字号、CSS。智能体不需要,噪音暴涨。
- 缺少版本号:协议升级后,旧智能体还按老规则解析,结果就会很魔幻。
8)一套落地步骤:你今天就能开跑
- 挑一个你常做的任务:写文章、生成 PRD、整理会议纪要都行。
- 用上面模板把任务拆成固定区块。
- 把关键输入收敛到
@inputs(json),别散落在段落里。 - 把输出要求收敛到
@output_contract。 - 多智能体协作时,用
@patch做增量更新,少“全文重写”。
你会明显感觉到:
- 智能体更听话。
- 返工变少。
- 你不用每天盯着 200 行 Markdown 找“那句话到底写哪儿了”。
结尾:Markdown 没死,只是“对象不对”
Markdown 继续服务人类写作。 智能体之间的交换,换一套更规矩的结构就行。
你需要的不是 HTML 复辟,而是一个干净、可解析、可协作的轻量交互层。用起来,真的省命。