Skip to content

feat(dsh): qualify latest host and add secure launcher - #7089

Merged
huangruiteng merged 7 commits into
mainfrom
codex/free-agent-2-dsh-fast-host-20261023
Oct 23, 2026
Merged

huangruiteng merged 7 commits into
mainfrom
codex/free-agent-2-dsh-fast-host-20261023

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Outcome

Qualify the optional native LoopX plugin on DSH 0.2.1-rc.2 and add loopx dsh-launch to reuse existing machine credentials without copying them into argv or launcher output. Preserve explicit global/subcommand runtime roots and opaque DSH arguments. The README now keeps installation, readback, startup and removal on the same selected home.

The source host uses upstream-patched MCP client 2.3.0 / SDK 1.32.0 and a compatible Cordis pin. The actual-host transport regression rejects cross-origin 307/308 redirects while retaining legitimate same-origin requests; CI and the existing canary phase run it. Remaining public advisories in the frozen host/build graph are patched without a security allowlist. Source overrides do not patch an independently installed DSH binary.

DSH owns models/tools/Session/retries; LoopX remains the only Goal/Todo/quota/settlement owner. The Python launcher is process/credential IO, not a parallel decision owner. Interactive plugin and headless Turn retain separate caller qualification. Unrelated global self-repair instruction edits and unsupported effort-allocation percentages have been removed.

Validation

Exact final head: 19dd6629f1baad9d3d7b69b98a41bcfa984a0bf9; target base: 663ae88b8f112f73fb9de70947f871b10529c652. Source and synthetic/disposable profiles only; no owner credentials, active Goal mutations, model calls or release.

  • 23 focused CLI/provider tests pass, including actual module CLI and exec root/argv readback. The same eight launcher regressions on the historical defective source produce two expected global-root failures; all eight pass on the fix.
  • Native plugin: typecheck and 229 tests pass; full quality/package/runtime phases, peer/artifact/profile and install/removal pass. The real packed runtime also passes through the actual launcher, including bootstrap, exact Session, Start/Pause, live-disable and wholly disabled boot.
  • The transport check resolves through DSH's own MCP client. Its old SDK control fails the oracle; the patched closure passes both negative and legal request cases.
  • Official npm advisory readback over 756 packages / 772 locked versions returns no affected entry; the old SDK positive controls are detected. A mirror's empty audit response was rejected as evidence.
  • Fresh frozen checks pass under pnpm 9.15.9, 10.33.0 and 12.10.1 without rewriting the lock.
  • Ruff, compile, scoped strict launcher typing, diff/bilingual checks and the complete 14-file public-boundary scan pass. Quick premerge has 6 direct + 4 selected passes, in addition to the full native qualification. Strict CQR cqr_24e4695129878d248177 verifies this exact scope.
  • Optional broad-import mypy remains failed: matched immutable base/head each have 5,144 identical normalized diagnostics. The added launcher annotation issue was repaired; no global type-clean claim. The 27 unchanged optional Python headless SDK cases require separately configured SDK/runtime and remain skipped.
  • Earlier partial-baseline and wrapper-location setup failures were retained and corrected before final qualification. An initial unscoped local check reported unrelated existing Goal migration errors; the final source scan uses the same registry-free owner as premerge, with all 14 paths retained. No active state was repaired as part of this PR.
  • Per configured review policy, CI is not consulted. Windows, fully browser-mounted release acceptance, publication, installed-host adoption and model benefit are not claimed.

Product boundary

Existing DSH UI and kernel contracts are reused; no rendered layout, Lark, storage schema, capability switch or permission expansion. Bounded simplification reuses the existing credential owner and validation harness, preserving independent host/tool compatibility. This is S4 host qualification, not a claim of sustained long-horizon effectiveness.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

[P2] 保留全局位置传入的凭据 runtime root。 register_dsh_launch_command 再次声明 --runtime-root,其默认值 None 覆盖顶层 parser 已解析的值。真实 CLI 的 loopx --runtime-root ROOT dsh-launch ... 因此选择默认根目录;同样参数放在子命令之后才选择 ROOT。我用两个合成凭据源和实际 exec 子进程验证:前者静默选择 fallback 凭据及端点,后者选择 explicit 凭据及端点,两者都返回成功。请复用全局参数,或避免子 parser 的缺省值覆盖已有值,并从正常 CLI 覆盖两种位置。位置:dsh_launch.py:45–51。

动机

使用 LoopX 机器凭据启动 DSH 的用户,需要在受支持的宿主版本上直接开始交互或无界面任务。

此前插件只资格到旧宿主,用户还需要自行传入提供方环境;本 PR 希望让新版宿主可安装运行,并通过一个命令读取已有机器凭据,减少重复配置和密钥进入命令行的机会。

本次已经验证新版打包启动、安装恢复和合成凭据启动,但全局参数位置会选错凭据根目录,尚未交付一致的启动结果。

范围是可选 DSH 集成、启动入口及相关说明;不包含新的模型权限、共享安装升级、发布或合并,也不把一次工具调用当成长程收益证明。

改动思路

保留 DSH 对会话、模型、工具和账单的所有权,LoopX 继续拥有 Goal、Task、配额和结算。新入口经现有 support-control 分发,复用 operator_provider_environ 读取机器凭据,再用 os.execvpe 启动 DSH;没有增加另一套凭据存储或 Goal 权威。插件依赖资格与运行 smoke 则适应宿主 Web 服务改名。

复用既有凭据 owner、插件和启动分发是合适的;最小修复应留在参数注册边界,避免第二份同名参数默认值覆盖已有选择。

当前 PR 的边界是新版可选宿主的可用安装与正确凭据启动,以及准确的交互/无界面路线说明。

仅修改版本范围不能证明新版服务仍能启停;我实际执行打包运行、profile、安装/卸载及默认关闭对照。反过来,直接构造 Namespace 的单测不能证明正常 CLI 选对凭据,所以补做了普通入口到实际子进程的反例。这里用文字说明分支,未生成或认证流程图。

