最近在使用 DeepSeek 时发现一个有趣的功能:生成的对话分享链接(形如 chat.deepseek.com/share/xxx)不仅可以让他人查看聊天记录,还能在浏览后点击“继续聊”,无缝衔接地追问或扩展对话。这看似简单的交互,背后其实隐藏着一套精巧的技术设计。本文结合观察和推理,试图还原这一功能的实现思路,并探讨其带来的启发。

一、现象:分享链接不是“截图”,而是一个可延续的入口

打开一个 DeepSeek 分享链接,页面顶部通常有提示“该对话来自分享,由 AI 生成,请仔细甄别”——这说明当前展示的是一份 静态的对话快照。然而,当访问者点击“继续聊”按钮时,却能基于原有对话发起新的交流,体验上就像从中间接上了一段对话。

这一现象引出了几个关键问题:

  • 分享出去的对话是如何被保存的?
  • 点击“继续聊”时,系统做了什么?
  • 为什么分享的原对话不会被修改?

二、核心实现逻辑:快照 + 副本化继承

整个功能可以拆解为三个技术环节:存储快照呈现快照从快照创建新会话

1. 存储快照:一份被冻结的对话副本

当用户点击“分享”按钮时,系统不是简单地生成一个指向原会话的链接,而是执行以下操作:

  • 冻结当前会话状态:将该会话中的所有消息、时间戳、角色等信息打包成一个独立的“分享快照”。
  • 分配唯一标识:生成一个短码(如 7q0h94mod8d2ixuzji),作为该快照在数据库中的主键。常用生成方式有 Base62 编码、Snowflake 雪花算法等。
  • 存入专用数据表:分享快照通常存储在与普通会话不同的表或集合中,且被标记为 只读,以确保原始会话的安全和隐私。

存储格式通常采用 JSON 或 JSONL。例如,一段简单的对话快照可能长这样:

{
  "share_id": "7q0h94mod8d2ixuzji",
  "messages": [
    { "role": "user", "content": "123", "timestamp": 1734595200 },
    { "role": "assistant", "content": "你好!你输入了'123'…", "timestamp": 1734595201 }
  ],
  "created_at": "2026-05-07T00:00:00Z"
}

2. 呈现快照:服务端渲染与客户端展示

用户打开分享链接时,后端根据短码查询对应的快照数据,并返回一个完整页面。为了兼顾速度和 SEO,很多应用采用 服务端渲染(SSR):服务器直接生成包含对话内容的 HTML 返回给浏览器,用户瞬间看到页面。也可以采用客户端渲染(CSR),先加载框架再异步拉取 JSON 数据。

无论哪种方式,前端都会以只读模式展示对话,用户不能直接编辑原有消息,这与“快照”的定位一致。

3. “继续聊”:从快照创建新会话

这是最精妙的一步。当用户点击“继续聊”并发送新消息时,后台的流程如下:

  1. 前端发起创建新会话的请求,同时附上当前的 share_id 和用户的新消息。
  2. 后端根据 share_id 从快照表中读取完整的对话历史。
  3. 后端 新建一个独立的会话记录(生成新的 session_id),并将快照中的历史消息 复制 过来,作为这个新会话的初始消息数组。
  4. 将用户的新消息追加到该数组中,然后喂给大模型生成回复。
  5. 后续的所有交互都在这个 全新会话 中进行,原始快照不会被任何方式修改。

换句话说,“继续聊”的本质是:从分享的快照中克隆一份初始上下文,然后在此基础上开启一个完全独立的对话。这种“复制而非引用”的设计,既保护了原分享者的数据,又赋予了访问者自由探索的空间。

三、整体流程可视化

下面用一张流程图完整展示从分享到继续聊的完整链路:

[用户A] ──分享──→ 生成分享快照
                      ↓
               [数据库/Redis]
           (存储对话历史 + share_id)
                      ↓
[用户B] 打开链接 ──→ SSR/CSR 渲染页面
                      ↓
[用户B] 点击"继续聊" → 后端创建新会话
                      ↓
               加载分享快照作为初始上下文
                      ↓
          [Session 会话管理器] ──→ AI 大模型
                      ↓
              新对话记录保存至数据库

四、设计背后的权衡

这种实现方式并非偶然,而是经过深思熟虑的架构选择:

优势 代价 / 局限性
隐私安全:原会话不会被他人篡改或删除。 存储冗余:每次“继续聊”都会复制一份完整历史,可能增加存储成本。
简单可靠:快照只读,新会话独立,无状态同步问题。 上下文长度限制:长对话复制后每次请求都需传递全部历史,对 token 消耗较大。
易于扩展:分享页面可缓存、可被搜索引擎索引。 会话隔离:继续聊产生的新对话与原分享者之间没有同步机制,适合一次性分享场景。
用户体验流畅:点击“继续聊”无需等待复杂的会话恢复。

五、延伸思考:这种设计还能做什么?

从技术模式上看,“快照 + 副本化继承”不仅适用于 AI 对话,还可以推广到更多协作场景:

  • 代码片段协作:分享一段代码快照,他人可以基于此继续编写,生成新的代码版本。
  • 在线文档批注:分享只读文档快照,他人可克隆一份并在其基础上批注,而不影响原文。
  • 教学示例复用:教师分享一个完整的 AI 教学对话,学生可以在此基础上提问、实验,形成自己的学习路径。

六、结语

一个看似简单的“继续聊”按钮,背后折射出的是对数据状态、会话生命周期和用户权限的精细管理。通过“冻结快照 + 懒克隆新会话”的模式,DeepSeek 在保护隐私和提供延续性之间找到了一个优雅的平衡点。这种设计不仅满足了用户分享高质量对话、并在此基础上深入探索的需求,也为类似的产品功能提供了可借鉴的范例。

下一次当你在 DeepSeek 分享链接中点击“继续聊”时,或许会想起这篇文章——你的每一次追问,都始于一个被小心封存的瞬间,然后在一个全新的空间里,被重新唤醒、延续。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