Skip to content

会话与群聊的生命周期 ​

实现保留现有 IM 模块,内部区分共享群聊与个人会话入口;不拆成独立服务。消息存储仍属于 IM,Agent 执行、等待、暂停与取消由 runtime scheduler 管理。

操作个人入口群成员关系历史消息Agent 工作
移除入口隐藏,可恢复保留保留继续
退出群聊保留,可隐藏退出仅保留有权查看的区间其他成员继续
解散群聊保留,可隐藏群聊终止只读保留停止后续工作
停止 Agent不变不变不变结束相关讨论

活跃成员收到真实新消息时,隐藏入口重新出现;幂等重试不触发恢复。首次加入延续已有“可读旧历史”的规则。退出封闭可见区间,重新加入开启新段,离群间隙不可见。过滤在消息和事件分页之前完成,也用于消息状态与回复目标校验。IM schema v3 用成员事件重建旧库的可见区间;无法重建时保守处理。

工作空间负责人是持久的人类身份。Agent 建群自动加入负责人为群主,创建者为管理员。负责人不可被移除,群主可以解散。首次配置也接管旧 Agent 群,包括旧版可恢复的软删除群。解散是终态,不能通过旧恢复接口复活。

Web“会话空间”固定为负责人身份,“Agent 会话”先选择 Agent 再只读查看。这是可信本机管理台的观察能力,不是多租户身份认证或权限隔离。群信息抽屉区分移除、退出和解散;主会话标题固定显示停止按钮。

CLI、MCP 和内置工具共用 IM/ToolService 规则。个人入口工具为 conversation_hide、conversation_show,群终止工具为 group_dissolve。CLI 对应 agt im conversation hide|unhide、agt im group dissolve;Web 用 agt schedule dissolve 同时结束来源讨论。调度器也检查任务目标群的活动状态。停止本群会结束来源于本群或拥有本群任务的讨论,因此同一讨论在其他群的工作也会停止。已发往模型服务的请求是否继续计费取决于上游,取消不能撤销已完成的外部操作。

Web 历史入口窗口 ​

“最近会话”最多展示 20 个已解散群聊入口,按该身份最后主动查看时间选择;无查看记录时使用会话更新时间作为初始顺序,相同时按 ID 稳定排序。活跃群聊、私聊和仅退出但未解散的群聊不占这个额度。超出的入口仍在“全部历史”中,消息和成员可见区间不变;主动打开旧群后它重新进入最近窗口。这是展示筛选,不写 hidden,不清理磁盘数据,CLI/MCP 列表仍完整返回。

IM schema v4 新增个人成员行的 last_viewed_at,v2/v3 自动升级。Web 成功打开已解散历史后,调用 agt im conversation visit <id> --actor <principal> 记录本机持久的查看时间;普通消息读取和后台轮询不更新它。只读观察其他 Agent 不修改对方最近查看顺序。

Agent 资源删除与身份历史 ​

解除运行配置只删除 binding,不删除身份。绑定模块保存最后绑定来源,改绑时更新来源,解绑后仍保留。删除 Agent 资源(含级联删除)会软删除该来源的 Agent 身份;现有 runtime 身份的 agent_ref metadata 也参与匹配。已删除身份保留名称、成员关系和消息,不能重新绑定、新建私聊、入群或发送新消息;旧投递终止为 skipped,后续群消息不再向它投递。身份 ID 不复用。

principal_list 默认只返回活动身份;include_deleted=true 返回历史名称及 deleted 标志。Web 历史消息和成员显示“(已删除)”,联系人搜索、新建对话和 @ 候选排除已删除身份。Web 新建对话仅展示仍绑定有效资源的 Agent,停用不等于删除,仍可选择。升级前已经解绑且无来源记录的旧身份无法可靠判断为删除,标为“未绑定”并排除新建对话候选;其历史仍可从 Agent 会话入口查看,不按名称猜测资源关系。

基于 MIT 许可发布