具体改动

独立规格采用修改前的 docs/integrations/deepseek-harness-control-plane-adapter.md,spec_revision 为 5550e91bab264313d5698eb0d7b23c6b2e5f16da;同时核对该版本插件 README 的安装、Driver、隐私及恢复约定。逐项判断:Authority Boundary 已实现,仍由原 owner 分工;Install And Activate 的新版打包启动、精确会话与默认被动行为通过;Failure And Privacy Boundaries 的密钥不打印路径通过,但显式根目录被覆盖未满足;Validation And Removal 的安装、拒绝不兼容版本、移除和禁用宿主存活通过。规格之后新增的路线说明不能反过来充当旧约定的证明。

全 PR 为 12 个文件,新增 5987 行、删除 5594 行。主要是 lockfile 的 5662/5569 行依赖重解析;我核对直接依赖、锁版本、设置和 overrides,并用 pnpm 10.33.0 冻结安装实际运行。其余包括 144 行启动模块、6 行分发接线、95 行 Python 测试;manifest 扩展已资格预发布范围并更新开发依赖,仍拒绝稳定 0.2.1 和未资格 alpha。README/adapter 说明路线、启动与恢复;两个 smoke 和会话 fixture 适配新版 SDK;两处 self-repair 指令强调可见 peer lane 不构成接管授权,是指令变更而非新的机器强制规则。

关键代码讲解

  • register_dsh_launch_command(18 行)把入口接入正常 parser;45 行的重复参数是本次阻塞点。现有三个测试直接构造 Namespace,因此没有覆盖全局参数合并。
  • resolve_dsh_launch(59 行)解析可执行文件、隔离 home、凭据根目录并转发 DSH 参数;88 行复用原凭据 owner,默认参数为 web,找不到宿主时给出可恢复错误。
  • handle_dsh_launch_command(106 行)执行实际进程替换,环境凭据不会被拼入 argv;support_control.py 的注册与分发让正常入口可达。
  • dsh-goalbar-runtime-smoke.mjs 对新版 webApp/旧 webRuntime 服务的检查要求共享监听器仍存活,不能以禁用 LoopX 时误关宿主来通过测试。

render_dsh_launch 当前没有调用方,可在同一模块做小幅清理;这是非阻塞建议,不需要新的抽象或额外跟踪任务。已有宿主兼容范围有独立消费者,不应为了压缩锁文件就删掉有效兼容分支。

对主干的风险

已执行 Node 24、pnpm 10.33.0 下的类型检查、229 项插件测试、peer-range、artifact、profile、安装/卸载和 DSH 0.2.1-rc.2 实际打包运行 smoke,均通过。运行 smoke 使用实际 DSH 与打包插件、合成 LoopX CLI;覆盖启动、精确会话、连接生命周期、Start/Pause、禁用和空闲无额外调用,不能据此声称真实模型任务或浏览器完整发布资格。没有改动渲染布局,视觉评审不适用。

Python 选择的入口/凭据套件为 head 83 通过、1 失败,实际 base 为 80 通过、同一失败:test_selected_todo_execution_matches_full_cli 的旧 fixture 触发 canonical_authority_required,失败签名和未改动因果路径一致,单独保留为基线问题。quick premerge 的 6 项直接检查及 4 项选中检查通过,公共边界扫描干净。最初 pnpm 11 的工具链不兼容已保留,使用声明兼容的 pnpm 10 后安装成功;没有据此删除检查或修改锁文件。

语义与 CI 对齐

显式 --runtime-root 必须选择用户指定的凭据 owner。当前普通入口违反该约定:缺省子参数覆盖显式全局选择,再落入 select_default_runtime_root。合成子进程只报告选中标签和端点,未读取真实密钥、未调用模型;默认关闭插件不影响宿主的实测也不能消除这个新入口缺陷。最小复验是正常 CLI 两种参数位置均选择同一合成根目录,另保留缺失宿主、无凭据和参数转发测试。按当前评审策略未获取、轮询或等待 GitHub CI。

我的整体评价

结论为 REQUEST_CHANGES,针对完整 exact head edc9f84e16b9776c164cd480ff14f05b3d35f911。可选宿主资格的增量有实际价值,机制规模总体合理;凭据选择错误使 user_experience 为 regression,长程任务也可能重复使用错误提供方,long_horizon 为 regression。应先修正常 parser 的根目录传播,再审完整 head。

已检查实际插件、CLI、安装与恢复消费者;没有渲染布局变更,视觉评审不适用。本轮未认证 Windows、真实模型任务、现场安装采用、完整浏览器发布资格或可比长程净收益。兼容性应保留既有独立宿主范围;新启动器复用原凭据与 authority 词汇,没有增加新的 peer 生命周期或配额权限。公开 self-repair 文本保留可见性与所有权的区别,但不声称模型已遵从这些说明。采用评审上下文中“核验实际用户结果”的建议,不继承其历史判定或声称经验收益已测量。

English verdict: REQUEST_CHANGES — edc9f84. The ordinary CLI silently replaces a global runtime-root selection and launches with the fallback credential/endpoint. Packed DSH 0.2.1-rc.2, 229 plugin tests and distribution checks pass; the unchanged Python baseline failure is separately attributed. Preserve the explicit root through the real parser and test both argument positions.

@cocolord cocolord left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · GPT family · OpenAI · self_reported · effort_unavailable

REQUEST_CHANGES — 正常入口会丢失显式凭据根目录;新版资格仍有实质缺口

精确 head:edc9f84e16b9776c164cd480ff14f05b3d35f911。P1:顶层 --runtime-root 被子 parser 缺省值覆盖,启动器静默选择另一个凭据/端点。 本次重新读了此前同 head 的完整评审并独立复现,没有继承其资格结论。没有 last-review-to-head 修复增量,仍须判断整个 base-to-head PR。

动机

从终端使用 DSH 的用户,希望用已设置的机器凭据启动交互或无界面任务,而不是再次手动拼装密钥环境。

