Content
一段有状态的交互过程,在不同语境下含义不同,但核心都是”在无状态的基础设施上维护状态”:
Acceptance
(留空)
Question
- Session 和 Connection 的本质区别是什么?为什么 HTTP 是无状态的却需要 session?
- 在 AI Agent 场景下,session 承载的是”对话上下文”还是”身份认证”?和传统 Web session 的侧重点有何不同?
- session 的生命周期管理(创建→活跃→过期→清理)和操作系统的进程管理有什么类比?
See Also
Reference
- 来源:2026-03-20 Ghost-in-the-Shell cron 系统改造
- 上下文:OpenClaw 的 main/isolated session 机制、session store 维护策略
YoYo’s Note
Session(会话):一段有状态的交互过程。
在不同语境下含义不同,但核心都是”在无状态的基础设施上维护状态”:
| 语境 | Session 是什么 | 存储什么 |
|---|---|---|
| Web(HTTP) | 服务器端的用户状态容器(Cookie/Session ID 关联) | 登录态、购物车、偏好 |
| 数据库 | 一次连接的上下文 | 事务、临时表、锁 |
| 终端/SSH | 一次 shell 交互 | 环境变量、工作目录、进程组 |
| AI Agent(OpenClaw) | 一段对话的完整上下文 | 消息历史、工具调用记录、模型状态 |
AI Agent 场景的特殊性:
- 传统 session 主要解决”认证”问题(你是谁),AI session 主要解决”记忆”问题(我们聊到哪了)
- OpenClaw 的 isolated session 类似一次性函数调用,main session 类似长期运行的 REPL
- Session 积累 = 上下文积累 = token 消耗,所以需要主动管理生命周期(不像 Web session 过期就过期,AI session 过期意味着丢失对话历史)
Answer
Q: Session vs Connection?
Connection 是传输层的物理链路(TCP 连接),Session 是应用层的逻辑状态。一个 session 可以跨多个 connection(比如你关了浏览器再打开,TCP 连接断了但 session 还在,因为有 Cookie)。HTTP 无状态 = 每个请求独立,服务器不记得上一个请求是谁发的。Session 就是在这个无状态协议上”假装有状态”的机制。
Q: AI Agent 的 session 承载什么?
主要是”对话上下文”(消息历史 + 工具调用记录),不是身份认证。传统 Web session 的核心问题是”你是谁”,AI session 的核心问题是”我们聊到哪了”。这也导致 AI session 比 Web session 重得多——一个 AI session 可能有几十万 token 的历史,而 Web session 通常只有几 KB 的状态。