Skip to content

feat: 新增支持在 uv 安装方式在 macOS 上运行,更新相关安装文档和README文档#203

Open
Rook1ex wants to merge 1 commit into
mainfrom
feature/jasin/dev_uv
Open

feat: 新增支持在 uv 安装方式在 macOS 上运行,更新相关安装文档和README文档#203
Rook1ex wants to merge 1 commit into
mainfrom
feature/jasin/dev_uv

Conversation

@Rook1ex

@Rook1ex Rook1ex commented Jul 17, 2026

Copy link
Copy Markdown
Contributor
  • 新增脚本支持在 uv 安装方式在 macOS 上运行
  • 更新相关安装文档和README文档

@CongkeChen

Copy link
Copy Markdown
Contributor

AI Code Review

审查完成。

发现的问题

⚠️ Warning

  • pyproject.toml:184:uv environments 限制为 python_full_version >= '3.11',但项目根 requires-python = ">=3.10" 且 classifiers 声明支持 3.10

    • 这会让任何使用 Python 3.10 的用户在执行 uv sync/uv venv 时直接报环境不满足并失败,与 pip 路径宣称的 3.10 支持产生冲突。注释解释仅针对 all extra 需要 3.11,但 environments 是全局约束,连仅装 core (uv sync) 的 3.10 用户也会被挡在外面。建议把 3.11 约束收敛到真正需要的 extra(或用 environment markers),或在文档明确 uv 路径仅支持 3.11+,避免误导 3.10 用户。
  • build_mac_uv.sh:26(对应 diff 新增行 uv sync --extra dev ${EXTRA_ARGS...}):EXTRAS 通过未加引号的 for e in ${EXTRAS:-} 做词法拆分,未校验取值

    • 当用户传入 EXTRAS="all" 时会触发 nanobot-ai>=0.1.4.post6 等 3.11+ 依赖,而该 extra 名在脚本注释/文档示例中并未出现,可能误用导致解析失败;且任意 token 会被原样拼成 --extra <token> 传给 uv。属于命令构造层面风险较低(uv 自校验),但缺少对未知 extra 名的提示。建议至少在文档示例中说明可用的 extra,或对 all 做 3.11 提示。

💡 Suggestion

  • README.md:107This project alos provides 存在拼写错误(alosalso),且该行使用了中文全角冒号 ,与同文件其他英文段落风格不一致。建议修正拼写并统一为半角冒号。

  • README.md:117EXTRAS="a2a knowledge" bash build_mac_uv.sh 代码块与上一段 ### Develop Weather Agent 之间缺少空行分隔,部分 Markdown 渲染器会把标题紧贴代码块。建议在标题前补一个空行。

总结

整体为文档与安装脚本新增,风险较低;主要问题是 uv 全局 environments 限制与项目 requires-python>=3.10 声明不一致,可能在 Python 3.10 上阻塞 uv 安装路径,建议修复。无安全或核心功能级 Critical 问题。

测试建议

  • 建议在 Python 3.10 与 3.11 两个版本下各跑一次 bash build_mac_uv.sh(含 EXTRAS="a2a knowledge" 与不传两种情况),验证 environments 约束与脚本路径的实际行为是否符合文档描述。

@Rook1ex
Rook1ex force-pushed the feature/jasin/dev_uv branch from 790e5dd to 5664f45 Compare July 17, 2026 10:14
@Rook1ex

Rook1ex commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

AI Code Review

审查完成。

发现的问题

⚠️ Warning

  • pyproject.toml:184:uv environments 限制为 python_full_version >= '3.11',但项目根 requires-python = ">=3.10" 且 classifiers 声明支持 3.10

    • 这会让任何使用 Python 3.10 的用户在执行 uv sync/uv venv 时直接报环境不满足并失败,与 pip 路径宣称的 3.10 支持产生冲突。注释解释仅针对 all extra 需要 3.11,但 environments 是全局约束,连仅装 core (uv sync) 的 3.10 用户也会被挡在外面。建议把 3.11 约束收敛到真正需要的 extra(或用 environment markers),或在文档明确 uv 路径仅支持 3.11+,避免误导 3.10 用户。
  • build_mac_uv.sh:26(对应 diff 新增行 uv sync --extra dev ${EXTRA_ARGS...}):EXTRAS 通过未加引号的 for e in ${EXTRAS:-} 做词法拆分,未校验取值

    • 当用户传入 EXTRAS="all" 时会触发 nanobot-ai>=0.1.4.post6 等 3.11+ 依赖,而该 extra 名在脚本注释/文档示例中并未出现,可能误用导致解析失败;且任意 token 会被原样拼成 --extra <token> 传给 uv。属于命令构造层面风险较低(uv 自校验),但缺少对未知 extra 名的提示。建议至少在文档示例中说明可用的 extra,或对 all 做 3.11 提示。

