新闻详情

新闻详情

首页 / 资讯中心 / 详情

forgecode Followup 工具深度解析:AI 结对编程中的澄清追问与多选交互机制

发布时间:2026/9/28 13:03:09来源:尧图网络
forgecode Followup 工具深度解析:AI 结对编程中的澄清追问与多选交互机制
人工智能AI Agent代码智能体AI 应用CLI开发工具【免费下载链接】forgecodeAI enabled pair programmer for Claude, GPT, O Series, Grok, Deepseek, Gemini and 300 models项目地址https://gitcode.com/gh_mirrors/forge39/forgecode点击查看免费下载本文以 forgecode 仓库中 followup.md 的定义为核心系统讲解 Followup追问工具的设计意图、输入协议、三种交互模式、底层实现与结果回流机制。读完本文你将掌握该工具在 Agent 工作流中的完整调用链路理解如何利用它在信息不充分时向用户发起单选项、多选项或自由文本澄清从而写出更精准、更低往返成本的 Agent 提示与工具调用。Followup 工具是什么在 AI 结对编程场景中模型面对模糊需求或缺少关键信息时与其猜测并执行错误操作不如主动向用户提问。forgecode 的 Followup 工具正是为此设计的专用通道其官方描述原文如下Use this tool when you encounter ambiguities, need clarification, or require more details to proceed effectively. Use this tool judiciously to maintain a balance between gathering necessary information and avoiding excessive back-and-forth.这段描述传达了两个核心设计原则适用场景明确当遇到歧义ambiguities、需要澄清clarification或需要更多细节more details以继续有效工作时才调用它即“信息不足先问再动”。强调克制使用judiciously追问本身会产生一次额外的用户交互往返back-and-forth因此要平衡“收集必要信息”与“避免过多往返”之间的关系能基于上下文合理推断的问题不必反复追问。该描述通过#[tool_description_file crates/forge_domain/src/tools/descriptions/followup.md]宏挂载到Followup输入结构体上见 catalog.rs会随工具定义一起注入模型上下文成为模型决定“何时该问、怎么问”的行为依据。输入协议question、multiple 与 option1option5Followup 工具的输入由Followup结构体定义catalog.rs字段如下字段类型是否必填说明questionString必填要向用户提出的问题multipleOptionbool可选为true时允许多选为false默认时只能单选option1OptionString可选候选选项 1option2OptionString可选候选选项 2option3OptionString可选候选选项 3option4OptionString可选候选选项 4option5OptionString可选候选选项 5从实现细节看question是唯一必填字段multiple与五个选项均标注#[serde(skip_serializing_if Option::is_none)]未提供时不会出现在序列化 JSON 中保持传输负载精简。一个典型的单选调用示例如下{ question: Which file would you like to edit?, option1: src/main.rs, option2: src/lib.rs, option3: tests/integration.rs }一个典型的多选调用示例如下{ question: Which modules should be covered by the new tests?, multiple: true, option1: auth, option2: billing, option3: notifications }三种交互模式的决策逻辑Followup提交后参数会先经 tool_executor.rs 汇聚option1option5通过chain依次收集为VecString连同question、multiple一起交给FollowUpService::follow_up服务。真正的交互决策在 followup.rs 中完成逻辑可概括为match (options.is_empty(), multiple.unwrap_or_default()) { (true, _) 自由文本输入prompt_question (false, true) 多选select_many (false, false) 单选select_one }三种模式的行为与结果格式无选项自由输入options为空时无论multiple取何值都会弹出自由文本输入框让用户直接键入回答返回用户输入的原文。单选提供选项且multiple为false或未提供时弹出单选菜单返回User selected: {selected}格式的字符串。多选提供选项且multiple为true时弹出多选菜单返回User selected N option(s): {option_a}, {option_b}格式的字符串N 为用户实际勾选的数量。需要特别注意的是当options为空时multiple参数不产生任何作用对应(true, _)分支这也是结构体注释中“默认单选、多选需显式开启”这一约定在服务端的落地。底层 UI 实现ForgeWidget 与阻塞线程调度交互式追问的界面层位于 forge_infra/src/inquire.rs通过ForgeInquire实现UserInfratrait 的三个方法prompt_question调用ForgeWidget::input(question).allow_empty(true)渲染自由文本输入框并允许空输入select_one调用ForgeWidget::select(message, options)渲染单选列表选项为空时直接返回Noneselect_many调用ForgeWidget::multi_select(message, options)渲染多选列表同样在选项为空时返回None。这些交互都通过spawn_blocking在阻塞线程池中执行ForgeInquire内部将闭包交给tokio::task::spawn_blocking避免 TUI 的同步阻塞操作拖垮异步事件循环。此外select_one/select_many在options为空时会提前返回Ok(None)与服务层(true, _)分支互为兜底保证任何路径都不会因空选项而出错。ForgeInquire在 forge_infra.rs 中作为基础设施infra被实例化为ArcForgeInquire再注入ForgeFollowup服务形成App → Service → Infra → Widget的分层调用链。结果如何回流给模型feedback 与 interrupted 语义追问结果最终要转成模型可读的工具输出。在 operation.rs 中ToolOperation::FollowUp { output }有两种渲染分支output为Some(content)渲染为 XML 元素feedback用户的选择或回答/feedback表示用户已给出有效反馈output为None渲染为interruptedNo feedback provided/interrupted表示用户中断或未提供反馈。这两种语义对模型至关重要feedback意味着拿到了下一步行动依据可以继续推进interrupted则提示模型本次追问没有得到有效答复需要调整策略例如改用其他工具或降低追问频率。对应的快照测试覆盖了这两种形态follow_up_with_question.snap 与 follow_up_no_question.snap单元测试test_follow_up_with_question/test_follow_up_no_question位于 operation.rs。格式化与回放侧同样有对应测试见 fmt_output.rs 的test_follow_up_with_response与test_follow_up_no_response保证对话记录在不同渲染阶段的一致性。在 Agent 工作流中的位置与上下文保持Followup 的注册与排序位于 catalog.rsToolCatalog::Followup(Followup)是工具枚举成员之一并在工具顺序列表中占据一席[ToolKind::Followup]模型可随工具清单随时调起。它是一类典型的“人机交互”工具不触碰文件系统、不执行命令只在模型与用户之间传递澄清信息。在上下文压缩compaction场景中Followup 调用还会被折叠进摘要。相关证据包括summary.rs 定义了SummaryTool::Followup { question: String }并提供工厂方法tool_call_followup(question)生成默认值的 Followup 摘要调用trim_context_summary.rs 会将摘要中的SummaryTool::Followup重新映射为Operation::Followup保持压缩前后语义一致strip_working_dir.rs 在剥离工作目录信息时同样保留SummaryTool::Followup条目。这意味着即便长会话触发压缩模型仍能在摘要中看到“曾向用户追问过什么问题”从而在恢复上下文后继续围绕未决问题工作。最佳实践何时问、怎么问结合工具描述与服务实现使用 Followup 时建议遵循以下原则问前先穷尽上下文优先通过fs_read、fs_search、semantic_search等工具在仓库中自行寻找答案只有信息确实不足时再发起追问呼应“judiciously”的设计要求。问题必须具体question是唯一必填项提问质量直接决定回答质量避免“你想怎么做”这类开放问题尽量给出可执行的候选范围。能用选项就不用自由输入提供option1option5候选选项可把用户操作成本降到最低一次回车即完成而自由输入需要用户手动键入。当选项不明确时才退回自由文本模式。区分单选与多选只需一个答案时保持multiple缺省或为false确实需要同时获得多个选择例如“哪些模块需要测试”时才置true避免单选迫使模型后续再追问一次。接受“无反馈”结果用户可能直接中断interrupted模型应将其视为未获得反馈的正常分支而不是错误并据此调整后续行动。相关源码导航工具描述原文crates/forge_domain/src/tools/descriptions/followup.md输入结构体与工具注册crates/forge_domain/src/tools/catalog.rs服务层三种交互模式crates/forge_services/src/tool_services/followup.rs服务 trait 定义crates/forge_app/src/services.rs执行器调用链选项汇聚crates/forge_app/src/tool_executor.rsUI 基础设施input/select/multi_selectcrates/forge_infra/src/inquire.rs结果 XML 渲染与快照测试crates/forge_app/src/operation.rs压缩摘要中的 Followup 保持crates/forge_domain/src/compact/summary.rs以上链路完整覆盖了“描述定义 → 参数解析 → 服务决策 → UI 交互 → 结果回流 → 上下文压缩”的全过程是理解 forgecode 人机协作机制的重要入口。赞分享人工智能AI Agent代码智能体AI 应用CLI开发工具【免费下载链接】forgecodeAI enabled pair programmer for Claude, GPT, O Series, Grok, Deepseek, Gemini and 300 models项目地址https://gitcode.com/gh_mirrors/forge39/forgecode点击查看免费下载相关推荐Ekko Studio Coding Agent MCP 用户澄清机制ekko-studio-interaction 交互工具的原理与实战Ekko Studio Coding Agent MCP 用户澄清机制 ekko studio interaction 交互工具的原理与实战 导读 在 EkkAI 应用人工智能AI Agent本地部署前端后端工作流自动化全新AI编程工具对比深度解析与选择指南全新AI编程工具对比深度解析与选择指南 核心特性大比拼 | 对比维度 | 开源AI助手 | 商业AI助手 | | | | | | 开源协议 | MIT许可证人工智能AI 应用AI Agent代码智能体CLI开发者工具ForgeCode todo_write 工具全解析用结构化任务清单掌控多步编码会话ForgeCode todo_write 工具全解析用结构化任务清单掌控多步编码会话 ForgeCode 是一个面向 Claude、GPT、Gemini 等人工智能AI Agent代码智能体AI 应用CLI开发工具上一篇【亲测免费】 探索Jikan一款高效、易用的MyAnimeList API下一篇如何第一次运行ADHD用Claude Code的/adhd命令设计限流器完整实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Univer 表格渲染与协同方案:Canvas 引擎、Facade API 与 Node.js 集成实战 2026/9/28 13:51:45

