Repository navigation
fix(acp): spawn the real Qoder CLI behind its Windows launchers - #1101
Conversation
|
建议将修复点放到 Windows 的 Qoder 启动解析:解析到真实 CLI 后直接启动,让原来的 文件参数能解决常规路径下的 JSON 引号问题,但 直接返回文件路径 仍依赖“路径经过包装层保持原样”。Qoder 1.1.84 的官方 PowerShell dispatcher 明确允许再调用 npm 的 建议按以下范围实施:
这是一份待实施、待 Windows 验证的替代设计计划;尚未提交实现,也没有改动你的 PR 分支。 |
e986ea9 to
33dbfd6
Compare
|
已按建议改为 Windows 的 Qoder 启动解析,最新提交 8f0370a:
有一处实现比评审建议的方案更简单:连接前不额外运行 测试:qoder 模块 87 个用例(含真实 Node 环境下确认参数原样送达的用例),全量 lib 测试 6022 个通过;Windows 真机 1.1.84 实测 initialize 握手成功。模块没有按平台限制编译,unix 侧编译由 CI 覆盖。 |
On Windows the resolved `qoder` command is a cmd wrapper whose
dispatcher strips the quotes from the inline
`--settings {"mcp":{"lazyLoad":false}}` JSON before qodercli sees it,
so the ACP handshake dies ~1s in with `config_error`. Resolve the
wrapper to the program behind it by the rules the wrappers themselves
apply (official installer: QODER_CLI_BIN, PATH, user-install location;
npm: the package entry run by the shim's Node), and spawn that
directly so argv reaches the CLI whole. Version detection and
diagnostics probe that exact program; a wrapper codeg cannot place a
CLI behind is an error naming the wrapper, never a silent switch to
another installation.
33dbfd6 to
8f0370a
Compare
|
codeg work task |
Diagnostics for Qoder on Windows replaced the launcher row with the resolved program and dropped the resolver's error, so a failed resolution read "NOT RESOLVED" under a hint about the new-session check while the verdict still called the environment healthy. Keep the launcher row as it is for every npx agent, add a row naming the program behind it or the resolver's error, and report a failed resolution as installed_but_unresolved. Also correct two comments: the purpose line of npx_launch_extra_args, and the module note on how the npm wrappers differ from the official dispatcher.
|
codeg work task |
…unch test Homebrew's macOS node loads @rpath/libnode.dylib relative to its real location, so a copied binary fails to start under dyld. A symlink keeps that location; Windows still uses a self-contained copy.
This release adds support for Claude Fable 5.2, updates Codex and several other agents, and fixes Qoder failing to start on Windows and MiniMax questions not showing as cards. ## Improved - **Claude Code is updated to 2.1.321 with adapter 0.102.0**, so the Fable model is now Fable 5.2, and a saved Fable 5.1 selection through an API gateway switches to Fable 5.2 automatically instead of falling back to the default model. - **Codex is updated to adapter 2.6.0 (Codex 0.166.0)**, and its async questions now display as answer cards that stay in sync during the conversation and in history. - **Grok background sub-agents show live progress after the turn that launched them ends.** (#1109) - **Updated OpenCode to 2.2.6, CodeBuddy to 2.182.0, Qoder to 1.1.86, the ZCode bridge to 0.82.3 and Command Code to 1.88.5.** ## Fixed - **Qoder starts normally again on Windows**, and its diagnostics show the actual program being launched or the reason it could not be found. (#1101 by @leehom0123) - **MiniMax questions to the user appear as interactive question cards instead of raw JSON**, including each option's description. (#1111 by @xy3xy3) - **When a Codex conversation's model provider no longer matches, codeg shows a clear notice** instead of silently starting an empty session that loses the history. - **Reopened Claude Code context compaction summaries no longer include internal prompt text meant for the model.** - **OpenCode 2.2.6 conversation history displays its complete content.** Thanks to @leehom0123 (#1101) and @xy3xy3 (#1111) for their contributions, and to @momomomo820 (#1109) for the report. ----------------------------- # 发布版本 0.42.2 这一版支持 Claude Fable 5.2,更新 Codex 及多个智能体,并修复 Qoder 在 Windows 上无法启动、MiniMax 提问不弹出卡片等问题。 ## 改进 - **Claude Code 更新至 2.1.321,适配器更新至 0.102.0**,Fable 模型升级为 Fable 5.2,通过 API 网关使用时,已保存的 Fable 5.1 选择会自动切换到 Fable 5.2,不再回落到默认模型。 - **Codex 适配器更新至 2.6.0(Codex 0.166.0)**,异步提问会显示为答题卡片,会话中和历史记录里都能正确展示。 - **Grok 后台子智能体在启动它的回合结束后,仍会实时显示运行进度。**(#1109) - **OpenCode 更新至 2.2.6,CodeBuddy 更新至 2.182.0,Qoder 更新至 1.1.86,ZCode 桥接更新至 0.82.3,Command Code 更新至 1.88.5。** ## 修复 - **Qoder 在 Windows 上恢复正常启动**,诊断信息也会显示实际启动的程序或无法找到的原因。(#1101 by @leehom0123) - **MiniMax 向用户提问时会弹出可交互的提问卡片,不再只显示 JSON 参数**,并展示每个选项的说明。(#1111 by @xy3xy3) - **Codex 会话的模型供应商不再匹配时,会显示明确提示**,不再悄悄新开一个空会话导致历史丢失。 - **重新打开 Claude Code 的上下文压缩摘要时,不再显示写给模型的内部提示文本。** - **OpenCode 2.2.6 的历史会话能完整显示内容。** 感谢 @leehom0123(#1101)和 @xy3xy3(#1111)的贡献,以及 @momomomo820(#1109)的反馈。
What
Qoder 1.1.84 起,codeg 用内联参数
--settings '{"mcp":{"lazyLoad":false}}'关闭 MCP 懒加载(6fcb9ea8)。Windows 上qoder命令解析到安装器提供的 cmd wrapper,wrapper 会对命令行做二次解析,JSON 里的双引号在这一步被去掉;qodercli 收到{mcp:{lazyLoad:false}},判定无效 JSON 并以 config_error 退出,ACP 握手在 codeg 侧表现为Initialize failed: incoming transport closed。Fix
双引号只在 wrapper 的二次解析这一步被去掉,直接启动 wrapper 指向的真实程序,参数即可原样送达。新增
acp/qoder.rs,从已解析的 wrapper 出发找到真实程序,--settings保持内联:qoder-dispatcher.ps1自身的 Find-Cli 顺序解析:QODER_CLI_BIN → PATH 上的 qodercli → 用户安装位。package.json的bin.qodercli。版本探测与诊断和启动走同一份解析,探测到的与启动的必然是同一份安装。该解析只在 Windows 启用;unix 上 exec 把参数直接传给进程,本就没有重新解析,保持原有行为。
Verify
cmd /c qoder.cmd --acp --settings <json>→ config_error);改为直接启动后,initialize正常应答。