Skip to main content

电梯演讲

您提议进行什么更改?
向 ACP 协议添加一个 session/list 端点,允许客户端从代理查询和枚举现有会话,启用会话管理功能,如会话历史记录、会话切换和会话清理。

现状

今天的事情是如何运作的,这导致了什么问题?我们为什么要改变?
目前,ACP 协议通过 session/newsession/load 端点提供会话管理。但是,客户端无法:
  • 列出它们可能想要恢复的现有会话
  • 清理旧或过期的会话
  • 显示会话历史记录供用户选择
这造成了几种不便:
  • 客户端必须维护自己的会话注册表来跟踪会话
  • 无法在客户端之间共享会话历史记录
  • 客户端必须自己处理会话过期的逻辑

我们提议对此做什么

您提议如何改善情况?
添加一个 session/list 端点,允许客户端查询和枚举现有会话。

美好的未来

一旦这个功能存在,事情将如何发展?
我们将能够实现会话历史记录、会话切换和会话清理等会话管理功能。

实施细节和计划

告诉我更多关于您的实施。您的详细实施计划是什么?
我们提议添加一个新的 “session/list” 方法。代理必须通过在其功能中返回 session: { list : {} } 来声明此选项可用。 然后客户端能够请求会话列表:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "session/list"
}
代理将返回一个会话列表:
{
  "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:初始版本