此前可选插件只资格到旧宿主,终端启动还需另行设置提供方环境;本PR支持新候选宿主并新增启动命令,意图减少重复配置及密钥进入命令行的机会。

已观察到真实新宿主的启动/禁用及启动器版本/帮助读回;但全局参数位置选择了错误的合成凭据根,完整继续执行到结算的本地测试也未完成资格,因此不能声称普通任务已交付一致安全的结果。

范围是可选DSH宿主资格、复用既有机器凭据的启动入口和准确的路线/所有权说明;不包含新模型权限、发布/共享安装升级/合并,也不把合成调用或启动成功当成长程净收益。

改动思路

架构继续区分两个承载:DSH拥有会话、模型、工具、提供方重试和账单;LoopX拥有Goal/Task/quota/结算。插件提供同会话Driver及GoalBar,已有headless Turn adapter提供无人值守路径。新命令经support-control注册分发,复用 operator_provider_environ 的既有credential owner,再用 os.execvpe 交给DSH;没有新凭据store或第二Goal authority。

相对于不交付、只扩peer版本范围、以及再造凭据或执行框架,现有owner加一个小启动入口是更小且有实际调用者的方案。仅扩SemVer无法证明服务改名后禁用仍保留共享Web,故本次真实packed host测试有价值。反之,直接构造Namespace的单测无法证明正常parser保留用户选择。应在参数注册边界复用已有全局root或抑制子parser缺省覆盖,不需要新协议或更大的兼容框架。

具体改动

全PR为12个文件,5987新增/5594删除;约11231行来自lock重解析。三个实际独立评审组同时覆盖启动器、完整dependency/packed host、公开contract/instructions;没有把bits过滤的lock、manifest、docs、tests排除在全PR判断之外。

独立规范:spec_ref=docs/integrations/deepseek-harness-control-plane-adapter.md,spec_revision=5550e91bab264313d5698eb0d7b23c6b2e5f16da;同时读该revision的插件README。以下criterion_id为原无编号段落的审查锚点:

  • AUTHORITY(Authority Boundary):DSH执行权/LoopX持久工作权分离,安装不授予绑定/模型权限。implemented:未修改现有owner,启动器只交接已明确选择的host;所有权说明不授予peer接管。
  • ACTIVATION(Install And Activate/Same-Session Driver):精确session成功skill调用后才继续,无绑定或目录不能激活。新版真实packed smoke覆盖保留路径;但admission-to-closeout本次失败未完成因果归因,后续结算资格不完整;这是未验证,不宣称新的activation契约回归,不能用只启动代替后续结算。
  • PRIVACY(Failure And Privacy Boundaries):不把凭据/原始输出送GoalBar,不接管DSH工具。既有wire未变化;已验证真实launcher的版本/帮助/boot-free配置输出无合成key,实际exec的argv也无key;不宣称DSH执行任意插件/命令后都不可能打印自己的环境。
  • REMOVAL(Validation And Removal):卸载/禁用只移除LoopX,保留DSH共享host。implemented:新版实际监听器、live-disable、disabled-package boot及teardown通过,不是仅mock service对象。
    另外,ROOT-SELECTION是既有machine credential owner及正常CLI的独立回归锚点,不冒充上述规范中的编号:同revision的 loopx/control_plane/operator_provider.py:84–95明确由拥有root的caller传入选择;正常全局参数也已存在。相同显式root放全局或子命令位置当前选错,最小修复在argparse边界并补正常入口测试。

关键代码讲解

  1. register_dsh_launch_command(dsh_launch.py:18)注册可执行文件/home/skills root和透传argv;45–51行重复声明runtime-root,未用SUPPRESS,覆盖顶层已经解析的选择。
  2. resolve_dsh_launch(59行)解析binary、home和root,然后使用原机器credential resolver;缺DSH可执行文件给出可操作错误,默认DSH参数为web,--后参数不经shell重解释。
  3. handle_dsh_launch_command(106行)用真实exec替换进程;密钥不拼进argv。新 support_control 注册和dispatch使普通console/module入口可达。
  4. 版本manifest扩展0.2.1 prerelease范围,dev host/SDK统一0.2.1-rc.2;peer smoke继续排除stable0.2.1、alpha及其他未资格tuple。runtime smoke读 webApp 或旧 webRuntime 并要求shared listener存活;connection fixture补新版principal/signal/interactions字段,不新增生产授权分支。

lock不仅是机械噪声:独立比较importers、integrity、全package/snapshot图及transitive变化,包括Cordis和模型/MCP依赖。冻结安装成功,但其MCP版本仍落在已公开advisory范围,不能称安全资格已清。README添加启动方式和隔离home/skills;adapter澄清interactive/headless共享结果契约,60/25/15是文档中的建议投入,不是machine quota或已测使用分布。self-repair及pattern新增“可见peer lane不等于所有权”,是可安装的通用指令,不是运行时新增claim规则,也不只在DSH开启时加载。

对主干的风险

P1 — dsh_launch.py:45–51:保留正常全局root选择。 两个相互独立的合成credential store分别对应explicit与fallback端点,真实普通console以及module CLI均经 os.execvpe 执行受控child。loopx --runtime-root ROOT dsh-launch ...报告fallback;root放子命令之后则报告explicit,两者都exit0。不是只看parse结果,也没有读取owner账号或调用模型。实际child PID保持exec身份,验证了新入口的整个分发边界。请复用全局参数,或用argparse.SUPPRESS防止默认None覆盖;补两种位置、default、argv透传及缺失host测试。这个缺陷会使用户明示配置与实际执行不一致,不能降格为风格建议。

启动器安全边界用合成数据实测:真实安装DSH0.2.1-rc.2的 --version、--help、--profile web --dump-default-config 都exit0且key不进入argv/stdout/stderr。正常child还覆盖缺失/坏credential和环境透传,不混同为真实认证成功。使用独立HOME、DSH roots及进程temp namespace;所有provider/网络安全探针均只允许合成输入及本地边界。未使用owner账户、真实key或paid model。显式选择DSH可执行文件和执行参数是既有工具权限,不是credential-readback或模型/GoalBar远程授权。

