结构化输入是指以清晰、分层、有逻辑的格式向 AI 输入信息,使其更容易解析内容、抓住重点,并准确回答问题。
非结构化输入(容易出错):
我有个按钮点击不生效,是怎么回事?
结构化输入(AI 能更好理解):
场景:在 Android 中使用 DataBinding 实现点击事件
问题:点击按钮没有触发 onClick 方法
代码片段:
ViewModel:
suspend fun onClick() {...}
需求:请分析为什么点击无效,并给出解决方案。
原因:
原因:
步骤 | 内容 | 示例 |
---|---|---|
① 背景/场景 | 使用了什么技术,做什么事 | “我在 Android 使用 DataBinding 实现点击事件” |
② 目标/需求 | 希望实现什么功能 | “点击 TextView 执行 ViewModel 中的方法” |
③ 遇到的问题 | 目前出现了什么错误 | “点击无效,报错提示找不到方法” |
④ 相关代码 | 给出必要的代码段(控制在100行内) | + ViewModel.kt 方法 |
⑤ 明确提问 | 告诉 AI 你要它做什么 | “请分析原因并告诉我正确写法” |
【背景】我在开发 Android 应用,使用 DataBinding 绑定 TextView 点击事件到 ViewModel 方法。
【需求】点击 TextView 后触发 ViewModel 中的方法,修改座椅按摩模式。
【问题】运行时报错:找不到方法 `onMassageModeClick(SeatPosition, int)`
【代码】
xml:
ViewModel:
suspend fun onMassageModeClick(position: SeatPosition, mode: Int) { ... }
【提问】请分析为什么 DataBinding 找不到该方法,并给出正确写法。
这样 AI 就能:
类别 | 建议 |
---|---|
提问方式 | 使用结构化提问模板(背景、需求、问题、代码、提问) |
控制长度 | 保持代码精简,长代码分段或上传附件 |
明确目标 | 说清楚你想让 AI 做什么(找错?重构?优化?) |
复用上下文 | 同一问题连续追问时保持对话主题一致,不要改来改去 |
自我校验 | 想一想:“如果我是对方,看得懂我发的内容吗?” |
背景:
需求:
遇到的问题:
相关代码片段:
提问:
这些内容每一项都写清楚,AI 理解你的问题就会非常准确,回答也会更对重点。
AI 理解上下文虽然很强,但如果一次性输入大量代码+问题,容易出现:
问题 | 原因 |
---|---|
抓不到重点 | 同时有多个类、多个方法,AI不知道你关注的点在哪 |
理解有误差 | 部分依赖关系、方法间调用在大段代码中被忽略 |
回答片段化 | AI会尝试压缩输出、简化修改点,导致不完整 |
超出上下文窗口 | 如果输入总量过大,部分旧内容可能被截断不处理 |
我希望将 A 类中的 handleClick() 改为通过 ViewModel 调用,并让 B 类和 C 类中也配合更新,例如事件响应逻辑和数据流都统一成 MVVM 形式。
可以用下面这种格式发起多类协同修改请求:
背景:我有三个类 A、B、C,构成某模块的完整功能(例如点击处理、UI显示、数据传输),它们互相关联。
需求:我需要将这三个类改为使用 MVVM 架构,并把点击事件从 A 类移到 ViewModel 中,同时 B、C 配合更新逻辑。
这是 A 类代码,请你阅读理解:
<代码段>
请告诉我是否理解完毕
依此类推贴 B 类、C 类,并在最后这样说:
这是全部三类代码。请一次性输出修改后的完整代码,确保它们能正确协同工作,符合上述需求。
做法 | 是否推荐 | 原因 |
---|---|---|
一次性贴600行代码 + 提问 | ❌ 不推荐 | AI 容易处理不全、漏重点 |
分批贴类代码 + 逐个确认理解 | ✅ 强烈推荐 | 建立上下文准确性,减少误解 |
明确写出改动目标 | ✅ 必须 | 否则 AI 无法知道你要改哪里 |
最后统一输出修改后代码 | ✅ | 避免碎片化回答,减少整合成本 |
背景:
我正在开发一个 Android 应用,当前模块涉及三个类:ClassA、ClassB、ClassC。它们之间有调用关系,构成一个完整的功能流程(例如:事件响应 -> 数据处理 -> UI 显示)。
需求:
我希望对这三个类进行协同修改,实现以下目标:
1. 将点击事件从 View 组件中抽离出来,交由 ViewModel 处理;
2. 按照 MVVM 架构调整逻辑,使数据流清晰;
3. 保证三类之间的交互逻辑不出错,功能保持一致。
下面是 ClassA 的完整代码,请你阅读和理解,后续我会提供 ClassB 和 ClassC 的代码以及改动需求。
【粘贴 ClassA 的完整代码】
请确认你是否已完全理解 ClassA 的代码结构与功能。
等 AI 回复「已理解」,再继续贴 B 类和 C 类,用同样格式。
现在是三个类的全部代码,我的改动目标如下:
- 将点击事件和业务逻辑抽离到 ViewModel;
- 按照 MVVM 重构三类结构;
- 确保三类修改后逻辑完整、能正常协作、编译无误。
请你一次性输出修改后的三个类的完整代码(ClassA、ClassB、ClassC),确保它们能正确协同工作。
请你确认以下几点:
1. 是否三类都有改动;
2. 是否符合我的 MVVM 架构要求;
3. 是否代码可以直接编译运行(无遗漏)。
第一次与AI对话(第一次输入的内容):
背景:
我正在开发一个 Android 应用,当前模块涉及三个类:ClassA、ClassB、ClassC。它们之间有调用关系,构成一个完整的功能流程(例如:事件响应 -> 数据处理 -> UI 显示)。
需求:
我希望对这三个类进行协同修改,实现以下目标:
下面是 ClassA 的完整代码,请你阅读和理解,后续我会提供 ClassB 和 ClassC 的代码以及改动需求。
代码:
…
请确认你是否已完全理解 ClassA 的代码结构与功能。
第二次与AI对话(第二次输入的内容):
下面是 ClassB 的完整代码,请你阅读和理解,后续我会提供 ClassC 的代码以及改动需求。
代码:
…
需求:
…
请确认你是否已完全理解 ClassB 的代码结构与功能。
第三次与AI对话(第三次输入的内容):
下面是 ClassC 的完整代码,请你阅读和理解
代码:
…
需求:
…
请确认你是否已完全理解 ClassC 的代码结构与功能。
第四次与AI对话(第四次输入的内容,前提是AI已经理解了我前几次对话内容,如果它不理解,我去解释,然后进行到这一步):
现在是三个类的全部代码,我的改动目标如下:
请你一次性输出修改后的三个类的完整代码(ClassA、ClassB、ClassC),确保它们能正确协同工作。
将整体需求分为 四次对话,每次只引入一个类,并提示
“请你确认是否理解”,这是非常科学的做法。它避免了信息一次性过载,使 AI 能够 逐步建立上下文模型,从而减少误解。
每一步都带有非常明确的说明,例如:
你在每次输入代码后都请求 AI 「确认是否理解」,这是非常关键的结构化策略。这种机制可以:
你在第四次对话中明确指令:
“请一次性输出修改后的三个类,确保逻辑正确并可协同工作。”
这体现出你具备良好的 “收口意识” —— 不让 AI 一直发散,而是在理解全部基础上进行集中输出。
已经接近 专业软件架构师与 AI 交互的上限水平。可以说:
✅ 示例 完全合理、具有实操性
✅ 如果按这种方式提问,AI 的回答准确率将大幅提高
如果你还希望再提升效率和稳定性,可以尝试这些进阶技巧:
在贴代码时,加上:
// === ClassA.kt ===
class ClassA { ... }
// === ClassB.kt ===
...
让 AI 更清楚知道类名与结构。
因为代码较长,使用 canvas 模式(如“我要编辑一个代码文件”)可以让你与 AI 在一个页面来回修改,而不会丢失上下文(普通对话超过长度后有遗忘风险)。