← 博客 · 核查日期 2026-11-02

为什么 ChatGPT 的网址里有个 /c/?

从这个小问题出发,讲清聊天产品的网址怎么分工:这是哪段对话、现在怎么看、谁能看。

证据标签:全文统一用标签说明出处,正文就不再逐句加限定。
截图 真实截图里直接看到的 官方 厂商帮助页或文档写明(写作时打开核对过) 官方* 官方页面有人机验证,打不开,内容依据搜索引擎对该页的摘要 观察 使用时看到的,没有官方说明 示例 本文自拟的设计示例 待验 目前不知道,不当事实讲

1网址里的 /c/ 是什么

这是我刚刚在 ChatGPT 里开的一段对话 截图:

浏览器地址栏:chatgpt.com/c/6ae846b8-7cfc-83e9-abb6-7f3712333364 ChatGPT 对话:用户说“给我五块钱”,ChatGPT 回答精神上先转你 ¥5
真实截图,2026-11-02。已裁掉书签栏和侧边栏。

为什么中间有个 /c/?后面那串长字符是什么?ChatGPT 已经自动给这段对话起了标题“请求五块钱”,为什么不直接把标题放进网址?

一句话答案

/c/ 是“会话页面”这一类页面的路径前缀,后面跟的是这段会话的 ID。有了这个前缀,网站的路由就能把会话页和分享页、设置页这些其他页面分开。至于 c 指的是 chat 还是 conversation,OpenAI 没有说明。

把这串 ID 拆开看

按 UUID 的格式读这串 ID,能读出一个意外的结果:

6ae846b8 - 7cfc - 83e9 - abb6 - 7f3712333364 ← 截图里的会话 ID 前 8 位:创建时间? 0x6ae846b8 = 1793607352 秒 = 2026-11-02 16:15:52 比截图只早 1 分钟左右 第 13 位:版本号 = 8 UUID v8,RFC 9562 留给 厂商自定义格式的版本 所以它不是随机生成的 v4 第 17 位:变体 = a 二进制 1010,开头是 10 符合 RFC 9562 的标准变体 其余各位:含义没有公开
图 1 把截图里的会话 ID 拆开。版本位和变体位按 RFC 9562 读出;“前 8 位是创建时间”是根据这一个样本推出来的:换算结果和截图时间吻合,但还需要更多样本确认 待验。

这说明两件事:

再往下追一步:分享

点回答下面那个向上的箭头(分享),同一段对话会拿到另一条网址:

chatgpt.com/share/{分享 ID}
chatgpt.com/c/6ae846b8-… 私有入口:路径里是会话 ID chatgpt.com/share/{分享 ID} 分享入口:一份快照(ID 是否相同待验) 同一段对话 身份:是哪段对话 权限:谁能看 /c/ → 只有本人 /share/ → 拿到链接的人 (个人版) 由服务器判断 不写在网址里
图 2 同一段对话可以有两个入口,能看的人不一样。第三个问题“状态”(比如当前打开的是哪个面板)放到第 4 节讲。分享 ID 是示意。

于是又多出两个问题:同一段对话为什么会有两条网址?两条网址里的 ID 是同一个吗?前一个下文会回答,后一个要靠实验。

片段能确定的不能确定的
/c/ 截图固定的路径段,用来标记“这是会话页面”c 是 chat 还是 conversation,OpenAI 没有说明。可以当作记忆提示,但别当成定论讲
6ae846b8-… 截图会话 ID,是 UUID v8;前 8 位换算出来正好是创建时间其余各位的含义;是不是所有会话都这样(目前只有一个样本)
/share/ 官方*OpenAI 帮助页写明,分享链接以 chatgpt.com/share/ 开头后面的 ID 和 /c/ 里的是不是同一个。搜索摘要里说后面跟的是 conversation ID,但写作时既没读到原文也没有实测,先不下结论,验证方法见第 10 节 待验

最后这个问题正好说明一件事:看起来像,不等于就是。两个 ID 外形相同,不能推出它们是同一个对象;就算是同一个,也不能推出拿到分享链接的人能打开 /c/ 那条网址。

