Pi Session Manager

API 参考

用于编程访问 Pi Session Manager 的 HTTP 和 WebSocket API。

Pi Session Manager 通过 HTTP 和 WebSocket API 暴露全部功能。两种协议共享同一个命令路由(dispatch()),因此每个命令在两种协议上的行为完全一致。

HTTP API

端点

POST http://127.0.0.1:52131/api
Content-Type: application/json

请求格式

{
  "command": "command_name",
  "payload": { }
}

响应格式

{
  "success": true,
  "data": { },
  "error": null
}

认证

从非 localhost 地址访问时,请求必须包含 Bearer Token:

curl -X POST http://your-server:52131/api \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{"command":"scan_sessions","payload":{}}'

Token 也可以通过查询参数传递:?token=YOUR_API_TOKEN

通过 API 本身或设置 → 高级 → API 密钥来管理 Token。

WebSocket API

连接

ws://127.0.0.1:52131/ws

以相同的 { command, payload } 格式发送 JSON 消息。响应通过同一连接推送回来。

认证

连接后,如需认证则发送 auth 消息:

{"command": "auth", "payload": {"token": "YOUR_API_TOKEN"}}

实时事件

WebSocket 连接还会接收推送事件:

  • session-changed — 会话文件被修改时触发(包含 changed_paths 用于增量重扫)
  • sessions-diff — 增量会话列表更新

SSE(Server-Sent Events)

对于仅支持 HTTP 但需要实时更新的客户端:

GET http://127.0.0.1:52131/api/events

以 SSE 格式推送与 WebSocket 相同的事件。移动端 Web 前端将其作为 WebSocket 的替代方案。

可用命令

会话管理

命令载荷说明
scan_sessions{}扫描并返回所有会话
read_session_file{ "path": "..." }读取会话的 JSONL 内容
rename_session{ "path": "...", "name": "..." }重命名会话
delete_session{ "path": "..." }优先将会话文件移动到回收站(Trash/Recycle Bin),仅在不可恢复删除不可用时才永久删除,并清理缓存记录
export_session{ "path": "...", "format": "html|markdown|json" }导出会话

搜索

命令载荷说明
search{ "query": "...", "role": "all|user|assistant|tool" }全文搜索

标签

命令载荷说明
list_tags{}列出所有标签
create_tag{ "name": "...", "color": "...", "parent_id": null }创建标签
update_tag{ "id": ..., "name": "...", "color": "..." }更新标签
delete_tag{ "id": ... }删除标签
assign_tag{ "session_path": "...", "tag_id": ... }为会话分配标签
remove_tag{ "session_path": "...", "tag_id": ... }移除会话标签

收藏

命令载荷说明
list_favorites{}列出已收藏的会话路径
toggle_favorite{ "path": "..." }切换收藏状态

配置

命令载荷说明
get_session_paths{}获取已配置的会话目录
save_session_paths{ "paths": ["..."] }更新会话目录
get_all_session_dirs{}获取所有已解析的扫描目录
get_config_bundle{}获取完整配置包
save_config_bundle{ ... }保存配置包
list_config_versions{}列出配置版本历史

认证

命令载荷说明
list_tokens{}列出 API Token
create_token{ "name": "..." }创建新的 API Token
revoke_token{ "id": ... }撤销 API Token

统计

命令载荷说明
get_session_stats{}获取聚合的会话统计数据

模型配置

命令载荷说明
load_model_config{}加载当前模型配置
save_model_config{ ... }保存模型配置
import_model_config_from_path{ "path": "..." }从文件导入模型配置
export_model_config_to_path{ "path": "..." }导出模型配置到文件
list_model_config_backups{}列出模型配置备份
restore_model_config_backup{ "backup_name": "..." }恢复备份

技能与资源

命令载荷说明
list_skills{}列出 Pi 技能
list_prompts{}列出 Pi 提示词
list_themes{}列出 Pi 主题

Pi 实时会话

命令载荷说明
get_pi_live_sessions{}列出活跃的 Pi CLI 会话
get_pi_agent_entries{ "session_id": "..." }获取实时会话的缓存历史
send_pi_agent_rpc{ "session_id": "...", "prompt": "..." }向 Pi CLI 发送提示

终端

命令载荷说明
create_terminal{ "cwd": "..." }创建新 PTY 会话
terminal_write{ "id": "...", "data": "..." }写入 PTY
terminal_resize{ "id": "...", "cols": N, "rows": N }调整终端大小
terminal_close{ "id": "..." }关闭 PTY 会话

健康检查

命令载荷说明
ping{}健康检查(返回 { "pong": true }

示例

扫描所有会话

curl -s -X POST http://127.0.0.1:52131/api \
  -H "Content-Type: application/json" \
  -d '{"command":"scan_sessions","payload":{}}' | jq '.data | length'

搜索关键词

curl -s -X POST http://127.0.0.1:52131/api \
  -H "Content-Type: application/json" \
  -d '{"command":"search","payload":{"query":"authentication bug","role":"all"}}' | jq

使用 wscat 连接 WebSocket

wscat -c ws://127.0.0.1:52131/ws
> {"command":"scan_sessions","payload":{}}
< {"success":true,"data":[...]}

HTTP 端点还支持 GET /health,返回 200 OK——适用于负载均衡器的健康检查和监控。

目录