新功能 | New Features
- **Rate-limit (TokenBucket)**: 双桶(RPM + TPM)限流器接入 LLMClient/agno_factory,避免有并发上限的模型套餐撞 429;默认 max_concurrent 30→4;OpenAI / DeepSeek / vLLM 三 provider 兼容;ADR-0001 写明 DIY 而非 litellm 的选型。Closes 31, 32. (PR 36)
- TokenBucket dual-bucket (RPM + TPM) rate limiter wired through LLMClient/agno_factory to avoid 429s on metered provider plans; max_concurrent default 30→4; provider compat tested across OpenAI / DeepSeek / vLLM; ADR-0001 documents the DIY choice over litellm.
- **Team mode 重连身份保持**: client 重连时把本地 `team_client.json` 里的 client_id 一起 POST 给 /register,server 三级续用(claimed_client_id → (hostname, label) 指纹 → 新发 uuid),消除重连即换身份导致 canary/历史归属/staging 断链的漏洞。(PR 37)
- Team-mode reconnect now preserves identity: client POSTs its existing client_id on /register; server resolves via 3-tier priority (claimed → fingerprint → new uuid). Fixes the regression where reconnect silently dropped canary bucket / trajectory history / user-staging branches.
- **Cluster 政策修订 + 重试 + 去重 + 可观测性**: 禁 silent drop(每个 atom 必 add_task_to_skill,含 ws=1);partial-fail 重试 3 次封顶;调 cluster_agent 前 atom-id 去重,已落地的 atom 不再重投 LLM;per-atom `atom → skill ws=N` 日志 + drop 走 WARNING + 总结行三个数。(PR 38)
- Cluster policy revision: forbids silent drop (every atom must add_task_to_skill, including ws=1); partial-fail retry up to 3; atom_id-level dedup before re-clustering; per-atom log + summary line.
- **通用 install copy + reverse_sync 框架**: `install_dir` 加 install-meta + `_is_link_or_junction` helper(Windows 查 `FILE_ATTRIBUTE_REPARSE_POINT`)+ auto_reset 钩子;`reverse_sync_openclaw_dest` 泛化为 `reverse_sync_copy_dest`;ngagent 改强制 copy + reverse_sync(Closes 34);openclaw junction-aware rmtree(Closes 35)。(PR 39)
- Generic copy + reverse_sync install framework: install_dir gains install-meta + _is_link_or_junction helper + auto_reset hook; reverse_sync_openclaw_dest generalized to reverse_sync_copy_dest; ngagent forced to copy mode + reverse_sync (Closes 34); openclaw junction-aware rmtree (Closes 35).
备注 | Note
CI release workflow 的 publish step 受限于 `pypa/gh-action-pypi-publishrelease/v1` 的 OIDC 要求,本次仍走本地手动 build + twine 发版。后续 PR 会修 release.yml(加 `id-token: write` 权限 + PyPI Trusted Publisher 配置)。
The CI release workflow's publish step still fails due to OIDC requirements in `pypa/gh-action-pypi-publishrelease/v1`; published manually via local build + twine. A follow-up PR will fix release.yml (add `id-token: write` permission + PyPI Trusted Publisher setup).