voyy.

BLOG ARTICLE

一篇文章,展示博客的所有排版元素

作者 voyy

这是一篇专门用于预览博客排版的示例文章。它不是一份语法手册,而是把以后写技术文章时最常用的元素放在同一个页面里:标题层级强调文本站内链接inline code、Callout、代码块、表格与列表。

普通引用仍然保留安静、克制的样式,适合摘录一句话或补充上下文。

1. 标题与正文层级

二级标题使用柔和橙色,是每个主要章节的入口。从第二个二级标题开始,章节之间会出现三个小圆点作为分隔符,让长文章更容易扫描,又不会形成厚重的框线。

三级标题:章节中的主题

三级标题使用 Sage / Teal,适合拆分一个章节内的不同论点。正文保持较舒展的行高,重点内容可以加粗,术语可以写成 TTFTGPU Kernel

四级标题:更细的说明

四级标题的颜色更接近正文,只保留轻微的层次差异。通常文章最多使用到这里,避免目录变得过深。

2. Callout 提示块

Callout 使用统一结构与低饱和背景,没有生硬边框。标题可以省略,也可以在类型标记后自定义。

Callout 的 Markdown 写法如下:

> [!TIP] 可选的自定义标题
>
> 这里填写提示内容,可以使用 **强调**`inline code`

3. 代码块与语法高亮

代码块使用 Shiki 高亮,并分别为明亮与深色主题准备了配色。顶部的三个圆点只承担视觉提示,不会占用正文内容。

TypeScript:带类型的数据处理

type RequestSample = {
  ttft: number;
  outputTokens: number;
  decodeTime: number;
};

export function summarize(samples: RequestSample[]) {
  const totalTokens = samples.reduce(
    (sum, sample) => sum + sample.outputTokens,
    0,
  );

  return {
    meanTTFT: samples.reduce((sum, sample) => sum + sample.ttft, 0) / samples.length,
    tokensPerSecond: totalTokens / samples.reduce(
      (sum, sample) => sum + sample.decodeTime,
      0,
    ),
  };
}

Python:一个简洁的统计函数

from statistics import mean

def goodput(latencies: list[float], slo: float) -> float:
    """Return the share of requests completed within the SLO."""
    if not latencies:
        return 0.0

    completed = sum(latency <= slo for latency in latencies)
    return completed / len(latencies)

print(f"Goodput: {goodput([0.8, 1.1, 0.9], slo=1.0):.1%}")

Shell:命令行片段

# 构建并预览 Astro 网站
npm run build
npm run preview

4. 列表、任务与表格

无序列表适合并列信息:

  • Latency:单个请求需要等待多久
  • Throughput:系统单位时间处理多少工作
  • Goodput:满足服务目标的有效吞吐量

有序列表适合表达过程:

  1. 固定测试环境与模型配置。
  2. 预热服务,排除首次编译的影响。
  3. 分别记录 P50、P95 与 P99 延迟。

任务列表可以作为文章末尾的实践清单:

  • 明确指标定义
  • 记录实验配置
  • 增加更多并发场景
指标 关注视角 示例单位
TTFT 首次响应速度 ms
TPOT 持续生成速度 ms / token
Throughput 系统整体能力 tokens / s
Goodput 满足 SLO 的能力 requests / s

5. 写作时如何使用

平时只需要正常写 Markdown。Callout 的第一行使用 [!TYPE] 标记,代码围栏后填写语言名称,其余样式都会由博客统一处理。

这篇示例文章会和普通文章一样出现在博客时间线中,之后也可以随时作为写作模板参考。