-
Notifications
You must be signed in to change notification settings - Fork 3
Session Management.zh CN
🌐 Language: English | 中文
高级会话操作:分支、导出/导入(交接)、跨会话引用和任务图。
在对话中右键任意 turn → 从此分支。这会深拷贝到该点为止的所有 turns 和 steps,生成新会话,创建一个分叉。
- 新会话继承相同的引擎、模型、cwd 和
directHistory。 - 原会话不受影响。
- 适合探索不同方案而不丢失原始线索。
// TaskManager
branchFrom(convId: string, turnId: string): string // 返回新 convId序列化完整会话状态,用于跨机交接(通过 MCP-Server 或手动 JSON)。
导出生成:
{
"version": 1,
"conv": {
"engine": "direct",
"model": "glm-4.6",
"cwd": "/home/user/project",
"turns": [...],
"directHistory": [...],
"engineSessionId": "...",
"cost": 0.03,
"tokens": 15000
},
"exportedAt": 1234567890
}安全:directHistory 中的 API key、密码和 token 在序列化前自动脱敏为 [REDACTED](正则匹配:sk-...、api_key=... 等)。
导入验证:
- 消息 role 必须在白名单内:
system、user、assistant、tool。 - content 类型检查(string 或 ContentPart[])。
- 长度限制:最多 500 条消息,每条最多 50K 字符。
-
engine、model、cwd验证为非空字符串。
会话之间可以建立关联,展示依赖关系(如「会话 B 从会话 A 分支」)。任务图以 DAG(有向无环图)渲染:
- 节点:会话(以标题或首条 prompt 标注)。
- 边:分支关系、pipeline stage 链接。
- 可交互:点节点打开对应会话。
以 DAG 可视化所有会话及其关系:
| 边类型 | 含义 |
|---|---|
| Branch | 会话从另一个会话分支 |
| Pipeline | 会话是 pipeline 的一个 stage |
| Reference | 手动跨会话关联 |
通过 TaskManager.taskGraph() 编程式访问 → 返回 { nodes: TaskGraphNode[], edges: TaskGraphEdge[] }。
每个会话都有 updatedAt 时间戳,在以下时机自动更新:
- 用户发消息 时
- 引擎事件 流入时(token / tool / done / error)
- /goal 命令 执行时
侧栏默认按 updatedAt 倒序排列(最近活跃在最上面),无需手动操作。底部 🕐 按钮可切换回创建顺序。
每条频道右侧显示相对时间:
| 时间跨度 | 显示 |
|---|---|
| < 1 分钟 | 刚刚 |
| < 1 小时 | N分钟前 |
| < 1 天 | N小时前 |
| 1–2 天 | 昨天 |
| 2–7 天 | N天前 |
| 7 天–1 年 | MM-DD |
| > 1 年 | YYYY-MM-DD |
hover 显示完整日期时间。
旧会话无 updatedAt 时 fallback 到 createdAt。
来源是飞书或企微的会话带有 feishuKey / wecomKey 字段,将 IM 用户映射到会话。完整功能概览见 Messaging-Bots。
| 来源 | 单聊 | 群聊 |
|---|---|---|
| 飞书 | feishu:${open_id} |
feishu:group:${chat_id} |
| 企微 | wecom:${userid} |
wecom:group:${chatid} |
应用启动时,Bridge 扫描 SQLite 中所有带 feishuKey / wecomKey 的会话,重建内存 Map<key, convId>。Map 查找未命中时 fallback 到 SQLite 扫描 —— 确保会话跨重启不断裂。
| 指令 | 动作 |
|---|---|
/new |
开启新对话 |
/reset |
清空当前会话历史 |
/list |
显示历史会话 |
/switch N |
切换到第 N 个会话 |
/context |
显示会话信息 |
每用户(或每群)上限 5 个会话。超出时自动删除最旧的。
同一用户消息通过 per-user promise chain 串行处理。不同用户并行。
-
src/main/TaskManager.ts——branchFrom、exportSession、importSession、taskGraph -
src/main/mcp-server.ts—— 远程export_session/import_session工具 -
src/shared/types.ts——TaskGraphNode、TaskGraphEdge -
src/main/store.ts——conversations表的branch_info、pipeline_id、updated_at列