截图里是真实的会话 ID。按正常设计,别人拿到这条链接也打不开对话(见第 5 节),但能从 ID 算出它的创建时间。

2网址的五个部分

先用一个虚构应用把语法讲清楚 示例:

https://example.com/c/chat_123?view=files#msg-7
协议 主机 路径 查询 片段
部分例子在本文约定里负责语法要点
协议https用什么方式访问地址栏常常不显示,不显示不代表没有
主机example.com访问哪个网站
路径/c/chat_123打开哪个对象(身份)斜杠不对应服务器上的文件夹,一个程序可以接住所有 /c/*
查询?view=files怎么看这个对象(状态)多个参数用 & 连接
片段#msg-7页面内定位浏览器发请求时不会把它发给服务器,但页面脚本能读到它(MDN)
浏览器 https://example.com/c/chat_123 ?view=files#msg-7 #msg-7 不发出去 页面脚本读取它,跳到第 7 条消息 HTTP 请求 GET /c/chat_123 ?view=files 服务器 收到: /c/chat_123 view=files 收不到 #msg-7
图 3 片段只留在浏览器里。服务器靠路径和查询决定返回什么,靠登录凭证决定能不能返回。

“路径放身份、查询放状态”是一种好懂的设计约定,不是 URL 标准的强制规定。查询参数也可以用来定位资源,比如 /?conversation=123。

3身份:/c/ 与长 ID

为什么要有 /c/ 这一层

网站里不只有会话,还有设置页、分享页、项目页。固定的路径段让路由程序一眼分清“这是哪一类页面”。

写法好处代价
/c/{id}短,好复制新读者要先知道 c 的意思
/chat/{id}一看就懂长一点
/{id}最短会和 /settings 这类固定页面名撞车
/?conversation={id}也能用身份和状态挤在一起,读起来费劲

真实产品两种写法都有:

产品会话地址出处
ChatGPTchatgpt.com/c/{uuid}观察
Claude 网页claude.ai/chat/{uuid}官方 Compliance API 文档中的 href 字段
Claude 桌面claude://claude.ai/chat/{id}
claude://claude.ai/project/{id}
官方 深链接说明:同一个对象有网页和桌面两种入口
Geminigemini.google.com/app/{id}待验 常见的形式,ID 看起来不是 UUID,写作时没有核实

结论:选 /c/ 还是 /chat/ 只是长度和可读性之间的取舍,看不出厂商用了什么框架或数据模型。

为什么用 ID,不用标题

/chat/如何写简历     ← 会重名,改标题就得改地址,中文要编码,标题还会留在浏览器历史里
/chat/chat_123       ← 改标题、加消息、换模型,地址都不变

会话是一个长期存在的对象,标题只是它的显示属性。稳定的 ID 放进地址,标题留在页面上显示。

网址里的 ID 不一定是系统里唯一的 ID

Claude 的 Compliance API 给同一个会话返回了两个标识 官方:

"id":   "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789"

接口里用 claude_chat_…,网页地址里用 UUID。这正好说明页面路由和后台接口是两层,不能拿网址去反推后端结构。

一段会话 标题、消息、模型都能变 网页地址 claude.ai/chat/{uuid} 桌面深链接 claude://claude.ai/chat/{id} 后台接口 ID claude_chat_01H5… 分享快照(示例) /share/{shareId} 复制一份
图 4 同一个对象可以有多个入口,用的 ID 也不一样。左侧两个和右上角来自 Claude 官方文档;右下角的分享快照是本文自拟的设计,快照是复制出来的一份,不是会话本身。

ID 难猜 ≠ 有权限

随机的长 ID 让人很难猜到别人的会话,但服务器仍然要检查:当前登录的这个人能不能读这个会话。“浏览器知道这个 ID”和“账号有权读它”是两回事。(OWASP IDOR)

4状态:查询参数与片段

同一段对话可以有好几种看法 示例:

/c/chat_123                 打开对话,默认视图
/c/chat_123?view=files      打开文件面板
/c/chat_123?message=msg_7   跳到某条消息

真实产品里也有用查询参数携带状态的例子 官方:Claude 桌面的 claude://code/new?q=…&folder=… 用 q 预填输入框,用 folder 指定工作文件夹(深链接说明)。路径说明“去哪里”,查询参数说明“到了以后是什么样”。

判断一个状态该不该进网址

问自己:把这个地址复制到新标签页打开,应不应该恢复成现在这个样子?

应该:当前打开的面板、选中的回答、筛选条件。
不应该:鼠标悬停、输入框里的草稿、密钥和登录凭证(地址会被复制、记录、分享)。

地址变了,页面为什么不刷新

前端可以用 History API 改地址:pushState 新增一条浏览器历史,replaceState 替换当前这条。改地址本身不会发网络请求,也不会触发模型调用。(MDN)

① 打开新聊天 还没有会话 ② 发出第一条消息 前端提交请求 ③ 服务器建好会话 返回 chat_123 ④ 前端改地址 replaceState,不刷新 地址栏 /new /new /new /c/chat_123 用 replaceState 而不是 pushState:点后退时不会回到一个空白的“新聊天”页。 之后每收到一段生成的文字,都不去动浏览器历史。
图 5 一个可行的流程 示例。ID 在哪一步生成、用的是 replace 还是 push,每个产品要单独观察 待验。

两个容易漏掉的设计点:

5权限:私有入口与分享入口

同一段文字可以从两种入口看到,规则完全不同:

/share/ 这几个字决定不了公开与否,它只是一个入口,权限要靠后台执行。

请求到达服务器 /c/{id} /share/{shareId} 已登录? 有权读这个会话? 返回会话内容 是 是 跳转登录 403 / 404 否 否 分享还有效(未撤销)? 访问者在分享范围内? 返回快照和快照时间 是 是 404 链接失效 403 或去登录 否 否 两条路都要检查。ID 再难猜,也不能跳过这一步。 分享范围举例:公开、仅本组织、仅本工作区(见下表)
图 6 私有入口和分享入口的权限判断 示例。没有权限时返回 404 而不是 403,可以不让对方知道这个会话存在。

三家产品的分享规则

产品分享地址内容会不会跟着更新谁能看撤销
ChatGPT 官方* chatgpt.com/share/… 快照,截到分享的那一刻;要加进新消息就再分享一次。企业版帮助页新旧版本说法不一致 待验 个人版:有链接就能看,还能把对话导入自己的历史;企业工作区:只限本工作区成员 设置 → 数据控制 → 共享链接 → 管理;删除原对话,链接也会一起失效
Claude (分享链接) 快照:包含分享之前的消息和 artifacts,之后的消息默认不公开;取消分享再重新分享才会刷新 个人版:有链接就能看;Team、Enterprise:只限本组织成员,不能公开 取消分享
Gemini g.co/gemini/share/… 快照:之后修改或继续聊都不会改变分享页 有链接就能看,还能转发,也能在自己的账号里接着聊 设置里删除公开链接;会话从活动记录里删除时,链接也会自动删除

出处:ChatGPT 分享链接 FAQ、ChatGPT 企业版 FAQ 官方*;Claude、Gemini 官方。OpenAI 帮助页有 Cloudflare 人机验证,写作时没有绕过,ChatGPT 这一行依据的是搜索摘要。三家都没有登录账号实际操作。

时间 快照包含这些 分享前的消息 创建分享 之后的消息 默认不进快照 撤销分享 再通过链接打开 → 失效 ChatGPT:再分享一次,才会更新 Claude:取消后重新分享,快照才会刷新 Gemini:之后接着聊,也不会改变分享页 撤销管不到的 截图、复制走的文字、 别人导入或接着聊出来的副本
图 7 分享快照的生命周期,依据三家的帮助页。ChatGPT 企业版会不会同步之后的新消息,见上表中的待验项。

两个容易讲错的边界

真实案例:一个勾选框,让分享对话进了搜索结果

ChatGPT 曾在分享时提供一个“让搜索引擎可以发现”的勾选框。2025 年 7 月底,Fast Company 发现 Google 收录了 4,500 多条 ChatGPT 分享链接,其中有些包含个人信息。OpenAI 随后在 7 月 31 日移除了这个功能,表示正在和搜索引擎合作删除已收录的内容,但因为缓存,部分内容可能还会短暂出现在搜索结果里。(Search Engine Journal 报道)

这个案例说明两件事:
① 网址一样,暴露范围可以不一样。勾没勾那个框,/share/… 这条网址看起来完全相同,区别只记在服务器的分享记录里。这正是“权限不写在网址里”。
② “能打开”“会被收录”“撤销后能从索引里消失”是三个要分别验证的问题。OpenAI 自己也说,撤下功能后已收录的内容不会马上消失。

6延伸:Agent 多出来的对象

会调用工具、能跑长任务的 Agent,在“会话”之外还有其他对象。下面是一个概念模型 示例,不代表任何产品的内部结构:

项目 需要时才建 会话 /c/{id} 消息 × 很多 定位:#msg-7 执行 run × 多次 进度、失败点、重试 产物 × 多个 文档、图片 链接只预填 发送由用户确认 包含
图 8 一次会话可以有多次执行,一次执行可以产生多个产物,所以“打开对话”和“恢复某次执行”要分开设计。
对象代表什么什么时候值得给它一个独立地址
会话持续交互的上下文用户要回到这段对话
消息一次输入或输出要精确引用、跳转
执行 run一次任务执行和它的状态要看进度、失败在哪一步、重试记录
产物执行生成的文档、图片要单独查看、下载或分享
项目多个会话和资料的组织方式确实需要项目视图(Claude 桌面有 project/{id} 深链接 官方)

7落地:最小路由方案

给一个简单的聊天应用,先做三个入口就够了 示例:

/new                 新建聊天
/c/{conversationId}  打开自己的会话   → 检查:登录用户有没有权限读这个会话
/share/{shareId}     打开分享的内容   → 检查:分享记录还在不在、范围对不对

分享 ID 和会话 ID 分开,这样一个会话可以有多份快照,撤销其中一份也不影响会话本身。分享页上要显示“快照时间”,还要给出撤销入口。这是本方案的设计选择,不代表别的产品一定也这么做。

信息放在哪理由
会话 ID路径稳定的身份
当前面板、选中的回答查询参数(有恢复需要时才放)复制链接后能恢复
跳到某条消息查询参数或片段,二选一统一用一种方式定位就行
输入框草稿页面状态或本地存储不需要分享
模型选择会话或消息的元数据需要记录实际用了哪个模型,但不必放进地址
密钥、凭证、系统提示词后台地址会被复制、记录、分享

项目页、执行记录页等真的需要单独查看时再加。会话地址不挂在项目路径下面,以后把会话移到别的项目,地址也不用改。

8三条结论

1. 路径放身份。用稳定的 ID,不用标题。改标题、加消息、换模型,地址都不该变。

2. 只把“该恢复”的状态放进网址。判断标准:复制到新标签页打开,应不应该是现在这个样子。草稿、悬停、凭证都不放。

3. 权限永远在服务器。私有入口查“这个人有没有权读这个会话”,分享入口查“分享记录还在不在、范围对不对”。ID 再难猜也不算权限,/share/ 这几个字也不算。

做 Agent 时再加一条:链接只负责准备,不负责执行。打开链接可以预填内容,但发送、付款这类动作必须由用户确认。

9常见追问

  1. ChatGPT 的会话 ID 里藏着什么?
    按截图这个样本:它是 UUID v8,前 8 位换算出来正好是创建时间(Unix 秒),其余各位的含义没有公开。多看几个会话 ID 就能验证这个规律。
  2. 别人拿到我的 /c/ 链接,能看到我的对话吗?
    取决于服务器的权限检查,网址本身回答不了。按图 6 的设计,非本人会被拦在“有权读这个会话?”这一步。
  3. ChatGPT 的分享 ID 和会话 ID 是同一个吗?
    目前不确定,验证方法见第 10 节。
  4. #msg-9 这种片段会发给服务器吗?
    不会。但页面脚本能读到它,也可以自己把它发出去。
  5. 地址变了,页面为什么没刷新?
    前端用 History API 改了地址。改地址本身不发请求,也不会触发模型调用。
  6. 能从网址看出后端用了什么框架或模型吗?
    不能。Claude 的例子说明,网址里的 ID 和接口里的 ID 都可以不一样。
  7. 撤销分享以后,搜索引擎里的结果会消失吗?
    不一定马上消失。OpenAI 在 2025 年那次事件里也说过,缓存的结果可能还会短暂出现。
  8. Agent 的一次工具调用失败了,会话地址会变吗?
    不一定。要看产品有没有独立的“执行”对象。

10自己验证

文中有几处只能靠实际操作确认。最快的一项是检查会话 ID 里的时间:打开任意一段 ChatGPT 对话,在浏览器控制台运行下面这行,看输出是不是你开始这段对话的时间。

new Date(parseInt(location.pathname.split('/c/')[1], 16) * 1000)

parseInt 读到第一个 - 就停,所以只取了 ID 的第一组。用截图里的 ID 在 Node 里运行,输出是 Mon Nov 02 2026 16:15:52 GMT+0800。Chrome 第一次在控制台粘贴代码时,会要求先输入 allow pasting。

其余几项建议用只含测试内容的对话来做。每次记下账号类型、工作区、浏览器和日期,结论只适用于当时的条件。

实验操作记录能下的结论
两个 ID复制 /c/ 地址和 /share/ 地址,逐字比较 ID;追加消息后再分享一次,看分享 ID 变不变两个 ID、两次分享的 ID在这个账号下,分享 ID 和会话 ID 是不是同一个,更新分享会不会换 ID
ID 何时出现新建聊天,发送第一条消息发送前、发送后的地址ID 在哪个可见阶段出现
改名重命名会话前后的标题和地址改标题会不会改地址
直接打开把会话地址粘贴到新标签页并刷新;再用无痕窗口打开能不能恢复,会不会要求登录直接访问和私有权限检查是否正常
分享范围创建分享,用无痕窗口打开能看到的消息、附件、登录提示这个账号类型下的实际分享范围
分享更新分享后追加一条消息,再打开原分享新消息有没有出现快照还是实时同步
撤销取消分享后重新打开链接(先清缓存)还能不能读撤销对后续访问是否生效

公开分享只用测试内容,做完就撤销。

11证据与未验证项

项目结论
不采用的说法凭 /c/ 推断技术框架;用随机 ID 代替权限检查;因为两个 ID 长得像,就断定分享 ID 等于会话 ID
待验证ChatGPT 会话 ID 前 8 位是不是总等于创建时间(目前 1 个样本);ChatGPT 分享 ID 和会话 ID 的关系;各产品生成 ID 的时机;Gemini 私有会话地址的格式;ChatGPT 企业版分享是否自动同步新消息

已验:从截图里的会话 ID 读出版本位 8、变体位 a,前 8 位 0x6ae846b8 换算为 2026-11-02 16:15:52(UTC+8),和截图时间吻合;写作时打开并读到了 Claude 分享说明、Claude 深链接说明、Claude Compliance API(id 和 href 两种标识)、Gemini 分享说明的原文;ChatGPT 收录事件的经过和 OpenAI 的声明,来自 Search Engine Journal 报道里的引用。
没验:OpenAI 帮助页有 Cloudflare 人机验证,没有绕过,ChatGPT 的分享规则依据搜索摘要;chatgpt.com/c/ 的格式来自截图,没有官方出处;三家产品都没有登录实操;原稿提到的 chatgpt.com/s/ 定时任务分享前缀没找到出处,已经删掉。
相邻情况:个人账号和团队工作区的差别、网页地址和桌面深链接的差别都按官方文档核对过;移动端 App、不同浏览器、临时会话的行为都没有验证。

// ON THIS PAGE 收起 展开目录
Silent Star约 13 分钟
文章目录11
Silent Star约 13 分钟