新版实际packed runtime、typecheck、peer-range、profile、artifact和installer smoke通过;冻结pnpm10.33.0,实际Node26.0.0/darwin ARM64,不冒充Node24或Windows资格。base从固定5550e91 revision完整archive与冻结lock独立安装,旧DSH0.2.0-rc.2也通过同样实际启动/禁用smoke。最初同package并发build的runtime尝试在host启动前缺build-temp入口而失败,随后串行通过只是额外覆盖,原失败保留。完整229项插件测试在两次head运行均出现228通过/1失败:admission-closeout等待continuation未排队;同一测试在immutable base也复现同一失败文本。后者否定“仅head才失败”,不自动解释因果或合格持续结算;已核验两侧archive/checkout各自的Python模块来源和选中revision,continuation未排队的失败原因仍未成立。Python launcher/provider/关键入口21项通过;完整入口组合180秒未完成,最初缺Node的runner setup失败也保留,不假称产品bug或已修复。缺失的持续工作/结算证据仍需最小区分性复验。

语义与 CI 对齐

P1 — pnpm-lock.yaml:3081–3083:新宿主资格仍保留已公开的MCP依赖风险。 公开依赖检查当前失败:GHSA-6prh-2h8m-c8cw,锁中的MCP client2.2.0在已知范围,公开修复为2.3.0。base锁的client2.0.0也在范围。两个版本的实际安装transport,在两个隔离loopback服务器上都复现公开advisory的合成header/无害body跨origin转发;没有使用真实凭据或外部服务器。因此不是断言本PR首次引入泄露;新版DSH→MCP-client→SDK的受影响路径仍须安全资格和required gate处理,不能因其叫devDependency就忽略真实host测试路径。请使用上游兼容修复或可验证的受影响路径修复,保留冻结安装/实际host回归,不直接allowlist以获得绿色。

目前远程Python browser/shard/Windows及依赖review仍失败或cancelled,dashboard-acceptance及下游gate未通过;已读取日志及workflow obligation,而不是只看check名字。无法用同环境base/head失败签名完成独立归因的行保持unresolved,separate release build/条件发布skip单独列hold。未把它们全归咎本PR,也没有用作者旧CI或self-review代替当前wait_for_ci=true的观察。

typed状态/authority词汇保持现有binding、principal、lease/claim语义,没有substring denylist或将硬义务叫guidance;新指令明确独立核验不等于接管。DSH关闭实际仍保留host且不激活Driver;共同安装的self-repair新增通用ownership指导是明确的独立指令变化,不虚称整个PR在DSH关闭时字节不变。

我的整体评价

结论REQUEST_CHANGES。小启动入口和实际新host资格确有正向增量,机制总体相称;但root选择回归及持续continuation/required security资格缺口不能挣得全PRapproval。problem_context=not_yet_proven;user_experience为regression(显式root不支配实际启动);long_horizon的旧authority保留,但本次后续工作至结算仍not_yet_proven。不把229数量、绿的distribution CI或作者自评当成价值证明。

相关bounded future-facing pass:同一个argparse/credential owner足够;修复缺省覆盖并把正常入口测试与直接Namespace测试并列,是局部可逆的最值修复。render_dsh_launch暂无活动调用者,可同模块删除以减少维护面,是非阻塞小清理,不需要新抽象。保留真实独立host版本消费者的兼容,不因lock较大而删掉必要范围;60/25/15不作为强制资源规则。通用skill安装及content readback证明delivery,不证明模型已遵从。

残余范围:原生宿主动作使用合成LoopX binding,完整canonical subject范围/恢复counterfactual与后续结算仍未验证;owner真实提供方、Windows现场安装、完整mounted browser及可比长期净收益也未资格,不因此编造回归。本次无产品发布、merge、dismissal或产品编辑。修正root、补稳定实际admission-to-closeout及处理当前依赖/必需失败归因后,以新head重新执行完整评审。

English verdict: REQUEST_CHANGES - edc9f84; real CLI exec selects fallback credentials when runtime-root is global. Packed host/launcher checks pass, but continuation and required dependency/CI qualification remain materially unresolved; no owner accounts or live model were used.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · GPT-5 · OpenAI · self_reported

Exact head: 4bfb4c45121e4214bf54a23510582eec7935f69b. Base: 5550e91bab264313d5698eb0d7b23c6b2e5f16da.

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

动机

需要从终端用本机已保存凭据启动 DeepSeek Harness(DSH)的操作者。

旧 head 把 --runtime-root 放在 dsh-launch 前时,子 parser 的缺省 None 会覆盖全局选择,真实进程静默使用默认凭据和端点;新 head 在两个参数位置都保留显式根目录,未传时才使用隔离默认根。

普通 LoopX CLI 经真实合成 exec 子进程验证:两个位置都选择显式凭据 owner,默认位置选择默认 owner,显式根缺凭据时不会回退;DSH 参数、隔离 home 与 skills root 正确转发,合成密钥只进入子进程环境。

本次不新增凭据存储、模型执行权限、安装升级、发布或合并;也不把合成 child 成功当成真实模型、安装态宿主或长期收益资格。

改动思路

启动器复用 support-control 的正常 parser、operator_provider_environ 凭据 owner 和 os.execvpe,只把主 parser 的 runtime-root destination 作为共享选择;子命令别名使用 argparse.SUPPRESS,省略时不再覆盖已有值,显式给出时仍可覆盖。

当前修复边界是参数传播与真实 CLI 回归;DSH 继续拥有 Session、模型、工具和账单,LoopX 继续拥有 Goal、Task、quota 与 settlement,不新增第二套 authority。

路径 结果
旧 head 全局 root 被子 parser 默认值覆盖,静默选择 fallback owner。
当前 head 两种位置 均保留显式 root;省略时才选择默认机器 root。

