名称: gen-rust 描述: 通过审查最近更改、映射模块、移植逻辑和更新测试,将Rust实现与Python更改同步(排除UI和登录/认证)。
gen-rust
当用户希望Rust(kagent/kosong/kaos)在逻辑上与Python(kimi_cli/kosong/kaos)保持一致,排除UI和登录/认证时,使用此技能。这包括代码和测试:Rust行为和测试必须与Python更改完全同步。
注意:Rust二进制文件名为kagent。Rust中面向用户的CLI/输出文本必须使用kagent而不是kimi,以匹配Rust命令名称。
快速工作流
- 构建完整的更改清单
审查最近更改以了解需要同步的内容:
# 检查暂存更改
git diff --cached --name-only
git diff --cached -- src packages
# 检查最近提交
git log --oneline -20 -- src packages
git diff HEAD~20..HEAD -- src packages
# 审查CHANGELOG.md以获取上下文
head -50 CHANGELOG.md
- 分类更改
- 排除UI和登录/认证更改(Shell/Print/ACP UI,登录/注销命令)。
- 其他所有内容必须在Rust中镜像。
- 保持一个小清单:文件 -> 更改摘要 -> Rust目标 -> 状态。
- 映射 Python -> Rust
常见映射:
src/kimi_cli/llm.py->rust/kagent/src/llm.rssrc/kimi_cli/soul/*->rust/kagent/src/soul/*src/kimi_cli/tools/*->rust/kagent/src/tools/*src/kimi_cli/utils/*->rust/kagent/src/utils/*src/kimi_cli/wire/*->rust/kagent/src/wire/*packages/kosong/*->rust/kosong/*packages/kaos/*->rust/kaos/*
- 小心移植逻辑
- 精确匹配错误消息和工具输出文本(测试通常断言字符串)。
- 保留输出类型(文本与部分)和顺序。
- 对于媒体/工具输出,验证ContentPart包装和序列化。
- 如果Python添加了新辅助模块,镜像最小的Rust实用程序。
- 使用
rg查找现有类比和引用。
- 更新测试
- 更新断言内容/字符串/部分的Rust测试。
- 镜像Python单元和集成测试(当存在时);添加缺失的Rust测试,使覆盖率匹配意图。
- 确保E2E对等:通过设置
KIMI_E2E_WIRE_CMD,使用现有的Python E2E套件针对Rust二进制文件运行(不要在Rust中重写E2E)。所有E2E用例必须通过,否则必须记录差距。 - 首先优先进行有针对性的测试(
cargo test -p kagent --test <name>),然后如果需要,运行完整套件。
- 验证是强制性的
- 运行完整的Rust测试套件并确保所有Rust测试通过。
- 运行E2E测试,将wire命令替换为Rust(设置
KIMI_E2E_WIRE_CMD),并确保通过。
- 最终报告
- 列出同步的文件和逻辑。
- 指出故意跳过的UI/登录更改。
- 列出运行的测试和结果(必须包括完整的Rust测试和带有wire命令覆盖的Rust E2E)。
需要避免的陷阱
- 跳过
llm.py:它经常更改模型能力逻辑。 - 使用提交消息过滤而不是完整差异。
- 忘记在输出文本/部分更改时更新Rust测试。
- 将UI/登录更改混入核心同步。
- 留下测试对等模糊;始终说明单元/集成/E2E状态。
最小差异清单(模板)
- [ ] 最近更改已审查(暂存、提交、更改日志)
- [ ] Python差异已检查核心逻辑
- [ ] Rust映射已应用
- [ ] 测试已更新
- [ ] 有针对性的测试已运行
- [ ] 完整的Rust测试套件已通过
- [ ] Rust E2E已通过
KIMI_E2E_WIRE_CMD