temp

TS interface vs type

  1. 对现有类型做组合/运算,优先用 type
  2. 需要可扩展、可被后续声明合并(派生/补充),优先用 interface
  3. 对“对象结构定义”来说两者很多场景等价,团队统一风格比死磕语法更重要

什么时候更适合 type

  • 做联合类型:A | B
  • 做交叉组合:A & B
  • 做条件类型、映射类型、工具类型拼装
  • 定义元组、原始类型别名
type Id = string | number;
type User = { id: string; name: string };
type UserWithMeta = User & { createdAt: Date };

什么时候更适合 interface

  • 定义面向对象的结构契约(尤其是对外 API)
  • 预期后续继续扩展
  • 需要声明合并(同名 interface 自动合并)
interface User {
  id: string;
}

interface User {
  name: string;
}
// 合并后:{ id: string; name: string }

一句话记忆

  • “做类型运算”用 type
  • “做可扩展契约”用 interface

强缓存 vs 协商缓存

  • 强缓存:浏览器直接用本地副本,不发请求。常见头:Cache-Control: max-age=3600Expires: Fri, 10 Apr 2026 13:00:00 GMT
  • 协商缓存:会发请求给服务端确认是否变更;未变更返回 304,变更返回 200 + 新内容。常见头:ETag: "v1.2.3" / If-None-Match: "v1.2.3"Last-Modified: Fri, 10 Apr 2026 12:00:00 GMT / If-Modified-Since: Fri, 10 Apr 2026 12:00:00 GMT
  • 关系:先看强缓存是否过期;过期后再走协商缓存。

一句话:强缓存省请求,协商缓存省流量。


RAG = 检索 + 增强 + 生成


性能关注:

  1. 首屏输入可用时间
  2. 渲染性能
  3. js错误率
  4. 首字时间
  5. 流式稳定性与弱网下兜底

Transformer(超简版学习记录)

一句话

每个词都会先看全句,再更新自己的含义。

核心流程

  1. 输入 token -> embedding(词向量)
  2. 加位置编码(告诉模型顺序)
  3. 每个词各自产生 Q/K/V
  4. Q·K 算“我该关注谁”的分数
  5. softmax 变成权重(总和为 1)
  6. 用权重对所有 V 加权求和,得到当前词新表示
  7. 多头注意力并行做多组,再拼接
  8. 经过 FFN + 残差 + LayerNorm

Q / K / V 是什么

  • Q(Query):当前词“想找什么信息”
  • K(Key):每个词“可被匹配的标签”
  • V(Value):每个词“真正提供的内容”

一句话:QK 决定看谁,V 决定拿什么。

QKV 怎么来的

同一个输入向量 x,通过 3 个可训练矩阵线性变换得到:

q = xW_Q, k = xW_K, v = xW_V

  • W_Q/W_K/W_V 都是训练中学出来的参数
  • 不是手工规则

为什么比 RNN 更强

  • 任意两词可直接建联系(长距离依赖更容易)
  • 可并行训练(速度更快,扩展性更好)
  • 这是现在大模型的主干架构

ai对话 性能

  1. 首屏可用时间(LCP/INP,输入框多久可用)
  2. TTFT(首字时间)
  3. 流式稳定性(是否卡顿、断流、重连成功率)
  4. 前端错误率(JS error、接口 4xx/5xx、超时)
  5. 渲染性能(长列表掉帧、消息越多越卡)

上下文的管理

  1. 先拿到 system prompt(规则、模式、工具说明等)。
  2. 从历史里取“有效消息”(不是把数据库里所有消息都发)。
  3. 估算 token,判断会不会接近上限。
  4. 如果危险,先做“摘要压缩(condense)”;不行再“滑窗截断”。
  1. 才真正调用模型。

压缩prompt

  • 用户意图
  • 已查看文件历史
  • 已解决的与还在解决的
  • 事件清单
  • 当前工作与下一步

MCP

  1. MCP 是什么 MCP(Model Context Protocol)是让模型连接外部能力的通用协议。 它定义了“怎么声明能力、怎么被调用、怎么传上下文”,而不是具体业务逻辑。

  2. MCP 里有什么对象

  • MCP Server:提供能力的一端(你可以理解成工具网关)
  • Client/Host:发起调用的一端(如 IDE 助手、Agent 运行时)
  • Tools:可执行动作(查数据、发请求、改文件等)
  • Resources:可读取内容(文件、文档、知识库片段等)
  • Prompts:可复用的提示模板(让调用方少写重复提示)
  1. 一次调用怎么走

  2. Client 连接到 MCP Server

  3. 发现可用能力(tools/resources/prompts)

  4. 模型决定调用某个 tool

  5. Server 执行并返回结构化结果

  6. 模型把结果并入后续推理/回复