规格依据为 docs/integrations/deepseek-harness-control-plane-adapter.md#authority-boundary,revision 5550e91bab264313d5698eb0d7b23c6b2e5f16da。DSH-AUTH、DSH-PRIVACY、DSH-ACTIVATION、DSH-REMOVAL 均为 implemented。仓库复用结论为 reused:沿用 support-control 分发、机器凭据 owner 和真实 DSH 插件 runtime。

具体改动

完整 base-to-head 为 12 文件、+6154/-5594;主要行数来自冻结 pnpm lock 重解析。当前修复提交只改 dsh_launch.py 与 test_cli_dsh_launch.py:子命令 --runtime-root 使用 argparse.SUPPRESS,不再用缺省 None 覆盖主 parser 选择;无调用方的 render_dsh_launch 被删除。

关键代码讲解

  • register_dsh_launch_command 保留子命令位置参数,但省略时不让子 parser 改写共享 destination。
  • resolve_dsh_launch 用最终 root 调用既有 operator_provider_environ;显式 root 缺凭据时不会借用默认 root。
  • handle_dsh_launch_command 经 os.execvpe 启动真实 child,密钥只存在于环境,不进入 argv。
  • 新增真实 CLI 参数化测试覆盖 global、subcommand、default、缺凭据、argv 转发、DSH home/skills 和 secret-free 输出。

对主干的风险

旧的 P1 root 选择缺陷已闭合:真实 CLI 与真实合成 exec 子进程在两个位置选择同一显式凭据 fingerprint 和 endpoint;未传 root 才选默认 owner,显式 root 无凭据时也不会 fallback。

当前仍有独立阻断项。固定依赖图加载 @modelcontextprotocol/client 2.2.0,命中公开 GHSA-6prh-2h8m-c8cw;修复版本为 2.3.0。pnpm audit 在当前 lock 仍报告该问题。必须采用上游兼容修复并重跑 typecheck、229 项测试、artifact 与真实 DSH runtime smoke;不能用 allowlist 换绿。

已执行 8 项 launcher(含真实 CLI child)、161 项受影响 Python 测试、Ruff、compile 和 diff checks。3 项 Python 失败在 immutable base/head 同命令同签名复现。插件 typecheck、229 项测试、peer-range、artifact 和 0.2.1-rc.2 runtime smoke 通过。Premerge 19 项中 18 项通过,唯一 CLI output-budget 失败在 base/head 都出现同一 projection_envelope 诊断;公共边界扫描通过。

我的整体评价

针对 owner 指定的 root 传播缺陷,当前修复为 goal_achieved:用户显式选择的凭据 owner 支配实际 DSH child,两种位置均成立。User experience 从错误 provider 的 regression 改为 improved;long_horizon 的 quota/scheduling 状态保持 preserved。代码规模与局部 parser 修复相称,不需要新抽象。

本 PR 的启动器修复不改变渲染页面或交互布局;已沿 CLI parser、真实 exec child 和环境边界检查。

未在大范围本 PR 中新增页面视觉验收;已安装 DSH App 的人工交互不属于此次 CLI 根目录修复。

但整 PR 仍为 REQUEST_CHANGES,因为 MCP client 2.2.0 的公开安全修复尚未落地。此前一次插件 continuation 测试失败没有在当前 229 项运行复现,历史原因仍未证明,作为残余风险保留。此结论不是 merge、install 或 release 授权,也不 dismiss 任何历史 review。

English verdict: REQUEST_CHANGES - 4bfb4c4. The runtime-root P1 is fixed: a real CLI and real synthetic exec child select the explicit credential owner at both argument positions and never fall back when that root lacks credentials. One blocking issue remains: the qualified DSH graph still pins vulnerable @modelcontextprotocol/client 2.2.0 instead of the 2.3.0 patched release. Eight launcher tests, 229 plugin tests, typecheck and packed runtime checks pass; three Python failures and the CLI output-budget failure match immutable base and remain separate baseline holds.

@cocolord cocolord left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · GPT family · OpenAI · self_reported · effort_unavailable

REQUEST_CHANGES — runtime-root 已修正,MCP 安全资格仍未完成

精确 head:4bfb4c45121e4214bf54a23510582eec7935f69b。本轮重新判断整个PR,不继承旧结论。当前阻塞是 P1:新宿主锁中的MCP client2.2.0仍受已公开GHSA-6prh-2h8m-c8cw影响。旧runtime-root P1已由独立普通CLI→实际exec读回确认修复;不会继续把已修复问题列成当前finding。

动机

从终端使用DSH的用户,需要用已设置的机器凭据直接启动工作,而不是反复手动配置环境或误用另一套提供方设置。

此前可选插件只资格到旧宿主,终端启动需另行设置提供方环境;新增启动命令应减少重复配置和密钥进入命令行的机会。此前全局root被覆盖还会静默选择错误凭据,本轮修复这个普通入口问题。

当前真实CLI全局root已选择explicit合成凭据,宿主MCP请求路径仍存在已公开依赖风险;因此正确启动的增量已成立,但不能声称完整宿主安全资格成立。

范围是可选DSH宿主、复用既有机器凭据的启动入口及路线/所有权说明;不授予新模型、Goal或peer权限,不包含产品发布、共享安装升级或合并,也不把合成调用当成长程净收益。

剩余缺口是MCP的兼容patched closure或已验证guard,以及required dependency安全检查;另有P2的同home安装/启动recipe说明需要修正。下一步由同一个DSH package owner处理,不需要新控制平面或额外权限。

改动思路

DSH继续拥有会话、模型、工具、提供方重试及账单;LoopX拥有持久Goal/Todo/quota/结算。插件是交互式同会话Driver/GoalBar,既有Turn adapter是headless承载,并非两套控制平面。新入口通过support-control到原 operator_provider_environ,再 os.execvpe 替换进程,不新增凭据store、binding sidecar或执行authority。

最小设计就是现有credential owner加一个薄启动器。仅扩大peer范围无法证明新版禁用仍保留共享Web;另建账本或兼容框架则过重。本轮在重复参数缺省处使用SUPPRESS,保留子命令别名的明确覆盖语义,又不让“未提供”覆盖全局选择,并删除没有活动调用者的render预览。这个同模块边界更小、更易回退,是已落实的bounded future-facing修整,不要求无关迁移。

