请教一下:一个问题给到你,会发生什么请详细介绍一下中间过程

这个问题问得很好——从你按下发送键到我回复出现在屏幕上,中间发生了一整条精密的流水线。我拆成 *两大阶段*:Hermes Agent 层(工程调度)和 LLM 推理层(模型计算),层层剥开。

阶段 0:消息到达(Feishu → Hermes)

你在 Feishu 输入「请教一下:一个问题给到你...」
        │
        ▼
┌─────────────────────────┐
│  Feishu Open Platform   │
│  Event: im.message.receive_v1
│  ┌───────────────────┐  │
│  │ sender: 35398a72  │  │
│  │ msg_type: text    │  │
│  │ content: "请教..." │  │
│  │ chat_id: oc_ec... │  │
│  └───────────────────┘  │
└─────────┬───────────────┘
          │  HTTPS webhook (你的服务器 xxx.xxx.xxx.xxx)
          ▼
┌─────────────────────────┐
│  Hermes Agent           │
│  (Node.js Gateway)      │
│                         │
│  ① 验签(防伪造请求)    │
│  ② 反序列化消息体        │
│  ③ 判断:DM 还是群聊?   │
│     → DM, 消息类型 text  │
│  ④ 查 @mention 规则     │
│     → DM 不需要 @        │
│  ⑤ 创建 Session 上下文   │
└─────────┬───────────────┘

阶段 1:上下文装配(Hermes → Prompt 构造)

这是 Hermes Agent 最核心的工作——你看到的不是我「裸模型」的回答,而是被注入了大量上下文后的回答。

┌─────────────────────────────────────────────────────────────┐
│                  上下文装配流水线                               │
│                                                               │
│  ① 加载 System Prompt(人格定义)                              │
│     来源:Persona 文件(你自定义的 Hermes Agent Persona)       │
│     内容:                                                     │
│     ┌─────────────────────────────────────────────┐          │
│     │ "You have persistent memory across sessions" │          │
│     │ "You are in a Feishu workspace..."           │          │
│     │ "User prefers: 中文交流, 深度技术讨论..."      │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ② 注入 Memory(持久化记忆)                                   │
│     来源:memory 工具存储的条目                                │
│     ┌─────────────────────────────────────────────┐          │
│     │ "Hermes is running on Ubuntu 24.04.3 LTS"    │          │
│     │ "Paimon 数据湖 + StarRocks + Flink CDC..."    │          │
│     │ "交易所主站公告弹窗逻辑..."                    │          │
│     │ "用户偏好:深度技术讨论,不接受虚构数据..."     │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ③ 注入 User Profile                                         │
│     ┌─────────────────────────────────────────────┐          │
│     │ "User is 免审开发者, uses Lark International" │          │
│     │ "偏好深度技术讨论,会直接纠正错误"             │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ④ 注入可用工具列表(167 个工具定义)                          │
│     ┌─────────────────────────────────────────────┐          │
│     │ terminal, browser_navigate, feishu_doc_read, │          │
│     │ skill_view, memory, send_message, vision...  │          │
│     │ 每个工具:名称 + 描述 + JSON Schema 参数      │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ⑤ 注入可用 Skills 目录(~60 个技能摘要)                     │
│     ┌─────────────────────────────────────────────┐          │
│     │ paimon-cdc-ingestion: Configure Paimon...    │          │
│     │ feishu-group-monitoring: Set up Hermes...    │          │
│     │ debugging-hermes-tui: Debug Hermes TUI...    │          │
│     │ ...                                          │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ⑥ 注入当前会话上下文                                         │
│     ┌─────────────────────────────────────────────┐          │
│     │ Source: Feishu (DM with 35398a72)            │          │
│     │ Connected Platforms: local, feishu: ✓        │          │
│     │ Conversation started: May 20, 2026 02:18 PM │          │
│     │ Model: deepseek-v4-pro                       │          │
│     └─────────────────────────────────────────────┘          │
│                                                               │
│  ⑦ 拼接历史对话(当前会话的前几轮)                            │
│     你之前的 4 轮对话(AI模型训练、特征工程、框架区别)         │
│                                                               │
│  ⑧ 附加当前用户消息                                           │
│     "请教一下:一个问题给到你,会发生什么请详细..."             │
└─────────────────────────────────────────────────────────────┘

*最终效果:* 一个完整的 prompt,包含 *~8000-12000 个 token* 的上下文,而你的实际提问只有 ~20 个 token。我看到的「世界」比你想象的大得多:

┌──────────────────────────────────────┐
│ System: 你是谁、有什么能力、环境信息   │  ~2000 tokens
│ Memory: 跨会话的持久知识              │  ~1000 tokens
│ User Profile: 关于用户的稳定认知      │  ~300 tokens
│ Tools: 167个工具的完整定义            │  ~4000 tokens
│ Skills: 60个技能的摘要               │  ~800 tokens
│ Conversation: 之前的4轮对话           │  ~2000 tokens
│ Current Message: 你的新问题           │  ~20 tokens
├──────────────────────────────────────┤
│ 总计注入 ≈ 10,000 tokens              │
└──────────────────────────────────────┘

阶段 2:LLM 推理(DeepSeek-V4-Pro 内部)

这是真正的「模型思考」过程。假设使用 DeepSeek-V4(MoE 架构): (1/2)

回复 panghu-大数据:

请教一下:一个问题给到你,会发生什么请详细介绍一下中间过程

你的完整 Prompt (≈10,000 tokens)
        │
        ▼
═══════════════════════════════════════
  第1步:Tokenization(分词)
═══════════════════════════════════════

原始文本:"请教一下:一个问题给到你..."
     │
     ▼ BPE Tokenizer (Byte-Pair Encoding)
     │
Token IDs: [98375, 234, 45612, 89, 78, 5623, 12390, ...]
           ↑       ↑     ↑      ↑   ↑    ↑      ↑
          "请教"  "一"  "下"   ":" "一" "个" "问题" ...

总共 10,000 tokens → 变成 10,000 个整数 ID

───────────────────────────────────────

═══════════════════════════════════════
  第2步:Embedding(嵌入)
═══════════════════════════════════════

Token IDs: [98375, 234, 45612, ...]
     │
     ▼ Embedding Layer (参数矩阵: vocab_size × d_model)
     │  DeepSeek-V4: d_model = 7168 (推测)
     │
Embeddings: [[0.023, -0.15, 0.89, ...],   ← 98375 的向量
             [0.41, 0.03, -0.22, ...],    ← 234 的向量
             ...]
             
每个 token → 7168 维向量
总共: 10,000 × 7168 的矩阵

───────────────────────────────────────

═══════════════════════════════════════
  第3步:通过 N 层 Transformer
═══════════════════════════════════════

这是最核心的计算——MoE (Mixture of Experts) 架构

