Repository navigation
fix(analysis): respect the desktop Chat account selection - #6966
Conversation
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.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
桌面 App 的使用者在原实验 Goal 中显式启动深度分析。
App 已选择 Chat 账户目录,但启动环境还保留另一个终端账户目录时,原分析子进程会继承后者,可能因没有认证信息而失败;本版让子进程遵循 App 已声明的账户选择。
实际子进程的账户目录与 App 的明确选择一致;未声明或为空时,普通 CLI 行为保持一致,父进程环境不变。
不创建或复制凭据,不切换既有会话身份,不变更模型输入、来源权限、求解实验、预算或沙箱。
本 PR 的工程修复已验证;正式 App 中的真实模型重试将在正常合并安装后核验,旧失败记录仍须保留。
改动思路
账户选择已经由桌面服务和原生 Chat 管理,缺口在分析子进程的 IO 环境传递;七行修复直接消费既有选择,无需新的设置、存储或认证 owner。
只调整原 observer 子进程的环境副本,并补实际子进程回归与既有合同说明;来源路由、分析版本、模型提示和执行控制保持原 owner。
既有桌面启动器明确提供 Chat 的账户目录,ChatRuntimeController 已优先使用它;observer 却让 Popen 全量继承另一份终端目录。这是实际 effect 边界遗漏,重新登录、修改全局环境或新建账户配置都会掩盖问题并影响无关调用。修复只复制当前环境,再把已有非空 Chat 选择传给该子进程;没有声明和空字符串均保留原行为。该选择是已知 Host 意图,不从目录内容、最近线程或其他账户推断。
具体改动
按修改前的 docs/reference/trajectory-assessment.md、固定版本 f08ca9dcba2190814ab31407d4cb97d0ef54af99 评审:Producer and consumer boundary 已实现,认证与刷新仍属 Codex,输入/工具/规则不从账户配置扩展;Explicit execution and readback 已实现,read-only sandbox、禁用工具、显式执行/取消/重试及保留失败历史继续通过真实进程和 HTTP 验证。新增说明不能充当修改前的独立验收依据。
关键代码讲解
execute在原有 transport 构造后建立环境副本,只有已有LOOPX_CHAT_CODEX_HOME非空才覆盖子进程CODEX_HOME。同一 Popen 使用该副本,父环境、analysis key、输入和旧作业不变。异常仍由原 process owner 保存,必须显式重试,不增加登录或认证 fallback。- 未改动的
ChatRuntimeController.__init__是本次比较的重要调用上下文:服务此前已明确选择 host home,不能让 observer 从另一个启动上下文重新猜账户。测试从实际子进程读环境,而非仅检查参数列表,所以能捕获原代码的错误继承。
本版3路径38增3删,其中生产修改7行,其余是既有夹具中的三种账户选择和合同说明。没有引入新状态、协议版本、账户设置、凭据复制或第二个身份 owner;继续使用原 shared transport 与进程恢复路径,代码量相称。
对主干的风险
最需防止的是修复时偷偷改变普通 CLI 账户或父进程环境。不可变基线与精确 head 运行同一个真实临时子进程夹具,并断言实际导入源码:显式账户冲突时基线断言失败、本版成功;缺省与空覆盖在两版一致通过,父环境和模型配置均未改写。此前一次 pytest 基线采集意外导入当前 checkout,已排除为基线证据,使用明确源码路径的独立 probe 替代,没有把假阳性当通过。
37项 provider/store/生产 HTTP 测试通过,保留原来源权限、语言缓存、旧结果、并发、取消、失败与重试。Ruff 与仓库配置 mypy 的17个源文件通过,6项直接和15项选中 premerge 检查通过。额外单模块 mypy 会遍历未纳入配置的导入图:基线与本版同为5051条已有诊断,完整路径、位置、消息逐项多重集合相同,仅输出顺序不同;此失败保留,不以总数相同代替归因,也不称它通过。benchmark-sensitive 人工 hold 由本次实际边界评审覆盖,新鲜 readiness 仍须独立就绪。CI 按 wait_for_ci=false 没有查询。
语义与 CI 对齐
本次复用现有 host 账户选择词汇,无新增 enum、主体范围 gate 或通用义务。源权限、read-only sandbox 和显式操作语义不变;reference note 是说明,不能授权另一个账户或放宽工具权限。环境适配属于现有 Python provider IO,无须新增 TypeScript 决策或迁移持久化状态。
我的整体评价
APPROVE,精确 head cbba37a1f59bccc557fbe79ef00cf7fd815607ad。long_horizon 与 user_experience 的工程路径改善:原服务已有的账户选择进入实际子进程,避免反复在错误账户目录尝试,不向用户索要已经知道的信息或新增配置步骤。兼容性由真实缺省/空值对照证明;现有产物和会话身份保留,不需新 decoder 或账户迁移。
这是 justified_increment。正确目录不等于凭据始终有效,也不证明模型判断或科学收益;真实模型原作业的安装后重试仍需核验,并保留本次401失败。未发现代码阻断;已核对远端正文和空评论列表,CQR cqr_8411d2512aacc928ab3c 有效。此批准只适用于该精确 head,不能替代当前独立的合并授权/readiness,也不关闭原研究工作区任务。
English verdict: APPROVE — cbba37a1f59bccc557fbe79ef00cf7fd815607ad. The existing observer now forwards the desktop host's explicit account selection only to its child. Source-asserted baseline/head process evidence catches the original mismatch; omitted/empty parity,37 provider/store/HTTP tests and required local checks pass. Native credentials, fixed inputs, sandbox and explicit retry remain unchanged. Real installed retry and model validity remain separate qualifications.
|
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max Post-merge audit — new P2 finding at 动机在桌面 Chat 已选择账户后,显式启动研究分析的使用者。 终端账户与 Chat 账户冲突时,旧分析使用终端目录;本版把 Chat 选择传给分析。绝对路径已生效,但同一选择为相对路径时,Chat 正常、分析仍会查错目录。 实际子进程的绝对账户选择、缺省和空覆盖已验证;相对路径还不能保证与原生 Chat 使用同一个账户目录。 本次不更换登录、复制凭据、增加账户设置、放宽工具权限,也不修改模型输入、求解实验或自动重试策略。 需要在切换到作业目录前,按现有原生 Chat 的路径语义解析账户选择,再补相对路径的真实子进程回归;真实模型与正式 App 安装后的验收仍独立保留。 改动思路账户意图已由桌面服务提供,缺口位于现有分析进程的环境适配;继续使用这个 IO owner 是合理边界,但必须复用原生 Chat 的目录解析语义。 本 PR 的合理边界是把已有 Chat 账户选择正确传给现有分析子进程,保持缺省、父环境、固定证据、权限和显式失败恢复不变。 原生 Chat 先把服务给出的目录展开并解析成绝对路径,再交给子进程;分析新增代码只复制原始字符串,然后在分析作业目录中启动子进程。因此,环境字符串相同并不能证明使用了相同账户。把已知选择在原服务上下文中规范化即可修复这个缺口,无需让用户重新登录、修改全局环境或增加设置。
表格概括实际合成进程观察;它不代表真实凭据或模型调用成功。 具体改动规范依据是修改前的 trajectory-assessment 合同,固定版本 关键代码讲解
全部3路径38增3删已读:7行生产环境传递、26增2删的既有子进程测试、5增1删的原合同说明。没有新的账户存储、schema、enum、CLI、权限或 UI。继续复用现有 Python 进程 IO owner 合理;无需为这个目录问题引入第二个认证 owner 或语言迁移。 对主干的风险[P2] 在改变子进程工作目录前解析显式 Chat 账户目录。 服务从有效的相对目录 最小修复是非空选择在服务工作目录中按原生 Chat 既有路径语义解析后再传给 69项相关测试通过。同一不可变基线/当前 head 的五组真实子进程对照中,显式绝对冲突和仅 Chat 选择按预期改变,缺省、空和两者皆无三组完全保持;全部输入、配置、analysis key、prompt hash、结果与父环境控制保持。源码和 wheel 的生产 HTTP/托管后端验证失败保留、无显式重试不再启动、显式第二次成功、结果重用不再启动、原来源引用和源字节不变。 以实际不可变 PR 基线运行的 premerge 六项直接、六项 catalog、八项风险和一项公开边界检查通过,benchmark-sensitive 人工 hold 独立保留。此前使用移动的 语义与 CI 对齐本次复用既有账户目录词汇,没有新增主体覆盖 gate 或通用义务。具体违反的是原生 Chat 与分析对同一明确目录选择的一致性;原账户 owner、触发输入、实际错误、最小修复及复跑命令如上。文档说明不会授权登录 fallback、工具或自动重试。前端红项与人工 hold 保留各自边界,不能用来掩盖或替代这个当前账户缺陷。 我的整体评价工程结论 REQUEST_CHANGES:保留这次修复绝对账户冲突的有用增量,并在同一既有 IO owner 补完相对目录语义。问题和代码量相称;没有要求新账户框架、额外用户确认或整个父任务完工。 这是有剩余缺口的 justified_increment;新增配置/迁移没有必要,缺省隔离已有实际对照。真实登录有效性、模型判断和正式 App 原作业重试仍需原有验收。本评论只针对相同精确 head 的新可行动发现;已读取当前合并状态和已有批准,未重复批准、撤销评论或执行任何合并/安装操作。 English verdict: REQUEST_CHANGES — post-merge audit of |
Problem and result
当桌面 App 已明确选择 Chat 账户目录,而启动环境继承了另一个终端的
CODEX_HOME时,研究分析子进程会使用错误的账户目录。原生 Chat 能正常绑定账户,分析却可能因未携带认证而失败。此修复让分析子进程使用服务已声明的LOOPX_CHAT_CODEX_HOME;没有声明或为空时,普通 CLI 的账户发现行为不变。Written by: model_agent · Codex · OpenAI.
Implementation
复用现有子进程 owner,在它的环境副本上应用已有 Chat 目录选择。保持 Codex 的登录、凭据刷新、共享 HTTP transport、read-only sandbox、禁用工具及显式执行/重试语义;父进程环境、固定输入、模型配置和旧结果不改写。没有新的账户设置或凭据副本。说明加入既有 trajectory assessment 合同。
Validation
Tested head:
cbba37a1f59bccc557fbe79ef00cf7fd815607ad; baseline:f08ca9dcba2190814ab31407d4cb97d0ef54af99.这是 #6961 正式 App 验收发现的 host-profile 边界修复。合成进程验证不能证明真实模型执行成功;合并安装后将在同一原实验、同一失败作业上显式重试,并保留失败历史。界面和分析提示未改动,原公开打包视觉证据见 #6961。