Repository navigation
v1.4.1
RxyCode v1.4.1 — CLI 维护版本
发布日期:2026-10-07。上一版本:v1.4.0。
本次发布 CLI / OpenTUI,唯一分发资源为 rxycode-1.4.1.tar.gz。
不发布 wheel 或新的 Electron Desktop 安装包。源码中的 Desktop 元数据同步
为 1.4.1,不代表发布了新的桌面二进制。
这次改了什么
可选 OS 沙箱与 Windows venv 修复
新增 core/sandbox/:Windows 使用 Job Object 限制内存、进程数并在关闭 Job
时清理进程树;Linux 使用 bubblewrap;macOS 使用 Seatbelt sandbox-exec。
配置位于 execution.os_sandbox,默认关闭,Docker 路线不叠加此沙箱。
Windows 生产 shell 路线在 spawn 前建立 Job,以 CREATE_SUSPENDED 创建
进程,绑定 Job 后才恢复主线程。它修复了“进程先跑再绑定”的子孙漏管竞态,
也避免 Python venv launcher 自建 Job 后再跨层重归属导致的拒绝访问。
绑定失败时拒绝执行并清理挂起进程,不静默放行。
边界:Job Object 是资源与进程生命周期控制,不等于文件系统或网络隔离。
Windows 上不能执行的 read-only、网络或 deny-glob 约束,根据配置 fail closed
或显式降级;受限令牌原语不等于已接入完整异步执行链。
MCP、Playwright 和 GUI 子进程不在本次覆盖范围;文件工具仍走现有权限闸。
Linux/macOS 原生沙箱执行未在 Windows 发布主机上验证。
日志保留与连接恢复
- 日志使用带时间戳的文件名,默认保留 72 小时;
RXYCODE_LOG_RETENTION_HOURS可覆盖。清理根据文件名时间戳,不依赖 mtime。 - 默认瞬态模型连接最多重试 7 次,退避从 2 秒递增,封顶 128 秒并带抖动。
移除旧配置中的固定 5 次覆盖;已有本地覆盖配置仍有效。 - 同一逻辑工具回合里的传输重试不再重复计入外层熔断器,避免一轮弱网络请求
提前打满失败阈值。永久错误不会因本次修改变成可重试错误。
会话、终端与开发任务可靠性
- 打开会话列表时发现 appserver 已退出,会重新启动而非显示空列表。
- stalled-job 降级后能继续接纳新会话。
- 修复 Windows 鼠标跟踪、会话列表点击事件时机与滚轮影响输入框光标的问题。
- 开发任务在尚未产生要求的文件时,不会因模型过早输出“最终结果”直接结束。
- Responses 拉流抛错按失败处理,不伪装成正常流结束。
- 废弃路线保留带原因的标注:旧 DSML 解析、history、LSP 和旧 scheduler。
/loop的 OpenTUI 权威仍是 appserver ScheduleService,不新增第二套调度器。
版本与兼容性
产品版本统一为 1.4.1:Python 元数据、console/module 入口、安装脚本、
OpenTUI/Ink 标题、前端包与锁文件、MCP 客户端标识、appserver 和 runtime manifest。
JSON-RPC 保持 1.1.0;MCP 协议版本不变。Python 导入路径
RxyCode.RxyCode1_1_0 是稳定命名空间,不随补丁版本重命名。
schema 的产品版本默认值与 runtime 摘要同步,并增加版本一致性回归测试。
旧版发布说明、历史 changelog 和旧 Desktop 资源名称保留原版本。
安装或升级
Windows PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/xin-yi33/RxyCode/v1.4.1/install.ps1 | iex"macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/xin-yi33/RxyCode/v1.4.1/install.sh | sh已安装 uv:
uv tool install --force "git+https://github.com/xin-yi33/RxyCode.git@v1.4.1"
rxycode --version
rxycode或下载本页 rxycode-1.4.1.tar.gz 后安装:
python -m pip install --upgrade rxycode-1.4.1.tar.gzCLI 包不含 Electron。不要把 rxycode gui 当作本版本安装后的桌面启动保证。
运行环境与备用入口见 Quickstart。
验证记录
发布前在 Windows 主机独立重跑:沙箱、真实 venv shell、取消契约、Agent 主链、
文档依赖与会话 catalog,共 78 passed / 6 skipped(19.93 秒)。六项跳过仅
对应本地被 Git 忽略且缺失或为空的计划文档,不代表运行时能力通过。
其余独立发布检查如下;各行有重复覆盖,不把它们相加冒充唯一测试数量:
| 检查范围 | 本轮结果 |
|---|---|
| appserver / bridge / cache / core | 8,270 passed / 4 skipped,177.21 秒 |
| integration / contract / unit / log / providers / tools | 2,808 passed,165.63 秒 |
| 其余非 live / 非 PTY / 非 serial 模块(干净 checkout) | 2,169 passed / 26 skipped,76.40 秒 |
| system(干净 checkout,含 wheel/sdist 安装) | 8 passed,12.57 秒 |
| serial(干净 checkout,标准命名空间目录布局) | 8 passed,25.36 秒 |
| 安装树的真实 venv Python 经生产 ShellExecutor + Windows Job 执行 | 3/3 成功;实际模块来自 venv 的 site-packages |
| 版本 / 安装器 / frozen schema 专项 | 37 passed,6.97 秒 |
| OpenTUI | 303 passed;TypeScript typecheck 通过 |
| Ink 回退 | 1,502 passed;typecheck + 构建通过 |
| protocol-client | 29 passed;codegen + typecheck 通过 |
| 全库 ruff / 凭据扫描 / eval 定义 / 中英文 README 同步 | 全部通过;22 个 eval 定义无问题 |
| 懒导入预算 | 179 < 181,没有提高预算 |
| 发布源码包 | python -m build --sdist --no-isolation 与 twine check 通过 |
首轮 serial 在扁平 D:\\临时目录 下触发测试自身的 project_root.parents[1]
目录层级假设,在调用生产 API 前就失败。换成标准
.../RxyCode/RxyCode1_1_0 布局后,干净源码的 system 和 serial 全部通过;
没有通过扩大超时或修改生产代码绕过该失败。这一测试的路径可移植性限制仍存在。
30 项 skipped 出现在核心与其余模块两组:26 项是被 Git 忽略的开发计划文档
检查,另 4 项是既有缓存条件或未启用真实 Provider 的检查。未运行的 live/PTY
测试、跨平台原生沙箱安全验收和新 Desktop 发布均不列作已通过。
可复现的后端门禁(从 checkout 根执行,临时路径须在 workspace 外):
python -m pytest tests/test_appserver tests/test_bridge tests/test_cache tests/test_core -m "not live and not pty and not serial" -n 2 --dist loadscope -q
python -m pytest tests/integration tests/contract tests/unit tests/test_log tests/test_providers tests/test_tools -m "not live and not pty and not serial" -n 2 --dist loadscope -q
python -m pytest tests/system -q
python -m pytest tests -m "serial and not live and not pty" -n 0 -q
python scripts/count_lazy_imports.py --budget 181
python scripts/scan_secrets.py .GitHub Release 工作流在 Linux/Windows 分发安装冒烟通过后才上传源码包。
原始 JUnit 放在本机未跟踪的 artifacts/v141-release-*.xml,不进入分发包。
实现阶段的完整修复原因和复跑记录见
CHANGELOG_v1.4.1.md,概要见 根 CHANGELOG。
发布后 CI 补充
Linux 全量 CI 发现 Windows 原生测试模块在 skip 前导入 ctypes.windll,导致测试收集错误。12,053 项运行测试通过,但两次模块收集报错,因此初次完整 CI 为失败,不能标记全绿。该测试导入顺序已在 master 修复,并补充独立子进程回归;本机相关沙箱套件 56 项通过。已发布 CLI 包不包含 tests,分发安装与运行内容未改变。公开 v1.4.1 标签保持不变;修复后的完整 CI 以 master 最新提交的结果为准。
后续复验(2026-10-08):master 修复提交 9c4daccf 的完整 CI已全绿:Linux Python 3.11/3.12、Windows 契约与真实 ConPTY、OpenTUI、protocol-client、ruff 全部通过。此处指修复后 master 的 CI,不将首次 tag CI 的失败改写为通过。已发布源码包 SHA-256:127714dc0ab641455b30089ad592772d6e22ea212c7fd9cb803b08a3058bfe13;下载后本机重新安装、版本入口与真实 venv Job-bound shell 均通过。