前置知识

阅读本文前,建议先了解:


一、核心观点:LLM 与 Markdown 是「天生一对」

Markdown 能成为与 LLM 协作的最佳语言,核心原因在于:LLM 可以直接阅读 Markdown,无需任何转换

[!比喻] 就像… Markdown 对 LLM 来说,就像「母语」——不需要翻译,直接就能理解。


二、LLM 可以直接读取纯文本

2.1 对比:不同格式的处理成本

┌─────────────────────────────────────────────────────────────┐
│           LLM 处理不同文档格式的难度                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Word (.docx)                                              │
│   ┌─────────────────┐                                       │
│   │ 二进制 ZIP+XML  │  → 需要解析器 → 转为文本 → LLM 处理   │
│   └─────────────────┘     ❌ 额外步骤    ❌ 可能丢失格式      │
│                                                             │
│   PDF                                                        │
│   ┌─────────────────┐                                       │
│   │ 排版+文本混合   │  → 需要 OCR/解析 → 提取文本 → LLM    │
│   └─────────────────┘     ❌ 复杂处理    ❌ 可能识别错误     │
│                                                             │
│   Markdown (.md)                                            │
│   ┌─────────────────┐                                       │
│   │ 纯文本+标记     │  → LLM 直接读取                       │
│   └─────────────────┘     ✅ 零转换成本                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.2 技术原理

LLM 的训练数据中包含大量 Markdown 文本,因此:

  1. 直接理解:LLM 在预训练时已经学习了 Markdown 语法
  2. 语义理解:Markdown 标记(如 #-```)被视为语义信号
  3. 格式保留:输出时自动保持 Markdown 格式
# LLM 内部处理示意(伪代码)
def process_markdown(text):
    # LLM 直接接收原始文本,无需预处理
    tokens = tokenizer.encode(text)  # 直接分词
 
    # Markdown 标记被当作普通文本的一部分学习
    # "# 标题" → 学习到 "#" + "标题" 的组合模式
    # "- 列表" → 学习到 "-" + "列表" 的语义
 
    output = model.generate(tokens)
    return output  # 直接输出 Markdown 格式

三、Markdown 标记 = LLM 的语义信号

Markdown 不仅仅是格式,它是语义提示

3.1 标记的语义含义

Markdown 标记LLM 理解的含义
# 标题这是一个主题/要点
## 子标题这是主题的子部分
1. 有序列表依次执行的步骤
- 无序列表并列的要点
```代码块```精确的代码,请保持原样
> 引用参考或背景信息
**粗体**重点强调
---主题切换/分隔

3.2 示例

输入:

## 如何安装 Python
 
1. 下载 Python
2. 运行安装程序
3. 验证安装
 
> 注意:建议选择 Python 3.10+ 版本

LLM 理解:

  • ## → 这是一个教学说明
  • 1. 2. 3. → 按步骤组织答案
  • > → 需要提醒用户注意事项

四、Skills 文档就是 Markdown

Claude Code 的 Skills 使用 Markdown 编写,这充分说明了 Markdown 与 LLM 的紧密关系。

4.1 Skills 的工作方式

用户输入 → Skill 文档(.md)→ LLM 理解 → 执行任务
              ↑
         用 Markdown 写
         的指令和说明

4.2 Skill 文档示例

# my-skill.md
 
## 触发条件
当用户想要 [做什么事] 时使用
 
## 执行步骤
1. [步骤 1]
2. [步骤 2]
 
## 输出格式
用 Markdown 返回结果:
## 结果
- 要点 1
- 要点 2

[!重点] 为什么用 Markdown 写 Skill?

  • LLM 直接理解 Markdown 指令
  • 格式清晰,指令明确
  • 输出也用 Markdown,保持一致性

五、AI 智能体的提示词就是 Markdown

现在主流的 AI 智能体、Agent 框架都使用 Markdown 作为提示词格式。

5.1 典型应用

应用场景Markdown 作用
Claude/GPT 对话用户输入和 AI 输出都是 Markdown
Agent 提示词系统指令用 Markdown 结构化组织
RAG 知识库文档转为 Markdown 供 LLM 检索
代码解释器输出结果用 Markdown 格式化

5.2 Agent 提示词示例

# 你是一个数据分析助手
 
## 能力
- 分析 CSV 数据
- 生成可视化图表
- 提供洞察建议
 
## 输出格式
用 Markdown 表格展示数据
用代码块展示分析代码
 
## 约束
- 不要编造数据
- 对不确定的结果标注"待确认"

六、零成本格式转换

6.1 输出即所得

LLM 输出 Markdown → 用户直接使用
       ↓
   无需转换
       ↓
   复制粘贴到 Obsidian/Notion/VS Code

6.2 常见场景

场景Markdown 优势
写技术博客代码块自动高亮
做笔记支持 Wiki 链接
写文档支持目录自动生成
写论文可转为 LaTeX

七、如何用 Markdown 与 LLM 高效协作

7.1 用 Markdown 提问

## 任务
用 Python 写一个排序算法
 
## 要求
- 时间复杂度说明
- 包含测试用例
 
## 格式
用 Markdown 代码块输出

7.2 让 LLM 用 Markdown 输出

提示词:“请用 Markdown 格式输出,包含表格和代码块”

7.3 用 Markdown 组织多轮对话

## 上一轮
[上一轮的要点]
 
## 本轮问题
[新问题]
 
## 待确认
- [x] 已理解
- [ ] 需要补充

八、总结

原因说明
纯文本LLM 无需解析,直接读取
标记语义#-``` 等是语义信号
Skills 文档Claude Skills 就是 Markdown
Agent 提示词主流智能体都用 Markdown
零转换输出即所得,复制即用

一句话:Markdown 是 LLM 的「母语」——无需翻译,直接理解。


九、延伸阅读