Univer 表格渲染与协同方案:Canvas 引擎、Facade API 与 Node.js 集成实战

1. 从“univer”这个关键词说起:它到底解决什么问题第一次看到“univer”这个词,很多人会以为是某个新出的前端框架或者某个云服务品牌。实际上,它指向的是一套面向电子表格与文档场景的通用渲染与协同能力底座。你可以把它理解成一个“把 Ex…

阅读更多 →
光度立体三维重建实战:从猫图序列到带法线OBJ模型 2026/9/28 13:51:45

光度立体三维重建实战:从猫图序列到带法线OBJ模型

简介:本资源是一套基于光度立体技术的三维重建Python应用程序源码包,面向计算机、人工智能、通信、物联网等专业的在校学生、教师及企业开发者,适用于毕业设计、课程设计、大作业或初期项目立项演示等场景。压缩包共41个文件,约7.…

阅读更多 →
发票批量排版打印工具:尺寸识别与自动网格布局实战 2026/9/28 13:51:45

发票批量排版打印工具:尺寸识别与自动网格布局实战

1. 需求拆解与方案定位:为什么财务人需要一套批量发票排版工具做财务的都知道,月底月初那几天简直是被发票支配的日子。销售部门抱来一摞票据,差旅平台导出一堆电子行程单,供应商把增值税专用发票拍照发过来,还有各种卷…