具体改动

整个base-to-head仍为12文件,6154新增/5594删除,其中11231行是lock重解析。三个实际独立并行组覆盖全部launcher/测试、完整依赖和native host、公开contract/共享skill;另作跨组检查。相对最后已审 edc9f84e16b9776c164cd480ff14f05b3d35f911,只改launcher和Python测试:增加SUPPRESS、删除unused render/shlex、补正常CLI及缺失explicit凭据回归,测试文件95→277行。未用小fix diff代替全PR判断。

独立规范:spec_ref=docs/integrations/deepseek-harness-control-plane-adapter.md,spec_revision=5550e91bab264313d5698eb0d7b23c6b2e5f16da,并读同revision的插件README;新写的Route Decision不是反向证明实现的规范。criterion_id是原无编号段落的审查锚点:

  • AUTHORITY:DSH执行权与LoopX持久工作权分离,安装不授予绑定或模型权限。implemented:原owner保留;新launcher只交接显式选择的host。
  • ACTIVATION:精确session的typed user/message skill调用,或按call id配对的成功tool/result,再结合唯一binding、quota/reservation才继续;目录或安装不是激活。当前新head完整229项插件测试包含真实generic-CLI admission-to-closeout通过;此前base/旧head失败保留为独立观察,不声称SUPPRESS修好了Driver或已解释原因。
  • PRIVACY:GoalBar不承载原始文本、凭据、机器路径或provider错误;DSH仍拥有工具/提供方边界。wire未改,launcher key不进入argv;这不是保证任意DSH插件不能打印自己的环境。
  • REMOVAL:禁用/移除LoopX不能关闭DSH共享host;native旧/新宿主证据与当前资格读回覆盖此边界,不把一个service对象存在当成HTTP存活证明。

ROOT-SELECTION 是既有credential owner和正常CLI的独立回归锚点,不冒充规范原编号。原owner明确由拥有root的caller传入选择;现在全局形式真实exec读回选择explicit,而旧审查头选择fallback。缺省、子命令、同时指定和DSH remainder须保留各自明确语义。

关键代码讲解

  1. register_dsh_launch_command(dsh_launch.py:17):--runtime-root alias的 default=argparse.SUPPRESS 保留顶层namespace,不赋虚假的None。handler和既有注册调用方签名未变。
  2. resolve_dsh_launch(62):按binary/home/runtime-root和原credential resolver准备环境;不存在binary给可操作错误,默认DSH参数web,只去除一个前导--,不经过shell解释。
  3. handle_dsh_launch_command(109):真实exec替换进程,key在选中child环境而非argv;当前正常console执行保留PID并选择正确root。删除的render函数无活动生产caller,也不是已发布的持久协议分支。
  4. package manifest资格到0.2.1 RC tuple,锁固定0.2.1-rc.2及其SDK;peer smoke保留旧消费者并拒绝stable0.2.1/未资格tuple。runtime smoke要求 webServer 与 webApp 或旧 webRuntime 存活,并结合共享index200、LoopX route404和boot退场;connection fixture补新版Peer字段,不新增授权。

原base不变,lock、manifest、Driver/integration及共享skill等相对旧审查头的source bytes未改。复用证据记录原revision/hash并重新检查当前base、caller、平台、依赖和claims;特别是完整1594条base-to-head锁记录与旧审查数据相同,不是继承旧verdict。README新增launcher/home隔离说明,adapter澄清两承载共享结果contract。60/25/15仅是文档建议,不是quota或已测使用分布。self-repair及pattern的“可见peer lane不等于所有权”仍投递给generic和DSH skill用户;不能虚称DSH关闭时共同安装指令字节不变,也不声称安装证明模型已遵从。

对主干的风险

旧finding逐项关闭

  • 前一作者review的root P2与本次先前review的root P1是同一个原因。本轮独立实际console CLI观察到全局root选择explicit,真实exec保持PID、原样透传空格/Unicode/换行/分号等opaque argv;不是只看代码或构造Namespace。新增正常module测试覆盖默认/全局/子命令及缺失explicit store,且保留原resolver边界。此finding已修复。
  • 前一review的MCP P1没有修复。当前lock SHA及client2.2.0未变,重新安装的实际transport仍在合成loopback反例中转发跨origin的测试header/无害body;当前head的dependency-review也失败。这个结论独立于root修复和229项测试通过。

P1 — packages/dsh-loopx-plugin/pnpm-lock.yaml:3081–3083

新宿主closure仍锁住公开advisory GHSA-6prh-2h8m-c8cw 的受影响client2.2.0,公开修复是2.3.0。实际路径为DSH→dsh-mcp-client→MCP HTTP transport,其configured headers没有额外redirect fence。这是条件性、已公开的依赖风险和required security资格hold;base的2.0.0也复现,不是本PR首次引入泄露,也不是宣称launcher的DEEPSEEK_API_KEY自动进入MCP header。

最小修复是上游资格的兼容patched closure或可验证的受影响路径防护,保留匹配的SDK约定、冻结安装和native/MCP回归,再清除required dependency-review。不能只allowlist以得到绿色。公开正文不附探针payload、原始日志或额外利用细节;所有探针只用synthetic数据、两个loopback服务器,无owner key、实际账户、外部服务器或model调用。

P2 — packages/dsh-loopx-plugin/README.md:118–127

新的推荐命令 loopx dsh-launch web 在没有DSH_HOME时使用隔离的 ~/.local/state/loopx/dsh-home,而前面的普通安装会使用DSH默认 ~/.dsh/profiles/web。当该隔离web profile未另行安装LoopX、也未提供额外overlay时,读者按普通安装→推荐启动顺序会选择一个没有原LoopX插件的profile;原 .dsh profile不会被删除或卸载,已安装的共享skills也可能仍在。问题是实际home选择/profile-loader与recipe不一致,不宣称mounted browser故障,也不要求取消有意隔离。

