> ## Documentation Index
> Fetch the complete documentation index at: https://acp-docs.cxykevin.top/llms.txt
> Use this file to discover all available pages before exploring further.

# 会话列表

* 作者：[@josevalim](https://github.com/josevalim)
* 支持者：[@benbrandt](https://github.com/benbrandt)

## 电梯演讲

> 您提议进行什么更改？

向 ACP 协议添加一个 `session/list` 端点，允许客户端从代理查询和枚举现有会话，启用会话管理功能，如会话历史记录、会话切换和会话清理。

## 现状

> 今天的事情是如何运作的，这导致了什么问题？我们为什么要改变？

目前，ACP 协议通过 `session/new` 和 `session/load` 端点提供会话管理。但是，客户端无法：

* 列出它们可能想要恢复的现有会话
* 清理旧或过期的会话
* 显示会话历史记录供用户选择

这造成了几种不便：

* 客户端必须维护自己的会话注册表来跟踪会话
* 无法在客户端之间共享会话历史记录
* 客户端必须自己处理会话过期的逻辑

## 我们提议对此做什么

> 您提议如何改善情况？

添加一个 `session/list` 端点，允许客户端查询和枚举现有会话。

## 美好的未来

> 一旦这个功能存在，事情将如何发展？

我们将能够实现会话历史记录、会话切换和会话清理等会话管理功能。

## 实施细节和计划

> 告诉我更多关于您的实施。您的详细实施计划是什么？

我们提议添加一个新的 "session/list" 方法。代理必须通过在其功能中返回 `session: { list : {} }` 来声明此选项可用。

然后客户端能够请求会话列表：

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "session/list"
}
```

代理将返回一个会话列表：

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "sessions": [
      {
        "sessionId": "sess_123abc",
        "title": "Debug authentication timeout",
        "createdAt": "2025-01-10T14:30:00Z",
        "updatedAt": "2025-01-10T15:45:00Z"
      },
      {
        "sessionId": "sess_456def",
        "title": "Implement user authentication",
        "createdAt": "2025-01-09T09:15:00Z",
        "updatedAt": "2025-01-09T11:20:00Z"
      }
    ]
  }
}
```

## 常见问题

> 在编写本文档的过程中或随后的讨论中出现了哪些问题？

### 我们应该在列表中返回所有会话，还是支持分页？

最初，我们提议返回所有会话。如果代理需要支持大量会话，可以在未来的 RFD 中添加分页。

### 我们应该返回所有会话字段，还是只返回一部分？

最初，我们提议只返回会话 ID、标题和日期字段。如果需要更多字段，可以在未来的 RFD 中添加。

### 客户端如何知道会话是否仍然有效？

这可以通过未来的 RFD 添加。一种方法是在 `session/list` 响应中包含一个 `valid` 字段，或者添加一个单独的 `session/validate` 端点。

### 我们是否应该支持按日期或标题过滤？

这可以通过未来的 RFD 添加。最初，我们提议返回所有会话，让客户端进行过滤。

## 修订历史

* 2025-11-17：初始版本