┌─────────────────────────────────────────────────────────┐
│                    Transformer Block × 60+ 层              │
│                                                           │
│  对于每一层,每个 token 的 7168 维向量经历:               │
│                                                           │
│  ┌─────────────────────────────────────────┐            │
│  │ ① Multi-Head Attention(多头注意力)     │            │
│  │                                          │            │
│  │  Query: 这个 token "想找什么信息"        │            │
│  │  Key:   其他 token "有什么信息"          │            │
│  │  Value: 其他 token "实际内容"           │            │
│  │                                          │            │
│  │  计算: Attention(Q,K,V) = softmax(QKᵀ/√d)·V │       │
│  │                                          │            │
│  │  实际过程:                               │            │
│  │  token_i 的 Q 与所有 token 的 K 做内积    │            │
│  │  → 得到一个 10,000 × 10,000 的注意力矩阵  │            │
│  │  → 每个 token 从所有其他 token 聚合信息   │            │
│  │                                          │            │
│  │  例如:"问题" token 会重点关注:          │            │
│  │  - "给到你"(动作方向)   权重 0.31       │            │
│  │  - "什么"(疑问意图)     权重 0.27       │            │
│  │  - "中间过程"(核心需求)  权重 0.22       │            │
│  │  - 远距离的 Memory 上下文  权重 0.08      │            │
│  │  - ...                                    │            │
│  │                                          │            │
│  │  DeepSeek-V4 用了 MLA (Multi-head Latent  │            │
│  │  Attention) 压缩 KV Cache,节省显存       │            │
│  └─────────────────────────────────────────┘            │
│                                                           │
│  ┌─────────────────────────────────────────┐            │
│  │ ② MoE FFN(混合专家前馈网络)★ 关键!    │            │
│  │                                          │            │
│  │  传统 Dense 模型:                       │            │
│  │  output = W₂ · ReLU(W₁ · x)              │            │
│  │  参数量: d_model × d_ff × 2             │            │
│  │                                          │            │
│  │  DeepSeek MoE 模型:                     │            │
│  │                                          │            │
│  │  总共有 256 个 "专家" (Expert)           │            │
│  │  每个专家是一个独立的小 FFN 网络          │            │
│  │                                          │            │
│  │         ┌─── Gate Router ───┐           │            │
│  │         │  输入 x → 评分    │           │            │
│  │         │  选出 Top-8 专家  │           │            │
│  │         └──┬──┬──┬──┬──────┘           │            │
│  │            │  │  │  │                   │            │
│  │      ┌─────┘  │  │  └─────┐            │            │
│  │      ▼        ▼  ▼        ▼            │            │
│  │  [Expert [Expert [Expert [Expert        │            │
│  │    12]     45]    78]    203]           │            │
│  │      │       │    │       │             │            │
│  │      └───┬───┴────┴───┬───┘             │            │
│  │          ▼            ▼                  │            │
│  │     加权求和(按 Gate 评分)              │            │
│  │          │                                │            │
│  │          ▼                                │            │
│  │     输出 (7168维)                         │            │
│  │                                           │            │
│  │  ★ 密集模型每 token 激活 100% 参数         │            │
│  │  ★ MoE 模型每 token 只激活 ~3% 参数        │            │
│  │  ★ 不同 token 激活不同专家组合:           │            │
│  │    技术类 token → Expert_{math, code}      │            │
│  │    中文理解 token → Expert_{chinese}       │            │
│  │    上下文整合 token → Expert_{reasoning}   │            │
│  └─────────────────────────────────────────┘            │
│                                                           │
│  ┌─────────────────────────────────────────┐            │
│  │ ③ Residual Connection + LayerNorm        │            │
│  │    x = LayerNorm(x + Attention(x))       │            │
│  │    x = LayerNorm(x + MoE_FFN(x))         │            │
│  │    保证梯度流通,防止深层退化             │            │
│  └─────────────────────────────────────────┘            │
│                                                           │
│  这一层处理完 → 输出还是 10,000 × 7168 的矩阵              │
│  送入下一层,重复 60+ 次                                   │
└─────────────────────────────────────────────────────────┘

───────────────────────────────────────

═══════════════════════════════════════
  第4步:最后一层 → 输出头(LM Head)
═══════════════════════════════════════

最后层输出: 10,000 × 7168 矩阵
     │
     ▼ LM Head (线性层: 7168 → 129280)
     │  129280 = 词表大小(DeepSeek 的 vocab size)
     │
Logits: 10,000 × 129280 矩阵
     │  每个位置是一个概率分布:下一个 token 最可能是什么
     ▼

只取最后一个位置(因为我们要生成新 token):
最后一个位置的 logits: [0.002, -1.3, 4.7, 0.1, ..., -2.1]
                              ↑        ↑       ↑
                           "的"     "好"   "问题"
                         (score低) (score中) (score高)

───────────────────────────────────────

═══════════════════════════════════════
  第5步:自回归解码(逐个生成 token)
═══════════════════════════════════════

这是「一个字一个字蹦出来」的过程。

采样策略(DeepSeek 典型配置):
  temperature = 0.7
  top_p = 0.9
  top_k = 50

步骤:
① Softmax(logits / temperature) → 概率分布
② 只保留 top_p=0.9 累积概率的 token,其他置零
③ 从中随机采样 1 个 token

迭代过程:

Iteration 1:  输入 [10,000 tokens 上下文]
              → 输出 token: "这" (概率 0.31)

Iteration 2:  输入 [10,000 tokens 上下文 + "这"]
              → 注意力看到 "这" + 全程上下文
              → 输出 token: "是" (概率 0.87)

Iteration 3:  输入 [... + "这是"]
              → 输出 token: "从" (概率 0.42)

Iteration 4:  输入 [... + "这是从"]
              → 输出 token: "你" (概率 0.63)

...重复 ~2000 次...

Iteration N:  输入 [... + "最后输出的测量"]
              → 遇到 EOS (End of Sequence) token
              → 停止生成

───────────────────────────────────────

═══════════════════════════════════════
  第6步:Token → 文本(Detokenization)
═══════════════════════════════════════

Token IDs: [23845, 3452, 893, 567, 234, ...]
     │
     ▼ BPE Decoder
     │
文本: "这是从你按下发送键到我回复出现在屏幕上,中间发生了一整条精密的流水线..."

───────────────────────────────────────
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