<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>月莹清梦</title><description>YueYingQingMeng · 做一场不愿醒的梦</description><link>https://yueyingqingmeng.github.io/</link><language>zh_CN</language><item><title>大模型技术全景：从 Token 到智能体</title><link>https://yueyingqingmeng.github.io/posts/llm-from-token-to-agent/</link><guid isPermaLink="true">https://yueyingqingmeng.github.io/posts/llm-from-token-to-agent/</guid><description>把大模型拆成一条可理解、可测量、可调试的工程流水线：分词、注意力、预训练、对齐、推理优化、应用层与评估。</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;大模型技术全景：从 Token 到智能体&lt;/h1&gt;
&lt;p&gt;把大模型当成&quot;会思考的黑箱&quot;，讨论就没法继续。更有用的视角是：它是一条&lt;strong&gt;由若干可拆解、可测量、可替换的环节组成的流水线&lt;/strong&gt;——文本进来，被切成 Token；Token 变成向量；向量在几十层注意力里被反复改写；最后输出下一个 Token 的概率分布。&lt;/p&gt;
&lt;p&gt;这条流水线的每一段都有自己的瓶颈、成本和调参空间。下面按数据流动的顺序走一遍，尽量讲清楚&quot;是什么、为什么这样设计、工程上要注意什么&quot;。&lt;/p&gt;
&lt;h2&gt;一、分词：文本变成 Token&lt;/h2&gt;
&lt;p&gt;模型不认识&quot;字&quot;，只认识 Token——一个介于字符与词之间的子词单元。&lt;/p&gt;
&lt;p&gt;常见做法是&lt;strong&gt;子词分词&lt;/strong&gt;（BPE、Unigram 等）：从字符起步，反复合并出现频率最高的相邻片段，得到&quot;词表大小&quot;与&quot;覆盖率&quot;之间的折中。&lt;/p&gt;
&lt;p&gt;几个容易踩的点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Token 不等于字，也不等于词。&lt;/strong&gt; 常见英文词可能就是一个 Token，罕见词会被拆成多段；标点和空白同样占 Token。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计费和上下文预算按 Token 算&lt;/strong&gt;，不按字符数算。同一段内容在不同语言、不同分词器下，消耗的 Token 数可以相差不少。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分词器一旦训练完就固定&lt;/strong&gt;，它是模型的一部分。换分词器等于换模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;二、嵌入与位置：Token 变成带位置的向量&lt;/h2&gt;
&lt;p&gt;每个 Token 通过一张查找表映射为一个稠密向量（embedding）。这个向量的方向编码了语义——语义相近的 Token，向量夹角更小，所以可以用余弦相似度衡量&quot;像不像&quot;。&lt;/p&gt;
&lt;p&gt;但注意力本身是&lt;strong&gt;置换不变&lt;/strong&gt;的：把输入的 Token 打乱，注意力的计算结果不变。所以必须额外注入位置信息。做法经历了从绝对位置编码到相对位置编码的演进，目前主流是&lt;strong&gt;旋转位置编码（RoPE）&lt;/strong&gt;：把位置信息编码成对向量的旋转操作，使注意力点积天然带有相对位置的成分，对长度外推也更友好。&lt;/p&gt;
&lt;h2&gt;三、注意力：真正干活的地方&lt;/h2&gt;
&lt;p&gt;Transformer 的核心是&lt;strong&gt;自注意力&lt;/strong&gt;。每个位置的向量被投影成三个角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Query（Q）&lt;/strong&gt;：我在找什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key（K）&lt;/strong&gt;：我能提供什么&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Value（V）&lt;/strong&gt;：我实际携带的信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;计算方式：&lt;/p&gt;
&lt;p&gt;$$\mathrm{Attention}(Q,K,V)=\mathrm{softmax}!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V$$&lt;/p&gt;
&lt;p&gt;直觉上：每个位置拿自己的 Q 去和所有位置的 K 做点积，得到一组&quot;该关注谁&quot;的权重；再用这组权重对所有 V 加权求和。&lt;/p&gt;
&lt;p&gt;几个关键设计：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;缩放因子 $1/\sqrt{d_k}$&lt;/strong&gt;：防止维度变大时点积方差过大、softmax 饱和成近似 one-hot，导致梯度消失。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多头注意力&lt;/strong&gt;：把向量切成多份并行计算，让不同的头关注不同类型的关系（句法、指代、位置等），最后拼接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;因果掩码&lt;/strong&gt;：生成式模型（decoder-only）不允许看到未来 Token，所以在 softmax 前把上三角位置置为 $-\infty$。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;复杂度&lt;/strong&gt;：自注意力对序列长度 $n$ 是 $O(n^2)$ 的时间和显存开销。这是长上下文一切困难的根源——序列翻一倍，注意力开销大约翻四倍。&lt;/p&gt;
&lt;p&gt;层与层之间还有前馈网络（FFN）、残差连接和归一化（近年多用 RMSNorm），激活函数常用 SwiGLU 一类门控结构。在标准 Transformer 里，FFN 往往占据参数量的大头。&lt;/p&gt;
&lt;h2&gt;四、预训练：把知识压进参数&lt;/h2&gt;
&lt;p&gt;预训练的目标出奇地简单：&lt;strong&gt;预测下一个 Token&lt;/strong&gt;。给定前文，模型输出整个词表上的概率分布，用交叉熵损失去逼近真实的下一个 Token。&lt;/p&gt;
&lt;p&gt;仅靠这一个目标，模型就学会了语法、事实、推理套路和代码风格——因为这些能力都有助于降低&quot;下一个 Token&quot;的预测误差。&lt;/p&gt;
&lt;p&gt;规模法则（Scaling Laws）给出了一条经验规律：&lt;strong&gt;损失随算力、参数量、数据量的增长呈幂律下降&lt;/strong&gt;，而且在很宽的范围内相当可预测。这直接决定了行业的资源分配方式。&lt;/p&gt;
&lt;p&gt;后续的 Chinchilla 类工作进一步指出：&lt;strong&gt;参数量和训练数据量应当按比例同步增长&lt;/strong&gt;。换个说法，很多早期模型不是&quot;不够大&quot;，而是&quot;喂得不够多&quot;——同样的算力，更小的模型配更多的数据，效果可能更好。&lt;/p&gt;
&lt;p&gt;数据工程的权重常被低估：去重、质量过滤、领域配比、清洗顺序，都会实打实地反映到最终能力上。&lt;/p&gt;
&lt;p&gt;预训练结束后，模型是一个很强的&quot;续写器&quot;——它能把一段文本自然地接下去，但不一定按你的指令做事。&lt;/p&gt;
&lt;h2&gt;五、对齐：从&quot;会续写&quot;到&quot;听得懂话&quot;&lt;/h2&gt;
&lt;p&gt;要让模型&quot;回答问题&quot;而不是&quot;续写问题&quot;，需要对齐阶段：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;监督微调（SFT）&lt;/strong&gt;：用写好的&quot;指令—回答&quot;示范数据继续训练，教会它对话格式与指令遵循。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;奖励建模 + 强化学习（RLHF）&lt;/strong&gt;：让标注者对多个候选回答排序，训练奖励模型去拟合人的偏好；再用强化学习（如 PPO）优化策略模型，使其输出更受奖励模型青睐。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;直接偏好优化（DPO 等）&lt;/strong&gt;：跳过显式奖励模型，直接用偏好对构造损失，训练更稳定、工程更简单，因此被广泛采用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 反馈（RLAIF / 宪法式方法）&lt;/strong&gt;：用模型按一套明确原则去评判与生成偏好数据，降低人工标注成本。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要清醒的一点：&lt;strong&gt;对齐优化的是&quot;人喜欢什么&quot;，不是&quot;什么是真的&quot;&lt;/strong&gt;。一个被优化得足够讨喜的模型，反而可能更自信地编造内容。这直接引出了后文的幻觉问题。&lt;/p&gt;
&lt;h2&gt;六、推理：Token 是怎么一个接一个吐出来的&lt;/h2&gt;
&lt;h3&gt;自回归解码&lt;/h3&gt;
&lt;p&gt;生成是逐 Token 的：每步前向算一次，取一个 Token，追加到输入，再算下一步。这决定了&lt;strong&gt;输出长度直接线性影响时延&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;采样策略&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;贪心&lt;/strong&gt;：每步取概率最高的 Token。确定、可复现，但容易重复、呆板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;温度&lt;/strong&gt;：对 logits 做缩放。温度越低越保守，越高越随机。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;top-k / top-p（核采样）&lt;/strong&gt;：只在概率最高的若干候选里采样，砍掉长尾噪声，兼顾多样性与稳定性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重复惩罚&lt;/strong&gt;：抑制已出现过的 Token，缓解复读。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;KV Cache：推理加速的核心&lt;/h3&gt;
&lt;p&gt;自回归解码时，前面 Token 的 K、V 每步都在重复计算。把它们缓存下来，每步只需计算新 Token 的 Q、K、V，再与缓存拼接——这就是 KV Cache。&lt;/p&gt;
&lt;p&gt;代价是显存。KV Cache 的大小近似为：&lt;/p&gt;
&lt;p&gt;$$2 \times L \times H_{kv} \times d_{head} \times n \times B \times \text{字节数}$$&lt;/p&gt;
&lt;p&gt;其中 $L$ 是层数，$H_{kv}$ 是 KV 头数，$n$ 是序列长度，$B$ 是并发批大小。它随&lt;strong&gt;序列长度和并发数线性增长&lt;/strong&gt;，在长上下文场景下往往比模型权重还占显存。&lt;/p&gt;
&lt;p&gt;顺带一提，&lt;strong&gt;分组查询注意力（GQA）&lt;/strong&gt; 让多个 Query 头共享一组 K/V 头，正是为了压缩上面这个 $H_{kv}$。&lt;/p&gt;
&lt;h3&gt;显存与吞吐的工程化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;连续批处理（Continuous Batching）&lt;/strong&gt;：请求随到随批，不等整批结束，显著提升吞吐。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PagedAttention&lt;/strong&gt;：把 KV Cache 切成固定大小的块、用块表寻址，像操作系统管理虚拟内存那样消除碎片，并支持前缀共享。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化&lt;/strong&gt;：把权重（有时含激活）从 FP16 压到 INT8 / INT4，用少量精度换显存与带宽。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;投机解码&lt;/strong&gt;：用小模型快速草拟若干 Token，再让大模型一次并行验证，接受命中的部分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;并行策略&lt;/strong&gt;：张量并行（层内切）、流水并行（层间切）、数据并行（副本切），用于跨卡放大模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;七、新范式：先想，再答&lt;/h2&gt;
&lt;p&gt;上述都是&quot;一次前向&quot;的推理。近两年一个明显的转向是：&lt;strong&gt;把算力从训练阶段挪到推理阶段&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;思维链（CoT）&lt;/strong&gt;：让模型先写出中间步骤再给答案，明显改善多步推理类任务。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试时计算（Test-time Compute）&lt;/strong&gt;：允许模型回答前&quot;多想一会儿&quot;——生成长推理链、采样多条路径再投票或验证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;以可验证任务做强化学习&lt;/strong&gt;：数学、代码这类能自动判对错的领域，可以直接拿&quot;最终答案是否正确&quot;当奖励，训练模型产出更长的推理过程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代价同样直接：&lt;strong&gt;延迟和成本成倍上升&lt;/strong&gt;。所以它适合&quot;精度远比时延重要&quot;的任务，而不是所有场景。&lt;/p&gt;
&lt;h2&gt;八、应用层：让模型接上外部世界&lt;/h2&gt;
&lt;p&gt;模型参数里的知识是静态的、有截止日期的。应用层的核心工作，就是给它接上外部的、实时的、私有的信息。&lt;/p&gt;
&lt;h3&gt;检索增强生成（RAG）&lt;/h3&gt;
&lt;p&gt;流程：&lt;strong&gt;切片 → 向量化 → 检索 → 重排 → 组装上下文&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;工程上真正的难点不在&quot;能不能检索&quot;，而在这些地方：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;环节&lt;/th&gt;
&lt;th&gt;常见问题&lt;/th&gt;
&lt;th&gt;应对&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;切片&lt;/td&gt;
&lt;td&gt;切碎语义、切断表格与代码&lt;/td&gt;
&lt;td&gt;按结构切、设重叠窗口、保留标题层级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;检索&lt;/td&gt;
&lt;td&gt;纯向量检索漏掉精确匹配（编号、专有名词）&lt;/td&gt;
&lt;td&gt;向量 + 关键词的混合检索&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;排序&lt;/td&gt;
&lt;td&gt;召回了，但没排到前面&lt;/td&gt;
&lt;td&gt;加交叉编码器重排&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;组装&lt;/td&gt;
&lt;td&gt;上下文塞太多，中段信息被忽略&lt;/td&gt;
&lt;td&gt;控制条数、按相关度排序、给出引用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;兜底&lt;/td&gt;
&lt;td&gt;检索为空时硬编&lt;/td&gt;
&lt;td&gt;明确回答&quot;资料里没有&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;RAG 不能根治幻觉&lt;/strong&gt;：它只是把&quot;凭空编&quot;换成&quot;可能误读材料&quot;。检索错了、材料本身矛盾、模型过度概括，都会继续出错。&lt;/p&gt;
&lt;h3&gt;工具调用与智能体&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;工具调用（Function Calling）&lt;/strong&gt;：把外部能力（搜索、计算、数据库、设备 API）描述成结构化接口，让模型输出调用参数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能体（Agent）&lt;/strong&gt;：在&quot;感知 → 决策 → 行动 → 观察&quot;的循环里反复调用模型与工具，并维护任务状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;真正决定成败的是循环之外的部分&lt;/strong&gt;：状态管理、失败重试、幂等、超时、权限边界、成本上限。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;上下文工程&lt;/h3&gt;
&lt;p&gt;比起&quot;提示词工程&quot;，更准确的描述是&lt;strong&gt;上下文工程&lt;/strong&gt;：决定在这一步前向里，究竟把哪些信息放进去（系统指令、检索结果、历史对话、工具返回、记忆摘要），以及以什么顺序放。模型输出的质量，很大程度上在这一步就决定了。&lt;/p&gt;
&lt;h2&gt;九、评估：最容易被糊弄的一环&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;离线基准&lt;/strong&gt;：可复现、便宜，但存在&lt;strong&gt;数据污染&lt;/strong&gt;——训练数据里见过题，分数就会虚高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人工评估&lt;/strong&gt;：贴近真实，但慢、贵，标注者之间的一致性难以保证。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM 作为裁判&lt;/strong&gt;：成本低，但有已知偏差（偏好长回答、偏好与自己风格相近的输出、位置偏差）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线上 A/B&lt;/strong&gt;：最可信，代价是周期长、需要流量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一套务实的顺序是：&lt;strong&gt;先定义任务成功率&lt;/strong&gt;（能不能把事办成），再同时盯时延与成本，最后才看基准分数。&lt;/p&gt;
&lt;h2&gt;十、局限与风险：写进设计里，而不是写进免责声明里&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;幻觉&lt;/strong&gt;：语言模型的训练目标是&quot;最大化下一个 Token 的似然&quot;，不是&quot;断言事实&quot;。流畅与正确并不等价。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文长度&lt;/strong&gt;：标称支持的长度不等于有效利用的长度。经验上，模型对上下文中段信息的利用率明显低于首尾。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;确定性&lt;/strong&gt;：同样输入，由于采样与浮点累加顺序，输出不保证逐字一致。想复现要靠固定随机参数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识与时效&lt;/strong&gt;：参数里的知识会过期，除非外接检索。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全&lt;/strong&gt;：提示注入（把恶意指令藏在被检索的文档或网页里）、越狱，以及通过工具调用导致的数据外泄，都需要在架构层设防，不能只靠提示词。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本与时延的物理约束&lt;/strong&gt;：上下文长度、并发数、Token 量都是要付钱的，预算必须算进工程方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;十一、给工程实践的十条建议&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;先把任务定义成&lt;strong&gt;可测量的成功率&lt;/strong&gt;，再谈选型。&lt;/li&gt;
&lt;li&gt;能靠检索解决的，不要靠微调：&lt;strong&gt;知识用 RAG，行为用微调&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;上下文优先：同样的模型，喂对信息比换更贵的模型更有效。&lt;/li&gt;
&lt;li&gt;结构化输出要&lt;strong&gt;校验&lt;/strong&gt;，模型给的 JSON 也可能不合 schema。&lt;/li&gt;
&lt;li&gt;永远设计&lt;strong&gt;兜底路径&lt;/strong&gt;：检索为空、工具超时、模型拒答时，用户看到什么。&lt;/li&gt;
&lt;li&gt;把&lt;strong&gt;时延拆开量&lt;/strong&gt;：首 Token 时延与总时延是两件事，体验主要由前者决定。&lt;/li&gt;
&lt;li&gt;上线前跑&lt;strong&gt;回归集&lt;/strong&gt;：把踩过的坑固化成用例，防止改提示词改崩。&lt;/li&gt;
&lt;li&gt;记录&lt;strong&gt;完整调用链&lt;/strong&gt;（输入、命中文档、工具参数、输出、Token 消耗），否则线上问题无法定位。&lt;/li&gt;
&lt;li&gt;给&lt;strong&gt;成本设硬上限&lt;/strong&gt;：单次请求 Token 上限、重试次数上限、循环步数上限。&lt;/li&gt;
&lt;li&gt;把不确定性当&lt;strong&gt;工程问题&lt;/strong&gt;处理——用检索、校验、兜底和评估去覆盖它，而不是指望模型&quot;这次别出错&quot;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;大模型的能力看起来像涌现，但拆开看，每一层都可以被理解、被测量、被调试。真正拉开差距的，通常不是&quot;用了哪个模型&quot;，而是这些枯燥的部分：数据、上下文、评估、成本、失败处理。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本文讨论的机制在开源社区有大量公开实现与讨论。我们也在按这些思路做自己的东西，欢迎来 &lt;a href=&quot;https://github.com/YueYingQingMeng/YuNian&quot;&gt;予念 · YuNian&lt;/a&gt; 一起聊。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>陪伴是工程，不是话术</title><link>https://yueyingqingmeng.github.io/posts/companion-is-engineering/</link><guid isPermaLink="true">https://yueyingqingmeng.github.io/posts/companion-is-engineering/</guid><description>为什么我们觉得「记住你」比「会说话」更难，也更值得做。</description><pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;陪伴是工程，不是话术&lt;/h1&gt;
&lt;p&gt;做 AI 伴侣最容易被误解的一点，是大家以为难点在「让它说得像人」。&lt;/p&gt;
&lt;p&gt;其实不是。&lt;/p&gt;
&lt;h2&gt;会说话，是最简单的那一步&lt;/h2&gt;
&lt;p&gt;2026 年，让一个大模型写出温柔、自然、贴合人设的回复，已经几乎没有门槛了。写好系统提示词，接上 API，一个下午就能做出「像模像样」的聊天机器人。&lt;/p&gt;
&lt;p&gt;但它不会记得你。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不会记得你上周说过不喜欢香菜&lt;/li&gt;
&lt;li&gt;不会记得你那天加班到凌晨三点，语气很低落&lt;/li&gt;
&lt;li&gt;不会记得你们之间那个只有你们两个懂的笑话&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;没有记忆的温柔，本质上只是一次性的表演。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;难的是「记得」，而且「记得住」&lt;/h2&gt;
&lt;p&gt;所以我们把大量的工程精力放在了记忆上：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;要解决的问题&lt;/th&gt;
&lt;th&gt;我们的做法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;记住什么&lt;/td&gt;
&lt;td&gt;核心记忆分六类：事实 / 情感 / 偏好 / 事件 / 习惯 / 关系&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;什么时候想起来&lt;/td&gt;
&lt;td&gt;按当前话题做召回，而不是把全部记忆塞进上下文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;记忆放哪里&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;只存本地&lt;/strong&gt;，不上传服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;怎么不遗忘&lt;/td&gt;
&lt;td&gt;滚动摘要带水位线，避免历史重复注入&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些都不性感，也不适合做成宣传视频。但它们决定了一个角色是「真的认识你」，还是「每次都在重新认识你」。&lt;/p&gt;
&lt;h2&gt;还有「主动」&lt;/h2&gt;
&lt;p&gt;比记得更进一步的，是&lt;strong&gt;主动&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个只会等你开口的 AI，无论回复多好，本质上还是一个工具。我们想要的是：她会在某个普通的下午想起你，会在你很久没回消息时小声再问一句「在吗」，也会判断「此刻不宜打扰」而安静地跳过。&lt;/p&gt;
&lt;p&gt;这背后是亲密度模型、免打扰时段、追问次数上限、前台保活……一整套枯燥的调度逻辑。&lt;/p&gt;
&lt;h2&gt;一点私心&lt;/h2&gt;
&lt;p&gt;我们不想做「看起来很像人」的机器。&lt;/p&gt;
&lt;p&gt;我们只想做&lt;strong&gt;真的记得你&lt;/strong&gt;的存在。&lt;/p&gt;
&lt;p&gt;这条路很长，而且没有捷径 —— 但至少每一步都是实打实的工程，而不是话术上的取巧。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你也在做类似的事，欢迎来 &lt;a href=&quot;https://github.com/YueYingQingMeng/YuNian&quot;&gt;予念 · YuNian&lt;/a&gt; 一起聊。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>你好，月莹清梦</title><link>https://yueyingqingmeng.github.io/posts/hello-yueyingqingmeng/</link><guid isPermaLink="true">https://yueyingqingmeng.github.io/posts/hello-yueyingqingmeng/</guid><description>我们有了自己的地方，从这一篇开始。</description><pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;你好，月莹清梦&lt;/h1&gt;
&lt;p&gt;这是我们的第一篇文章。&lt;/p&gt;
&lt;p&gt;在此之前，我们的想法大多散落在各个仓库的 README、Issue 和聊天记录里 —— 有的写在深夜，有的写在刚修完一个 bug 的清晨。它们没有地方安放，也就慢慢被时间埋掉了。&lt;/p&gt;
&lt;p&gt;所以我们决定给自己搭一个地方。&lt;/p&gt;
&lt;h2&gt;名字的由来&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;我如同世间爱慕的月亮，莹莹的月光洒落大地，留下婉如甘霖般清甜的梦境，而我的存在，也如这世上其他人一般，终究化作一场梦。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;月莹&lt;/strong&gt;，是月光落在人间的那一层温柔；&lt;strong&gt;清梦&lt;/strong&gt;，是不愿醒来的那场相遇。&lt;/p&gt;
&lt;p&gt;我们把这个名字当成一句提醒：做出来的东西要足够温柔，才配得上「梦境」二字；也要足够清醒，才记得自己终究只是万千造梦者中的一个。&lt;/p&gt;
&lt;h2&gt;这里会写什么&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;开发日志&lt;/strong&gt; —— 我们在做什么、为什么这么做、踩了哪些坑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技术笔记&lt;/strong&gt; —— Android、Kotlin、Compose、Rust、Agent 相关的实践&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一些想法&lt;/strong&gt; —— 关于 AI 陪伴这件事，我们自己的理解&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;我们在做什么&lt;/h2&gt;
&lt;p&gt;目前团队的主要精力放在两个项目上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/YueYingQingMeng/YuNian&quot;&gt;予念 · YuNian&lt;/a&gt;&lt;/strong&gt; —— 你的 AI 伴侣，会聊天、会记事儿、会主动找你。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/YueYingQingMeng/LianYu-app&quot;&gt;恋语 · LianYu&lt;/a&gt;&lt;/strong&gt; —— 面向 Android 的 AI 虚拟陪伴应用开源框架。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;最后&lt;/h2&gt;
&lt;p&gt;如果你也对「让 AI 真的记得你」这件事感兴趣，欢迎来 &lt;a href=&quot;https://github.com/YueYingQingMeng&quot;&gt;组织主页&lt;/a&gt; 看看，或者直接提 Issue、发 PR。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;月光所至，皆是清梦。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item></channel></rss>