💡 Suggestion

  • README.md:107This project alos provides 存在拼写错误(alosalso),且该行使用了中文全角冒号 ,与同文件其他英文段落风格不一致。建议修正拼写并统一为半角冒号。
  • README.md:117EXTRAS="a2a knowledge" bash build_mac_uv.sh 代码块与上一段 ### Develop Weather Agent 之间缺少空行分隔,部分 Markdown 渲染器会把标题紧贴代码块。建议在标题前补一个空行。

总结

整体为文档与安装脚本新增,风险较低;主要问题是 uv 全局 environments 限制与项目 requires-python>=3.10 声明不一致,可能在 Python 3.10 上阻塞 uv 安装路径,建议修复。无安全或核心功能级 Critical 问题。

测试建议

  • 建议在 Python 3.10 与 3.11 两个版本下各跑一次 bash build_mac_uv.sh(含 EXTRAS="a2a knowledge" 与不传两种情况),验证 environments 约束与脚本路径的实际行为是否符合文档描述。
  • 目前已完全支持Python 3.10,3.11,3.12;例子已测试成功
  • 改正文档typo

@CongkeChen

Copy link
Copy Markdown
Contributor

AI Code Review

基于对 pr.diff 及仓库上下文(pyproject.tomlbuild_mac.shopenclaw 源码、文档)的审查,结论如下。

发现的问题

⚠️ Warning

  • build_mac_uv.sh:24EXTRAS 未做白名单校验直接拼接到 uv sync --extra "$e",存在参数注入风险

    • EXTRAS 来自调用方环境变量,脚本对其做未加引号的 word splitting 后逐项传入 --extra。虽然 uv 对 extra 名称有约束、且 set -euo pipefail 下非法 extra 会直接报错退出,但 extra 名仍可携带 shell 在本层不再解释的内容。更现实的影响是:传入不存在的 extra(如笔误)会被 uv 当作"找不到的 optional dependency"直接失败而非跳过,与文档"按需追加可选扩展"的宽松语义不一致。建议校验 $e 是否在 pyproject.toml 已定义的 extra 列表内,或至少用 [[ "$e" =~ ^[a-zA-Z0-9_-]+$ ]] 做格式过滤。
  • pyproject.toml:154 / pyproject.toml:69allopenclaw 中的 nanobot-ai 版本下限不一致(post6 vs post5),且都新增了 python_full_version >= '3.11' marker

    • 同一依赖在两个 extra 里下限不同,pip install '.[all,openclaw]' 时解析器会取交集 >=0.1.4.post6,本身不报错,但两处维护易漂移。更需注意的是:openclaw 模块源码(trpc_agent_sdk/server/openclaw/_utils.py:12ui.py:30 等)在模块顶层无条件 from nanobot...import,而 marker 使 Python 3.10 下 nanobot-ai 不再被安装——此时 requires-python = ">=3.10"pyproject.toml:13)仍允许 3.10 安装 openclaw extra,运行时导入会直接 ModuleNotFoundError。文档已把 openclaw 改为 >=3.11docs/mkdocs/en/openclaw.md:47),但包元数据未对齐,3.10 用户会得到一个装得上、跑不起的 openclaw。建议要么在 openclaw extra 整体加 python_requires 级约束,要么文档/requires-python 明确 openclaw 不支持 3.10。

💡 Suggestion

  • build_mac_uv.sh:22curl -LsSf https://astral.sh/uv/install.sh | sh 与现有 build_mac.sh 风格一致,但脚本未对下载内容做校验(如 --no-modify-path 或签名校验)。作为开发者本地脚本风险可控,可考虑加 --no-modify-path 避免静默修改用户 shell 配置。

总结

整体为文档+构建脚本的兼容性增强变更,无 Critical 阻塞问题。主要风险在 nanobot-ai 新增 Python 版本 marker 后,openclaw extra 的运行时导入与 requires-python>=3.10 存在不一致,3.10 用户会装得上但无法导入;以及 EXTRAS 缺少白名单校验。

测试建议

  • 补充在 Python 3.10 环境下 pip install -e '.[openclaw]'python -c "from trpc_agent_sdk.server.openclaw import _utils" 的导入行为测试,确认是明确报错还是被 marker 跳过。
  • build_mac_uv.sh 增加 EXTRAS 传入非法值/空值/合法多值的用例,验证 word splitting 与失败语义符合预期。

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.

2 participants