Repository navigation
feat(report): schedule full-body reports in original Agent sessions - #7267
Conversation
… sessions Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…dback 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)
详细中文评审
动机
需要让现有 Agent 按日历汇报,并在原会话直接阅读完整结果的用户。 过去普通受管会话只有状态观察,配置日历后仍没有报告回传;现在选择原会话并保存计划,到期由原 worker 生成一次,正文读回后即可打开全文。 已在真实打包页面、Core 与 SQLite 验证一次模型调用、一个原消息全文、独立送达游标和暂停;丢失记账回复的 File/SQLite 恢复不重复模型或正文。 本 PR 不完成自然语言配置、任意周期任务或完整 Agent 工作台,也不代办生产积压或证明真实模型报告质量。 完整 managed/attached Agent 入口、自然语言周期配置、任意 profile、无效作者窗口取消和生产自然截止时间仍由既有工作继续。 因此本次是有用的完整报告切口,并不以配置存在、Task 完成或截图替代生产消息最终闭环。
改动思路
日历和结算继续由现有原生 owner 决定,新增的只是原 Goal 来源与原 Core 消息读写适配;共享 frontier 和类型层恢复判定收敛原私聊及本地会话的重复控制流。 本次边界是已有原 Agent 会话的显式日/周报告:配置、到期生成、完整正文读取、暂停及可证明的剩余效果恢复。 不改变当前原生权限、日历或结算 owner;不增加 timer、任务库、模型 worker 或消息消费者。配置仅在已有 Goal 编辑器保存,实际报告由原 worker 执行,模型只交付内容,原生 Turn 负责有限生成任务的独立验证、写回和额度。
| 触发 | 原行为 | 本次结果 |
|---|---|---|
| 已绑定本地 Agent 会话的日历到期 | 无报告 producer/原会话回传 | 原 worker 一次生成,完整正文读回后推进游标 |
| 送达记账回复丢失或原生结算中断 | 不能据一次成功推断送达 | 读原生成/原消息,只续办可证明的剩余效果 |
| 未启用、忙/排队、错身份或读取失败 | 不能借配置转移授权 | 保留工作;页面显示暂停、失败或未知 |
具体改动
规范依据为 docs/product/periodic-reports.md,固定在 c1a589aac771b39df9137dc808280c2a33fb4cbd 的既有 Managed Agent execution boundary。registered Agent、original Session 和 existing owners 在本切口有实际类型准入、原 worker 与完整正文证据;managed and attached 继续由既有 Agent 工作台任务完成;natural-language configuration 按原规范保留为未完成边界。本 PR 对说明文档的更新不反过来作为独立验收规范。
关键代码讲解
loopx/control_plane/collaboration/steward_managed_mode.ts的admitManagedSessionTurn复用admitManagedSessionIdentity,校验原注册 Agent、Session/Goal lifetime、订阅 revision、原 window 和 Task;reportSettlementOnly统一私有及本地剩余效果恢复,拒绝模型重跑。空 Agent 的旧会话仍返回明确不可用,已修复最初回归的错误类型。loopx/capabilities/native_chat/steward_reports.py的_frontier由原 idle wake 调用,复用现有日历、有限 Task 与原 native Turn;本地来源、私有 portfolio 来源分开,避免借接收位置扩大读取范围。loopx/capabilities/periodic_report/private_generation.py的prepare_session_report冻结完整 native Task 与 completed history,并明确当前观察不是过去截止时刻的状态重建;26 条真实来源的反序读取和不可用来源均有真实 native 验证。loopx/capabilities/native_chat/steward_reports.py的publish读取原 native commit,在同一配置/Goal 栅栏下幂等追加原 Core 消息,再逐字读回正文与原 Turn,最后提交现有 publication cursor。cursor 单独存在不能让页面展示一个已不可读的正文链接。apps/presentation/dashboard/src/features/personal-workspace/periodic-report-session-field.tsx在既有配置页选择原会话,读取真实状态并打开现有完整答复页;没有新建报告 viewer、配置 authority 或动作执行入口。
对主干的风险
最重要的风险是结算成功但正文未到、暂停后晚到结果越界,或恢复时重复调用模型。File/SQLite 的丢失回复、原生验证/写回/额度、原事件丢失及重启用例覆盖这条因果链;旧失败/部分答复保留,不重放未知模型结果。忙与排队用户工作优先,错 Session、撤注册、停止和 profile 不匹配不选择替代执行者。
最终报告套件 75 passed;此前 176 项 native/monitor/host 和 106 项配置/日历/intent 回归、15 项类型层测试通过;类型检查、打包、ruff 通过。原 wake 同一 oracle 在 base 无生成、head 一次生成并回传,关闭前后均无调用;移除报告 handoff 的 mutation 会失败。另保留一次运行中编辑测试源导致晚期 inspect 截错合成模型源码的失败,已改为导入时固定 oracle,并以改变后续源码读取的反例和完整 75 项复验覆盖,没有放宽断言或限额。
standard premerge 的 6 项直接检查与 19 项选中检查无失败;自动结果仍为 manual_review_required,因为 8 个 PNG 超出文本扫描。此精确版本评审逐图检查了像素、PNG metadata 和合成来源:session-before-desktop.png、session-before-narrow.png、session-body-desktop.png、session-body-narrow.png、session-delivered-desktop.png、session-delivered-narrow.png、session-paused-desktop.png、session-unknown-narrow.png;metadata 仅标准 Display P3/Google 色彩 profile,未观察到私人消息、路径或账号。该人工结论满足相应视觉门,保留原自动收据,不把图片伪称为文本扫描通过。CI 按当前 Goal 策略未查询或等待。
语义与 CI 对齐
复用既有 native report、Task、window、Session 和 publication 词汇;新 route 是精确原会话接收引用,不能授予新 Agent、portfolio 或外发权限。共享 CLI reporter 对此明确原会话路径不抢占,普通 Goal Channel/私有管家保持原 owner。未开启时只有可发现的设置和只读状态,不创建 Task、调用模型、发送正文或增加额度。相关语义检查无新受支持词汇候选;这只是有边界的 advisory,不代替实际调用/恢复证据。
我的整体评价
没有当前阻塞发现。long_horizon 与 user_experience 均为 improved:配置到原 worker 的实际产出、后续正文读回和有限恢复已经连上。桌面将原始路由换成原 Agent 会话、真实送达状态和正文入口;窄屏信息可读,未知状态可重新读取,长篇正文复用现有完整答复页。 共享设置页在这些高度仍需纵向滚动到保存控件;未验物理手机、生产模型质量、生产积压完成或整套 Agent 工作台。 视觉验收包括桌面、390×844 窄屏及 27,750 字符、30 条长重复内容的完整答复页;手机证据仅视口模拟。日历和结算继续由现有原生 owner 决定,新增的只是原 Goal 来源与原 Core 消息读写适配;共享 frontier 和类型层恢复判定收敛原私聊及本地会话的重复控制流。 本次边界是已有原 Agent 会话的显式日/周报告:配置、到期生成、完整正文读取、暂停及可证明的剩余效果恢复。 比仅加表单/提示词有真实交付价值,也保留原生 owner 的边界,代码与风险相称;无效作者窗口取消和更广自然语言/Agent 工作台不是本次已完成结论。
English verdict: APPROVE — exact head 6189b3d3fa10d6e432d5565ddc0d403b37ee8916. The explicit original Agent Session calendar reaches the existing native worker, validated generation and one independently readable full-body Core return. File/SQLite recovery and disabled-path counterfactuals, packaged settings/viewer, typechecks/build and local risk checks support this bounded increment. Eight binary privacy holds were separately reviewed; CI was not consulted. General natural-language tasks, invalid-window cancellation and production natural-deadline quality remain unqualified.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
…-periodic-report-20261024 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> # Conflicts: # loopx/capabilities/native_chat/steward_turn.py
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)
详细中文评审
动机
需要让现有 Agent 按日历汇报,并在原会话直接阅读完整结果的用户。 过去普通受管会话只有状态观察,配置日历后仍没有报告回传;现在选择原会话并保存计划,到期由原 worker 生成一次,正文读回后即可打开全文。 已在真实打包页面、Core 与 SQLite 验证一次模型调用、一个原消息全文、独立送达游标和暂停;丢失记账回复的 File/SQLite 恢复不重复模型或正文。 本 PR 不完成自然语言配置、任意周期任务或完整 Agent 工作台,也不代办生产积压或证明真实模型报告质量。 完整 managed/attached Agent 入口、自然语言周期配置、任意 profile、无效作者窗口取消和生产自然截止时间仍由既有工作继续。 因此本次是有用的完整报告切口,并不以配置存在、Task 完成或截图替代生产消息最终闭环。
改动思路
日历和结算继续由现有原生 owner 决定,新增的只是原 Goal 来源与原 Core 消息读写适配;共享 frontier 和类型层恢复判定收敛原私聊及本地会话的重复控制流。 本次边界是已有原 Agent 会话的显式日/周报告:配置、到期生成、完整正文读取、暂停及可证明的剩余效果恢复。 不改变当前原生权限、日历或结算 owner;不增加 timer、任务库、模型 worker 或消息消费者。配置仅在已有 Goal 编辑器保存,实际报告由原 worker 执行,模型只交付内容,原生 Turn 负责有限生成任务的独立验证、写回和额度。
| 触发 | 原行为 | 本次结果 |
|---|---|---|
| 已绑定本地 Agent 会话的日历到期 | 无报告 producer/原会话回传 | 原 worker 一次生成,完整正文读回后推进游标 |
| 送达记账回复丢失或原生结算中断 | 不能据一次成功推断送达 | 读原生成/原消息,只续办可证明的剩余效果 |
| 未启用、忙/排队、错身份或读取失败 | 不能借配置转移授权 | 保留工作;页面显示暂停、失败或未知 |
具体改动
规范依据为 docs/product/periodic-reports.md,固定在 50c56079675b1eb3ea44ecef78ffba9e992de57d 的既有 Managed Agent execution boundary。registered Agent、original Session 和 existing owners 在本切口有实际类型准入、原 worker 与完整正文证据;managed and attached 继续由既有 Agent 工作台任务完成;natural-language configuration 按原规范保留为未完成边界。本 PR 对说明文档的更新不反过来作为独立验收规范。
关键代码讲解
loopx/control_plane/collaboration/steward_managed_mode.ts的admitManagedSessionTurn复用admitManagedSessionIdentity,校验原注册 Agent、Session/Goal lifetime、订阅 revision、原 window 和 Task;reportSettlementOnly统一私有及本地剩余效果恢复,拒绝模型重跑。空 Agent 的旧会话仍返回明确不可用,已修复最初回归的错误类型。loopx/capabilities/native_chat/steward_reports.py的_frontier由原 idle wake 调用,复用现有日历、有限 Task 与原 native Turn;本地来源、私有 portfolio 来源分开,避免借接收位置扩大读取范围。loopx/capabilities/periodic_report/private_generation.py的prepare_session_report冻结完整 native Task 与 completed history,并明确当前观察不是过去截止时刻的状态重建;26 条真实来源的反序读取和不可用来源均有真实 native 验证。loopx/capabilities/native_chat/steward_reports.py的publish读取原 native commit,在同一配置/Goal 栅栏下幂等追加原 Core 消息,再逐字读回正文与原 Turn,最后提交现有 publication cursor。cursor 单独存在不能让页面展示一个已不可读的正文链接。apps/presentation/dashboard/src/features/personal-workspace/periodic-report-session-field.tsx在既有配置页选择原会话,读取真实状态并打开现有完整答复页;没有新建报告 viewer、配置 authority 或动作执行入口。
对主干的风险
最重要的风险是结算成功但正文未到、暂停后晚到结果越界,或恢复时重复调用模型。File/SQLite 的丢失回复、原生验证/写回/额度、原事件丢失及重启用例覆盖这条因果链;旧失败/部分答复保留,不重放未知模型结果。忙与排队用户工作优先,错 Session、撤注册、停止和 profile 不匹配不选择替代执行者。
整合最新主干 UTF-8/LF 修复后,177 项 native/monitor/host/report/Windows 回归通过(包含 75 项报告);原会话端到端新增非 UTF-8 默认 codec 反例。此前 106 项配置/日历/intent 回归及当前 15 项类型层测试通过;类型检查、打包、ruff 通过。原 wake 同一 oracle 在 base 无生成、head 一次生成并回传,关闭前后均无调用;移除报告 handoff 的 mutation 会失败。另保留一次运行中编辑测试源导致晚期 inspect 截错合成模型源码的失败,已改为导入时固定 oracle,并以改变后续源码读取的反例和完整 75 项复验覆盖,没有放宽断言或限额。
standard premerge 的 6 项直接检查与 19 项选中检查无失败;自动结果仍为 manual_review_required,因为 8 个 PNG 超出文本扫描。此精确版本评审逐图检查了像素、PNG metadata 和合成来源:session-before-desktop.png、session-before-narrow.png、session-body-desktop.png、session-body-narrow.png、session-delivered-desktop.png、session-delivered-narrow.png、session-paused-desktop.png、session-unknown-narrow.png;metadata 仅标准 Display P3/Google 色彩 profile,未观察到私人消息、路径或账号。该人工结论满足相应视觉门,保留原自动收据,不把图片伪称为文本扫描通过。CI 按当前 Goal 策略未查询或等待。
语义与 CI 对齐
复用既有 native report、Task、window、Session 和 publication 词汇;新 route 是精确原会话接收引用,不能授予新 Agent、portfolio 或外发权限。共享 CLI reporter 对此明确原会话路径不抢占,普通 Goal Channel/私有管家保持原 owner。未开启时只有可发现的设置和只读状态,不创建 Task、调用模型、发送正文或增加额度。相关语义检查无新受支持词汇候选;这只是有边界的 advisory,不代替实际调用/恢复证据。
我的整体评价
没有当前阻塞发现。原精确 head 的已发表评审保留为历史;本次从新的完整 diff 重新审查,合并主干报告字节/codec 修复,并将本地 JSON 读取也显式固定为 UTF-8。long_horizon 与 user_experience 均为 improved:配置到原 worker 的实际产出、后续正文读回和有限恢复已经连上。桌面将原始路由换成原 Agent 会话、真实送达状态和正文入口;窄屏信息可读,未知状态可重新读取,长篇正文复用现有完整答复页。 共享设置页在这些高度仍需纵向滚动到保存控件;未验物理手机、生产模型质量、生产积压完成或整套 Agent 工作台。 视觉验收包括桌面、390×844 窄屏及 27,750 字符、30 条长重复内容的完整答复页;手机证据仅视口模拟。日历和结算继续由现有原生 owner 决定,新增的只是原 Goal 来源与原 Core 消息读写适配;共享 frontier 和类型层恢复判定收敛原私聊及本地会话的重复控制流。 本次边界是已有原 Agent 会话的显式日/周报告:配置、到期生成、完整正文读取、暂停及可证明的剩余效果恢复。 比仅加表单/提示词有真实交付价值,也保留原生 owner 的边界,代码与风险相称;无效作者窗口取消和更广自然语言/Agent 工作台不是本次已完成结论。
English verdict: APPROVE — exact head 095328ebfd011c7bfd143ef9689189fa42c21847. The explicit original Agent Session calendar reaches the existing native worker, validated generation and one independently readable full-body Core return. File/SQLite recovery and disabled-path counterfactuals, packaged settings/viewer, typechecks/build and local risk checks support this bounded increment. Eight binary privacy holds were separately reviewed; CI was not consulted. General natural-language tasks, invalid-window cancellation and production natural-deadline quality remain unqualified.
普通已绑定 Agent 会话以前能观察原生任务,却没有按日历生成报告并回到原会话的完整链路。现在在现有 Goal 周期报告设置里选择原 Agent 会话、预览并保存计划,原 worker 到期生成报告;独立读回完整正文后才推进送达游标,页面可直接打开原消息全文。
weekly-progress+ 已绑定 managed Session 生效;忙/排队用户工作优先,暂停、错身份、撤注册与停止拒绝执行。私有管家及既有 Goal Channel 路径保留原有 owner。本次交付已有会话的日/周报告闭环。自然语言配置、任意周期任务/profile、完整 managed/attached Agent 工作台及无效作者窗口的取消仍未完成,保留在已有后续工作中;未启用的会话不创建任务、调用模型或外发。生产积压完成和自然生产截止时间仍需原服务独立验收。
验证:整合后 177 项原生 host/monitor/report/Windows 回归(包含 75 项报告 File/SQLite 用例)、106 项配置/日历/intent 回归、15 项类型层测试;控制面/前端类型检查、打包及 standard premerge 的 6 项直接检查和 19 项选中检查通过;工具为 8 张图片保留人工视觉门,逐图像素、PNG 元数据与合成来源另行评审,未把文本扫描当作图片隐私验收。独立原 wake 对照中 base 0 次、head 1 次生成/正文送达,关闭前后均 0 次;移除报告 handoff 的 mutation 被同一结果断言拒绝。26 条真实 native 来源覆盖超过展示上限,源不可用不调用模型。合成模型 fixture 已固定导入时源码,避免回归运行时编辑造成源码截取错位;原失败记录保留。
视觉验收:以下为真实打包页面、HTTP/Core/SQLite 的隔离合成数据;模型/Provider 为合成运输。基线
c1a589aac771b39df9137dc808280c2a33fb4cbd,实现与界面1fe1582cf8ad136b0df0f0c76d1e86cfc3232849,当前 head095328ebfd011c7bfd143ef9689189fa42c21847合入主干 UTF-8/LF 报告修复,并验证新会话报告在非 UTF-8 默认编码下正常回传;界面及八张截图内容未变。此前精确 head 的评审保留为历史,新 head 已重新完整审查。桌面 1200×888,窄屏为 390×844 视口模拟。完整报告 27,750 字符、5 节均可读;状态只读请求失败后显示未知,恢复读取及暂停不新增模型调用。共享设置页保存控件仍需纵向滚动,未将其泛化为整套 Agent 工作台验收。无生产消息、账号或私有路径。复现入口及边界见 packaged journey 与 周期报告使用说明。启用、预览、正文查看、暂停和不重放失败的恢复边界均沿用原配置和执行 owner。