请教一下一个问题给到你会发生什么请详细介绍一下中间过程这个问题问得很好——从你按下发送键到我回复出现在屏幕上中间发生了一整条精密的流水线。我拆成*两大阶段*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 │ └──────────────────────────────────────┘阶段 2LLM 推理DeepSeek-V4-Pro 内部这是真正的「模型思考」过程。假设使用 DeepSeek-V4MoE 架构 (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_p0.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 │ 文本: 这是从你按下发送键到我回复出现在屏幕上中间发生了一整条精密的流水线... ───────────────────────────────────────