AI 驱动的命令行工具开发与智能 Agent 构建:先收紧输入、状态与退出边界

发布时间:2026/8/11 15:20:24
AI 驱动的命令行工具开发与智能 Agent 构建:先收紧输入、状态与退出边界 AI 驱动的命令行工具开发与智能 Agent 构建先收紧输入、状态与退出边界我刚开始做 Rust 命令行工具时总想把检索、规划、自动执行都塞进第一版。后来发现连一条报错能不能被稳定解释清楚都还没验证功能越多越难查问题。我现在给第一版留一个小闭环用户主动粘贴一段已经脱敏的编译错误工具只把这段文本和固定问题模板交给模型模型只返回建议的下一步和原因最后由人确认是否执行本地命令。它不读取整个仓库不自动修改文件也不把日志上传到模型以外的地方。graph LR Input[脱敏后的错误片段] -- Prompt[固定问题模板] Prompt -- Model[模型返回建议] Model -- Review[人工核对] Review --|确认| Command[执行白名单命令] Review --|拒绝| Stop[结束]一个先能跑通的边界下面的例子没有接模型而是把“建议”和“执行”分开。这样我可以先验证输入校验和命令白名单再决定是否接入外部服务。use anyhow::{bail, Result}; struct Suggestion { command: static str, reason: static str, } fn suggest_next_step(error: str) - ResultSuggestion { if error.trim().is_empty() { bail!(请提供已脱敏的错误片段); } Ok(Suggestion { command: cargo check --tests, reason: 先确认测试目标能否通过类型检查, }) } fn main() - Result() { let suggestion suggest_next_step(error[E0308]: mismatched types)?; println!(建议{}\n原因{}, suggestion.command, suggestion.reason); // 真正执行前仍应显示命令并等待用户确认。 Ok(()) }我会先检查什么输入只保留复现问题需要的几行删除路径、账号、令牌和业务数据。模型输出只能是结构化建议不能直接获得 shell、文件或网络权限。人工会在本地复现并阅读 diff模型说得通不等于代码就是对的。如果问题需要完整上下文、涉及敏感项目或者无法脱敏我宁愿不用 AI先用cargo check、文档和最小复现排查。第一版能把边界守住就够了。后面的能力要等到这条链路有测试、有失败记录以后再加。