请明确这个默认差异,并让可直接复制的recipe的安装、读回、启动和移除使用同一个home。已有普通安装可以显式传其home;新隔离安装则先把插件安装到launcher所用home,再用同一路径启动。以无模型profile/bundle读回验证,而不是要求用户重复配置或静默失去Initializer/Driver/GoalBar。

验证与 CI

当前native插件229/229通过,launcher/provider/关键入口29项及独立46个实际CLI/exec案例通过;typecheck、peer、build、artifact/profile和冻结pnpm10.33安装通过;实际Node是26.0.0/darwin ARM64,不冒充Node24或Windows。较早旧head两次228/229和base同一admission失败、180秒广泛Python选择超时及缺Node runner错误都保留;当前通过是新证据,不反推根因或改写旧观察。它证明当前一次完整路径,不独立证明长时稳定性或实地收益。

当前runtime资格最初在host启动前因长review路径触发pnpm tarball filename限制而失败;使用同一内容的较短 p.tgz 输入重试通过15.111秒的实际packed runtime资格,只是runner路径修正,原失败保留,不改tracked代码/lock或产品预算。原旧head并发build-temp失败也作为原revision的观察保留,不混为当前原因。

wait_for_ci=true:当前dependency-review失败;另有Release Artifacts build、chat-bundle-browser(1–3)、dashboard-browser(1–3)、windows-powershell及Python Tests checks失败。这些额外失败没有完成同命令immutable base/head或独立external归因,保留为unresolved证据/合并hold,不推断新的产品bug;当前native通过不能覆盖全部browser/Windows/release路径。条件性deploy/upload/publish及node-forward/presentation/dashboard-acceptance skip另行保留,不冒充通过。其余pending CI不是单独REQUEST_CHANGES理由;这次已有实际复现的MCP P1,不无限等待,也不拿分发CI绿灯替代真实边界检查。

我的整体评价

本轮root修正、真实普通入口回归和去掉unused preview是明确正向、同owner且比例合适的增量;当前229项包括admission/closeout的通过也必须承认。先前源码/Python来源已核验,不再要求重复证明。长期owner/quota/settlement没有新权力或状态迁移,但不声称已经测得效率收益或解释所有历史时序失败。

整PR仍不能APPROVE:唯一已确认当前P1是保留的公开MCP风险和required dependency安全资格。请完成patched closure/guard及冻结安装、实际host和安全negative复验;再对新head重新判断全部PR。原root问题已关闭,不继续索要同样修复;P2需要同home的copyable recipe,但不是独立安全/P1 hold,也不应改掉有意隔离。无merge、dismissal、产品编辑或live-account操作。安装态browser、其他平台和paid provider任务未由本次合成资格证明,也不因此编造产品缺陷。

English verdict: REQUEST_CHANGES - 4bfb4c4; actual CLI confirms global runtime-root fix and the fresh plugin suite passes229/229. The retained public MCP advisory still reproduces and current dependency-review fails; also clarify the bounded P2 same-home install/launch recipe. No owner accounts or live models were used.

…1023

Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
…nges

Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max

APPROVE — 精确 head:19dd6629f1baad9d3d7b69b98a41bcfa984a0bf9。完整重审后,没有未解决的阻塞 finding;原 runtime-root、MCP 安全资格和同目录使用问题均有当前证据。

动机

从终端使用 DSH 的用户,需要复用已配置的机器凭据并打开装有 LoopX 的同一份宿主配置。

此前需要手动传递提供方环境,且新启动器曾把全局 runtime-root 覆盖成默认值;安装与启动目录不一致还会使插件看似消失。现在两种参数位置保留同一凭据选择,安装、读回、启动和移除使用同一目录。

已验证正常 CLI 到实际进程替换、DSH 打包宿主及安装卸载;跨来源 MCP 请求被拒绝,同来源请求保持可用。

范围是宿主资格、薄启动器及其使用说明;不包含发布、独立 DSH 安装的自动修补、权限扩展或真实模型效果声明。

改动思路

薄启动器复用现有凭据 owner,宿主兼容性与安全修复交给上游 SDK 和冻结依赖,不复制控制平面。

当前 PR 只交付 DSH 宿主资格、显式启动入口和同目录操作流程;全局 self-repair 指令变更及无依据的投入比例已移除。

DSH 继续负责模型、工具、提供方重试和 Session;LoopX 继续负责 Goal、Todo、配额、验证与结算。交互式插件和无人值守 Turn 是不同承载路径,不能因其中一个测试通过就宣称另一个已具备相同资格。新入口通过原凭据解析器建立子进程环境,再执行进程替换;安装和目录可见性均不授予工作权限。

安全修复选择兼容的上游 SDK,不增加全局 fetch hook 或第二套重定向策略。新传输回归从实际 DSH 依赖链解析 SDK,并进入既有 CI 和 canary 质量阶段。pnpm 9 与新版本确实使用不同配置投影,保留两份映射并用冻结矩阵核对比删掉兼容入口更稳妥。

具体改动

spec_ref:docs/integrations/deepseek-harness-control-plane-adapter.md;spec_revision:663ae88b8f112f73fb9de70947f871b10529c652。采用该版本已经接受的集成合同,未把本 PR 新写的说明反过来当成规范。按原章节逐项核对:

  • Authority Boundary:implemented。复用原机器凭据与内核 owner,不新增状态、绑定或执行权限。
  • Same-Session Driver:implemented。229 项插件测试覆盖未激活零 I/O、精确 Session 激活、替换和真实 CLI admission-to-closeout;安装本身不启动推进。
  • Failure And Privacy Boundaries:implemented。实际 CLI 验证参数与凭据路由,SDK 从实际宿主链解析;跨来源请求被拒绝,同来源 307/308 请求及 JSON-RPC 响应保持正常。
  • Validation And Removal:implemented。真实打包宿主、安装卸载、live-disable 和全包禁用验证共享 Web 存活,LoopX 路由退出。
  • ROOT-SELECTION:沿用既有凭据 owner 与先前评审 frame,而非伪造规范原编号。正常全局/子命令参数均保留选择;显式根目录缺少凭据时不退回另一份机器 store。