阅读更多 →
电商素材批量保存全攻略:从官方后台到插件脚本的实用方案 2026/9/28 13:51:45

电商素材批量保存全攻略:从官方后台到插件脚本的实用方案

批量保存电商平台素材这件事,没有哪个电商运营能逃得掉。我刚入行的时候,以为保存淘宝、京东、阿里巴巴、抖店这些平台的图片和视频,就是点个右键的事,后来才知道,几百张主图、详情页、SKU图叠在一起,手动保…

阅读更多 →
CLI-Anything:配置驱动,统一内部服务的命令行工具 2026/9/28 13:51:45

CLI-Anything:配置驱动,统一内部服务的命令行工具

前几天整理代码仓库的时候,我把整个团队散落在各个目录里的脚本翻了个底朝天。有监控服务的 Python 脚本,有给运营同学调配置的 Ruby 工具,还有几个直接用 curl 拼接口的 bash 文件。每个工具都有自己的用法,有的要改环境变量&…

阅读更多 →
阿基米德优化算法AOA:从浮力原理到全局优化的实用指南 2026/9/28 13:51:39

阿基米德优化算法AOA:从浮力原理到全局优化的实用指南

说到优化算法,很多人第一反应是遗传算法(GA)或者粒子群(PSO),但近几年的元启发式算法里,有一个思路特别清奇的家伙值得关注——阿基米德优化算法(Archimedes Optimization Algorithm…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