Repository navigation
fix(chat): restore manager progress in the original private reply - #7927
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · GPT-6 · OpenAI · self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
用户在原飞书私聊交办后,需要知道管家实际在做什么。 原来即使宿主正在读取文件、执行命令或已发出公开思考摘要,私聊仍只显示等待或生成回答;现在原消息能先显示最近步骤,再显示合格公开摘要与答案片段。 等待中缺少实际活动会诱发重复交办,也使“确实在执行”和“已经卡住”难以区分。同一原生请求只执行一次,过程中更新原消息,结束后同一消息替换为完整答复。 此改动不新增消息消费者,不重放业务,不改变工具权限或把步骤完成改称业务完成。 真实飞书客户端的皮肤、安装后新请求的持续回传和历史积压的业务完成仍需分别核验。
改动思路 / Approach
最小路径继续使用原生执行器、Core 事件与原消息的发送 owner。供应商步骤翻译属于现有 native-chat 边界,脱敏与活动词汇复用共享 owner,私聊披露只由已核验的原始来源派生。 只补粗标签无法给出文件、工具与公开摘要;直接转发原始 thinking 又越过已有公开摘要边界。因此本次没有搬入大型宿主接入或重试实现,也没有为展示建立另一个消费者。本 PR 交付原请求中的过程可见性,保留原有准入、执行、恢复和最终回传 owner。 私聊需要零额外设置、确认或重输,群聊保持既有披露层级。
原生步骤先经过共享脱敏与生命周期投影,之后由已核验的人类 p2p 来源决定是否显示公开摘要和最近四条标题。原消息的发送、失联读回、重试与终态替换继续走已有 owner。最近步骤放在长摘要之前;这来自长重复内容的实际 QA,避免修复后的过程再次埋到屏幕下方。保留 coarse labels 是为了已持久化事件及既有消费者,不是增加第二套执行规则。
具体改动 / Changes
已读变更前的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.zh-CN.md,规范版本固定为 58a85d0aae8d35fdcbb75f5c93a25d38d5f5a8e9。按原文未编号条目 只显示上游报告的信息、不模拟阶段或暴露隐藏推理、在原处读到答案 判断,分别由原生观察、公开摘要边界与原消息终态回归验证,不用本次新增文字反证实现。此次私聊摘要披露的有意变化同步了双语 RFC。整个 PR 为九个文件,新增 287 行、删除 35 行;生产增量限于 provider 翻译与既有投影,测试和文档承担其余部分。结构化活动是输入事实,展示缓存不是另一份工作队列或准入 authority。
关键代码讲解
AntigravityActivity.observe 从当前 Turn 已过滤的原生步骤读取类型与状态,复用 CodexActivitySteps 的 token、路径脱敏和 step vocabulary。真实轨迹中的文件读取使用 VIEW_FILE 与文件 URI,命令使用 RUN_COMMAND;读取内容与 stdout 不写入活动事件。raw thinking 只产生观察到的思考区段,不伪装为公开摘要。planner 结束只说明发出了工具请求,不能据此把工具标为完成。相同步骤再次被轮询时只复用既有 ID,避免重复生命周期。
project_progress 折叠持久化 Core 事件。只有明确标为 public summary 的事件进入摘要,原始 reasoning delta 始终跳过;只保留 1,200 字符摘要和四条最近标题,答案仍使用原有 6,000 字符窗口。已完成、失败及进行中步骤分别保留,最终答案仍由原终态路径替换草稿。_progress 从原记录的人类 p2p 来源派生披露选择;这个布尔投影不是发送或执行许可,真正的 provider 来源与 grant 检查没有改变。
对主干的风险 / Risks
最强反例是私聊细节进入群聊、原始推理被误当摘要,或者 serializer 测试通过但原消息根本没有更新。实际准入的 private/group 反例使用同样原生协议输入,只有私聊展示摘要与文件标题;原始推理均未出现。真实协议进程、Core store 和生产 sender/provider 边界验证生成前可见、重复 reconcile 不追加消息、最终答复更新原 post;外部模型与 Lark endpoint 是合成边界,不能据此宣称真实业务已经执行。原生 HTTP 用例也验证只有一次原始提交,并检查隐藏推理、参数、文件内容与输出都未进入事件。
83 项活动/适配器/投影测试通过;最终展示顺序另有 32 项测试与真实准入的私聊/群聊两项反例通过;相邻 423 项回归通过。 83 项结果来自 50d8bee,最终 native、provider、transport blobs 没变;随后只有展示顺序变化,最终全部 32 项 Lark 测试、两项原来源反例和视觉复核覆盖该变化。最终 premerge 的六个 direct checks 与十一项 selected checks、Ruff、双语 RFC 均通过。原历史 81/82 用例中的旧 coarse-title 预期已随明确的新披露契约调整,输出不可见的断言保留;新增文件读取测试的编辑错误也保留在历史日志,之后最终 owner 全套与路径用例通过。严格 mypy 对既有 projector 的三处诊断在不可变基线和最终源中身份与内容相同,属未改表达式的既有诊断;新 activity owner 的类型检查通过。按 wait_for_ci=false 未查询、轮询或等待 CI。
语义与 CI 对齐
新的 step、summary 和 private cache 都是观察投影,不改变实际 Actor 生命周期、工作承诺、调度、额度或业务完成条件。缺少公开摘要时只显示实际思考状态,不编造内容;缺少新事件时也不合成进度。源码中的精确 native discriminant 和共享状态负责分类。回滚只需撤销该 PR,原 Turn、失败与投递回执均保留。当前没有必须拆分或简化的机制,也不要求本展示修复完成整个宿主重构和历史积压。
我的整体评价 / Verdict
这是 justified_increment,long_horizon 和 user_experience 均有明确的可观察改善:原请求不需要用户重复输入就能看到实际执行过程,且后续仍由原 owner 完整回传。供应商步骤翻译属于现有 native-chat 边界,脱敏与活动词汇复用共享 owner,私聊披露只由已核验的原始来源派生。 本 PR 交付原请求中的过程可见性,保留原有准入、执行、恢复和最终回传 owner。 新的派生缓存、有界标题与现有事件相称,生产边界与测试保持一致,没有把未知副作用包装为自动成功。
已在未改动的生产 Chat 完整答复读取器中检查由最终 projector 生成的合成长消息,覆盖长重复摘要、四条步骤、失败状态、答案片段与页面下部;1200px 和 430px 的最终截图中步骤位于摘要之前。外部模型、消息来源是合成边界,不能据此宣称真实 Bot 已完成业务。 外部飞书客户端自身皮肤未做像素验收;真实原消息的安装后独立读回仍保留。 视觉检查覆盖来源派生的长消息预览,不把合成已保存消息的“完整答复”页面标题当成运行中 Core 状态的证据;运行中与终态分别由真实协议/原消息回归验证。先前长摘要挤走近期步骤的问题已经在最终 head 修正,桌面和窄屏都能先读到步骤与失败标记,详细摘要和正文仍在后方可达。这个安装前的质量结论不代替真实原会话的采用与最终回传验收。
English verdict: APPROVE — restore observed private-owner progress through the existing source-bound reply, without granting execution or replay authority.
管家的原生执行已经有活动,飞书私聊却只显示生成回答或空等:Antigravity 仅发送粗粒度标签,Lark 投影还主动丢弃公开 reasoning summary。
本次沿现有活动契约修复两段路径。Antigravity 的实际思考区段、工具调用及命令状态进入结构化活动;原私聊受众看到公开摘要和最近四个脱敏步骤,最终答案继续更新同一原消息。群聊仍保持原有粗粒度展示。原始 hidden reasoning、工具参数和输出均不转发,planner 完成不会被冒充为工具完成。
生产协议、Core store、原消息投递与读回回归覆盖了回答前可见、重复观察去重、群聊边界及终态替换。同一个公开摘要 fixture 在未修改的主干失败;本分支 83 项活动与投影测试通过;最终展示顺序另有 32 项测试、两项真实准入的私聊/群聊反例通过,六项 direct checks 与十一项 selected premerge checks 通过。长摘要与最近步骤的桌面/窄屏预览已检查;外部飞书皮肤与真实安装后回传单独保留验收。双语 RFC 同步更新。本次不启动第二个真实消息消费者,不重放原业务。