全部文档

统一对话与联络

- 一套对话体验:与同事单聊、与智能体单聊、工作区群聊,共用会话列表、气泡时间线、附件与未读。

来源 docs/core-mechanisms/统一对话与联络.md

状态:产品决策已确认(2026-05-23),待实现。

真值:用户可见能力以 docs/产品规格.md §4.6 为准;本文供设计与实现对照。

表述:界面与帮助文案用用户表达;表名、路径等仅在本文给出。


1. 目标

  • 一套对话体验:与同事单聊、与智能体单聊、工作区群聊,共用会话列表、气泡时间线、附件与未读。
  • 智能体即一种「对话成员」:可单聊、可入群;拥有者可把智能体上架 公开市场 供他人 租用
  • 真人规则分场景:同工作区同事信任畅聊;非同事陌生人「一条 → 回复后短期 → 长期需好友」。

与现有 /api/v1/chat + chat_sessions(用户 ↔ LLM、帮助智能体)的关系:中期 收敛到统一对话模型;智能体回复仍经 Cadau Runtime,但会话成员、群、租用鉴权走新域(下文 im_* 示意名)。

人工客服docs/core-mechanisms/人工客服.md):用户转人工后,客服接单创建的 用户↔客服 单聊走 im_* 联络;与智能体 LLM 对话、服务通知分轨。


2. 已确认产品决策(摘要)

#主题结论
1架构统一对话;智能体与真人并列;租用智能体可进群
1a展示以智能体身份为主;出租方与租用方均可 备注名
1b授权首期 公开市场(浏览、申请/付费租用)
1c配额租用合同/套餐 约定计费主体
1d进群租用方可在有权限的群里加入已租用智能体
2同事单聊同工作区成员 信任,直接畅聊
3非同事单聊未回复前 1 条 → 回复后 短期(天数/条数实现定)→ 长期须好友
4工作区群默认全员群 + 自建子群;成员与工作区同步(全员群)

3. 会话与成员(实现模型)

3.1 会话类型 conversation.type

类型说明
direct两人(或「人 ↔ 智能体」)单聊
workspace_group工作区群;subtype: all_member \custom

3.2 成员 conversation_member.member_kind

kind标识说明
useruser_id真人
agentuser_agent_id用户智能体;关联 owner_user_id

群消息来自智能体时:sender_kind=agent,并记录 operated_by_user_id(触发租用的真人,若有)。

3.3 与「运行时 Workspace」区分

  • 产品 工作区 workspace_id:协作边界、全员群归属。
  • 运行时 WorkspaceSOUL.md 等):仍属 单个 user_agent_id 实例;租用对话时 Runtime 上下文须绑定 租用者 + 工作区(若群在工作区内)+ 租用合同策略

4. 智能体租用(公开市场)

4.1 实体(示意)

  • agent_listings:上架信息(描述、技能标签、价格/套餐引用、可见性)。
  • agent_leases:租用订单;状态 pending | active | expired | revoked;含 计费条款(消耗算出租方 / 租用方 / 工作区)。
  • agent_display_aliases(viewer_user_id, user_agent_id) -> display_name;出租方、租用方各可设备注名(展示优先备注,可查看原名)。

4.2 鉴权

  • 发消息给租用智能体:校验 agent_leases.activelessee_user_id = 当前用户(或合同允许的操作者)。
  • 拉智能体入群:校验 群资格 + 租用权(决策 A)。

4.3 计费

  • lease.billing_policy(合同)在对话扣费时选择扣减 出租方配额 / 租用方配额 / 工作区配额
  • 管理端可审计:会话 id、消息 id、token 用量、lease id。

5. 真人消息规则

账号级能力:加好友、真人单聊 不要求 已加入工作区;仅工作区群、同事信任规则依赖 workspace_members

关系规则
互为好友畅聊
同工作区成员(至少一个共同工作区)畅聊(信任
非同事、非好友首条仅 1 条 → 对方回复后进入 短期窗口 → 过期后须 好友 才能继续
拉黑单向拒绝收发

实现字段(单聊 directstranger_phase: none | locked | short_term | friendshort_term_expires_at;由服务端在 POST message 前强制校验。

智能体对话:不适用陌生人条数限制;仅校验 所有权或租用权


6. 工作区群

  • 全员群:创建工作区时自动创建;成员 加入/退出工作区 时同步入群/退群。
  • 子群:成员或管理员创建;成员邀请策略可分阶段(首期:群管理员拉人)。
  • 群内可有 真人 + 已授权/租用的智能体;@ 智能体或触发策略后由 Runtime 生成回复(异步任务,写入 im_messages)。

7. API 草案(前缀 /api/v1/im/

方法路径说明
GET/im/conversations当前用户会话列表(含未读)
POST/im/conversations/direct发起单聊 { peer_user_id }{ user_agent_id }
GET/im/conversations/{id}/messages历史分页
POST/im/conversations/{id}/messages发消息(幂等 client_message_id
POST/im/conversations/{id}/read已读水位
GET/POST/im/friend-requests好友申请
GET/im/friends好友列表
POST/im/blocks拉黑
GET/im/agent-listings公开市场列表
POST/im/agent-leases租用/申请
PATCH/im/agent-aliases备注名
GET/workspaces/{id}/conversations工作区相关群(含默认全员群 id)
POST/workspaces/{id}/groups创建子群

错误码示例:stranger_quota_exceededlease_requirednot_group_memberpeer_blocked

实时:首期 轮询 GET /im/sync?since=;二期 WebSocket。


8. 客户端

  • 现有顶栏 「消息」 演进为 统一对话入口(会话列表含人、智能体、群);与智能体对话不再使用独立 IA 仅 chat_sessions 列表 的交互范式(迁移期可双轨)。
  • B 区(若保留):展示 当前会话成员(含租用智能体备注名),而非仅「智能体市场」列表。
  • 工作区协作 成员行:「发消息」「租用 Ta 的智能体」跳转统一对话或市场。

9. 分阶段实施建议

阶段内容
P0表结构 + 单聊(人↔人规则 + 人↔己有智能体)+ 好友
P1默认全员群 + 子群 + 群内消息
P2市场上架 + 租用 + 双端备注 + 计费条款
P3租用智能体进群 + 群内 Runtime 回复
P4迁移旧 chat 会话、WS 推送、移动端

10. 相关文档

  • docs/产品规格.md §4.6
  • docs/界面与布局.md(统一对话后需修订「消息」区描述)
  • docs/产品规格.md §3.6 / §7.4(智能体市场与训练)