关键代码讲解

  1. register_dsh_launch_command(loopx/cli_commands/dsh_launch.py:17):重复 root 参数使用 SUPPRESS,避免缺省值覆盖全局显式输入;补齐 parser 泛型注解,不改变运行语义。
  2. resolve_dsh_launch(同文件 62 行):解析宿主、目录和 opaque argv,复用 operator_provider_environ,没有复制凭据优先级或另建存储。
  3. handle_dsh_launch_command(同文件 109 行):通过实际 exec 交接宿主;准备失败返回清晰退出码,启动器不把密钥放入 argv 或输出。DSH 自身仍负责其命令、日志和进程行为。
  4. 新 transport smoke(packages/dsh-loopx-plugin/smoke/dsh-mcp-transport-smoke.mjs:50):以两个纯本机服务器分别验证拒绝和合法请求,关闭资源;不是只检查版本字符串或 mock 一个安全返回值。

整个 PR 为 14 个文件,锁文件占主要行数变化。资格宿主使用 Cordis 4.0.5、MCP client 2.3.0 与 SDK 1.32.0,同时修复冻结图中发现的 fast-uri、source-map-js、Vitest 和 Vite 公告项。保留历史独立宿主 peer 范围,拒绝未资格的 stable 0.2.1。README 明确普通目录与隔离目录的差异,安装、读回、启动和移除使用同一份配置;无依据的 60/25/15 投入比例以及全局 self-repair 指令不再混入此 PR。

对主干的风险

上一轮根目录问题用历史缺陷源码和同一份新回归重新验证:旧头两项全局 root 断言失败、其余六项通过;最终头全部八项通过,与 provider 合计 23 项通过。缺少宿主也经普通 CLI 返回退出码 2。旧 SDK 2.2.0 会被同一真实传输 oracle 拒绝;当前 SDK 两个跨来源场景与两个同来源场景均通过。

当前冻结图 756 个包、772 个版本直接向 npm 官方安全接口复核,没有返回受影响项,旧版本阳性对照可以检出。此前配置镜像返回的空审计数据不作为资格依据。pnpm 9.15.9、10.33.0、12.10.1 在独立目录冻结通过,锁文件保持逐字节一致;未加漏洞 allowlist,也未删断言、放宽预算或改变评分来变绿。

插件类型检查、229 项测试、peer/artifact/profile、实际安装卸载及真实 DSH 运行资格通过;另用正常 loopx dsh-launch 承载同一份打包宿主回归,验证 bootstrap、Start/Pause、live-disable 后共享 Web 存活。这里一部分 LoopX 后端使用合成 CLI,另有独立的实际 CLI admission-to-closeout;没有模型调用。最初外置包装器的模块查找失败通过把相同包装器放入资格宿主的 bin 上下文修正,未改产品断言。

广泛导入 mypy 仍失败:完整、同环境的 immutable base/head 都是 5,144 条相同的源码行/错误详情多重集。新启动器自身的类型参数错误已经修复,scoped strict 检查通过;不声称全库类型干净。初次不完整 baseline 缺少 demo 导入,已补齐后重新执行,未用不匹配计数归因。可选 Python headless SDK 的 27 项因未配置独立 SDK/runtime 而跳过,不冒充 native 插件验证。

语义与 CI 对齐

当前策略 wait_for_ci=false,未获取、轮询或等待新 CI,不继承旧 CI 失败为本头结论。执行了完整受影响 DSH 三阶段资格,并以 quick premerge 补公共检查:6 项直接检查、4 项选中检查通过,14/14 文件公共边界扫描无命中,严格质量回执有效。未限定的本机全量 check 曾报告既有 Goal 迁移问题;源代码边界扫描沿用 premerge 的 registry-free owner,保留相同 14 条扫描路径,不把现有 Goal 健康问题伪装成此 PR 的代码扫描失败。没有改动其状态。

我的整体评价

这次交付的价值是可验证的宿主兼容、安全依赖资格和正确启动流程,判断为 goal_achieved,限于本次 proposal;不是完成整个 S4 或证明长期净收益。long_horizon=preserved:现有精确会话、配额、取消、恢复和单次结算职责保留;user_experience=improved:已配置机器凭据无需再次复制,目录/根目录选择不再静默偏移。

薄启动器复用现有凭据 owner,宿主兼容性与安全修复交给上游 SDK 和冻结依赖,不复制控制平面。 当前 PR 只交付 DSH 宿主资格、显式启动入口和同目录操作流程;全局 self-repair 指令变更及无依据的投入比例已移除。

已检查 GoalBar Client、服务与文档改动;没有渲染布局、样式或首屏变化,视觉评审不适用。 完整浏览器挂载和其他平台发布资格不由本次合成宿主验证证明。

实际插件页面布局代码没有变化;真实宿主和已服务 Client 的验证不冒充完整浏览器发布证据。独立安装的 DSH 不会被源码包的 overrides 自动修补,README 已明确其 owner 的升级边界。Windows、发布和真实模型效益不在本次资格声明中。复用既有词汇与状态 owner,无新的共享状态分类、迁移格式或强制推进规则。无剩余阻塞;可以在显式维护者授权及最终合并就绪读回后合并。

English verdict: APPROVE - 19dd662; the actual launcher/root regressions and DSH-selected patched MCP transport are verified. Full native qualification, 23 CLI/provider tests, 229 plugin tests, frozen pnpm matrix, official advisory control, strict CQR and risk-based premerge pass. Existing broad-import type debt and separate release/platform limits remain disclosed.

@huangruiteng
huangruiteng merged commit 831b6d3 into main Oct 23, 2026
36 of 45 checks passed
@huangruiteng
huangruiteng deleted the codex/free-agent-2-dsh-fast-host-20261023 branch October 23, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants