Repository navigation
1.2.2
版本 1.2.2
发布日期: 2026 年 10 月 12 日
概述
1.2.2 进一步完善微信、企业微信与本地 CLI 之间的交互:新增 /lang 实时语言切换,支持远程回答 Claude Code 的结构化问题,并将审批统一为逐项处理。本版本同时修复 OpenCode 和 Codex 的子代理事件干扰父任务、OpenCode 2 表单答案提交错误,以及 Pi 错误信息丢失和中断状态不准确等问题。
新功能
通过 /lang 切换提示语言
微信和企业微信的直接启动模式与 daemon 模式均支持以下指令;本地测试通道沿用相同的命令规则:
| 指令 | 功能 |
|---|---|
/lang |
查看当前语言及切换方式 |
/lang zh |
切换为中文 |
/lang en |
切换为英文 |
/language是/lang的别名;语言参数也接受chinese、english、中文和英文。无效参数会返回使用说明,不会作为 prompt 发送给模型。- 语言切换立即生效,daemon 会同步更新所有已连接 companion 的 bridge 提示,后续启动的 CLI 也会继承当前语言。没有活动 CLI、任务正在运行或等待审批、回答时,也可以切换语言。
- 语言偏好保存至活动数据目录的
language.json,默认路径为~/.cli-bridge/language.json。启动优先级为:有效的CLI_BRIDGE_LANG> 保存的偏好 > 中文。其他独立运行的 bridge 进程在下次启动时读取保存值。 - 模型与计划模式控制、审批、问答、会话切换、状态查询,以及忙碌和等待输入等提示均补充了中英文文案。该设置控制 bridge 自身的提示;模型回复、原始题目与选项、原生 CLI 界面及上游错误文本保留原样。
远程回答 Claude Code 的结构化问题
Claude Code 的 AskUserQuestion 现在支持在微信或企业微信中回答,包含单选、多选、自定义答案,以及选项的说明和文字预览。
单题可使用 /answer 1 选择选项,或使用 /answer <自定义文本> 提交自定义答案;多题需要一次提交全部答案,例如:
/answer 1=Yes;2=2;3=1,2;4=Custom layout
题号用于指定问题,选项编号或原始标签用于选择答案,多选以逗号分隔。答案通过 Claude hook 回传,保留原始题目和工具输入;AskUserQuestion 不再被通用自动审批直接放行而遗漏答案。
连续提问按顺序显示。本地完成回答、执行 /stop 或 /reset、session 结束时,会清除对应请求。hook 超时或断开连接后会移除远程问题,并提示在本地 Claude 终端继续作答,或使用 /stop 中断任务。答案写入失败时保留当前问题供重试;请求失效后,迟到的写入结果不会恢复旧状态或覆盖新的问题。
本地测试通道与 E2E runner
新增 local 通道,通过 JSONL inbox 接收入站消息,并将出站消息写入 transcript。消息沿用 daemon 的命令解析、任务调度和回复流程,测试无需微信登录或企业微信 Bot 凭据。
仓库新增 npm run e2e,通过 PTY host 启动真实 CLI,并提供只读终端镜像观察 TUI。场景包括:
- 远程发送 prompt 并接收最终回复;
- 本地终端输入的同步与回复;
/resume列表查询和实际切换到另一 session;- 恢复 session 后的远程输入和本地终端输入;
/model模型切换,以及/plan开启和退出。
runner 支持选择测试场景、保留诊断输出和关闭终端镜像。当前完整场景以 Claude Code 为主;执行时会调用真实模型,需要可用的 CLI 和模型访问配置。请在停止日常 bridge / daemon 后,于测试环境中运行。
行为改进
审批逐项处理,并与本地终端同步
Codex、Claude Code 和 OpenCode 按顺序维护待审批请求。daemon 模式下的 /confirm、/deny 由批量处理改为每次只处理当前显示的一项,完成后显示下一项;直接启动模式采用相同规则。
- 本地终端已经批准或拒绝的请求会从远程待审批列表中移除。
- 审批根据请求 ID 校验;重复通知和迟到事件不会恢复已结束的请求,失效的审批请求不能再次提交。
- 审批提交失败时保留当前请求,允许重试;并发提交不会重复写入同一审批。
- Codex 和 OpenCode 支持将所属子代理及嵌套子代理的权限请求交给父任务处理,保持原有回复目标。
子代理事件不再干扰父任务
- OpenCode: 子代理创建 session、更新状态或输出内容时,不再被误判为用户在 TUI 中切换了 session,避免父任务被中断、最终回复遗漏或后续输入发往错误 session。本地 TUI 中显式切换或新建 session 仍会同步到 bridge。
- Codex: 在根据事件跟随本地 session 时,识别 subagent thread 和 ephemeral thread;后续仅携带 thread ID 的状态或 turn 事件不会自动替换父任务或引发错误的 session 切换。
CLI 兼容性与自动化检查
- Codex 已验证范围从
0.149.x–0.157.x扩展至0.149.x–0.161.x。 - 每周兼容性检查继续覆盖 OpenCode 1.18 与 OpenCode 2,并明确允许上游 CLI 必需的安装脚本。
- Codex 检查覆盖 bridge 使用的 schema 字段和
--remote;Claude Code 检查--settings和--resume;Pi 检查实际加载 bridge extension 后的 session 状态和模型列表 IPC。 - OpenCode HTTP 健康探测校验响应内容,单次请求及响应体读取的超时为 3 秒,整个探测的等待上限为 30 秒,避免启动时序问题使检查长时间挂起。
兼容性检查不调用模型;它验证接口和运行能力,不等同于完整对话验收。
问题修复
- OpenCode 2 表单答案: 单选、多选将展示的
label转换回实际value,修复二者不一致时提交错误答案的问题。继续支持自定义文本、布尔值和整数表单字段。 - Pi 错误反馈: provider 返回错误但未生成回复正文时,仍会将错误信息传回 bridge,避免任务无声结束。
- Pi 中断状态: 保留
agent_settled的aborted标记,正确标记中断结果,保留已有部分回复并清理当前任务状态,使下一条请求可以继续执行;兼容缺少该标记的旧事件。 - Claude Code 原生控制: 自动上下文标记和建议占位文本不再被误判为输入草稿,修复新启动的 session 无法使用远程
/model、/plan的问题。真正未提交的草稿仍会阻止远程控制。 - Claude Code 权限通知: 不再复用此前自动批准的命令来生成当前审批提示。没有远程审批 hook 的本地权限弹窗会提示用户在终端处理。
- 提示文本插值: 参数中的
$和形如{name}的文本按字面保留,避免模型名称、路径或提示内容被错误替换。 - 中文状态与排队重试: Codex 延迟队列继续识别中文的忙碌、待审批和等待本地输入状态,保留相应请求供后续重试。
- 源码启动与 Node.js 22.13: 修复微信 driver 中不兼容 Node strip-types 模式的 TypeScript 语法,恢复源码 daemon 启动;Claude hook 子进程测试显式启用
--experimental-strip-types,修复 Node 22.13.0 的 CI 失败。 - README 展示: 增加 AtomGit 镜像入口,修复 typing SVG 参数和徽章布局在不同托管平台上的渲染问题。
升级与兼容性说明
安装与重启
Node.js 最低版本保持 22.13.0;Pi 需要 22.19.0 或更新版本。已有数据无需迁移,现有启动命令继续可用。
升级主包:
npm install -g cli-wechat-bridge@1.2.2使用旧作用域包名的用户可以继续升级:
npm install -g @unlinearity/cli-wechat-bridge@1.2.2升级后请重启正在运行的 bridge、daemon 和可见 CLI,使新的 hook、审批请求标识和语言同步逻辑生效。旧 companion 可以继续显示状态,但远程审批需要重启后才能使用;无法实时更新语言的 companion 会返回重启提示。加载新版本后,后续 /lang 切换无需重启。
语言偏好及启动环境变量的说明见界面语言配置。
权限默认值与适用范围
Claude Code 的 bridge 启动设置默认添加 WebFetch(domain:*) 规则。设置 CLI_BRIDGE_STRICT_APPROVAL=1 可移除该规则,并关闭 Codex / Claude 的 bridge 自动审批;已有 deny 规则和沙箱限制继续生效。
Claude 沙箱网络弹窗如果没有触发 PermissionRequest hook,仍需在本地终端处理。Pi 不增加 bridge 工具审批层;其 --approve 用于信任项目配置、扩展和本地文件,不是逐项工具审批开关。
发布验证
- 质量检查:
npm run quality通过,包含 lint、严格源码类型检查、Node 24 上的 813 项测试和构建;Node 22.13.0 上的完整 813 项测试同样通过。 - 依赖与打包: 冻结锁文件安装通过;npm 包共 101 个文件,包含 14 个可执行命令入口、
dist/、README.md和LICENSE.txt,不包含源码、测试、运行状态、日志或node_modules/。 - 全局安装:
npm run smoke:global -- --purge-global --clean-cache --full通过,验证真实 tarball 安装、仓库外命令调用及完整质量检查。 - CLI 能力: 四个 CLI 的能力检查通过,分别验证 OpenCode 1.18 和 2;Pi 实际加载 bridge extension 并完成模型列表 IPC。
- 本地消息收发: 全局安装的 1.2.2 编译版本通过
/lang切换、偏好保存、无效参数和授权检查。 - 发布预检: 主包
npm publish --dry-run --access public和双包npm run publish:dual -- --dry-run均通过。
上述验证覆盖自动化回归、真实 CLI 接口探测与本地消息收发。微信、企业微信的线上投递,以及各 adapter 使用真实模型的完整对话流程,仍需分别验收。
Full Changelog: 1.2.1...1.2.2