自动补全心智模型与接受策略

kp-002入门15 分钟01-心智与基础最小路径

一句话定义

自动补全是模型基于当前文件与光标上下文做的「高概率续写」,正确用法是把它当打字加速器而非正确性来源,用显式的接受策略控制采纳。

为什么重要

补全是多数人接触 AI 编程的第一个入口,也最容易建立错误习惯:无脑连按 Tab、整段接受不读、被灰影文本牵着走。补全的速度优势只在「你本来就会写、它帮你写得快」时成立;一旦你不假思索接受,审查成本被推迟到调试期,总成本反而上升。建立正确心智模型能让补全命中率高的场景吃到红利,同时保住代码质量。

前置知识

kp-001(AI 辅助编程的版图与核心术语)。

核心概念

  • 概率续写本质:模型预测「下一个最像的 token」。它没有「理解你的需求」只有「统计上最可能的续写」。
  • 强先验场景:重复模式(循环体、getter/setter)、约定俗成结构(测试断言、JSON 解析)、紧邻上文已有的模式复制——命中率高。
  • 弱先验场景:业务规则、架构选择、边界条件、安全逻辑——模型只能猜,命中后也需逐行验证。
  • 上下文敏感性:补全质量主要取决于光标周围的「可见材料」:已打开文件、函数签名、命名风格、注释。

原理与机制

模型每次补全都重新基于当前上下文计算,因此「先给结构再要血肉」能显著提升命中:先写函数签名和 docstring,再让补全填实现;先写空测试骨架,断言体更容易被补全猜中。反之,在空文件里等待「整个功能」的补全,等于让模型无据可猜。理解这一点后,你就掌握了引导补全的主动权:上下文是你写的,补全是你引出来的。

实例或案例

Before(差上下文):新建空文件,光标停第一行,等补全出整个导出功能——模型只能产出泛泛的模板,变量名、错误处理全靠猜。

After(好上下文):先手写骨架再触发补全:

def export_orders(orders: list[Order], path: str) -> ExportResult:
    """导出订单为 CSV;金额分转元保留两位;失败返回 ExportResult(ok=False, error)。"""
    # 校验 orders 非空且每条含 id/amount_cents

签名 + docstring + 起始注释给出强约束,后续实现大概率被正确补全。

操作步骤(接受三问,每次多行接受前过一遍):

  1. 方向对吗——这段补全在解决我当前的问题吗?
  2. 名字对吗——变量、函数、字段名与项目既有命名一致吗?
  3. 边界对吗——空输入、异常路径、越界情况处理了吗?
  4. 任何一问答不上来,只接受首行或手写。

排错清单(补全质量差时逐项检查):

  • 相关文件没打开 → 打开 2-3 个最相关的上下游文件再试。
  • 函数签名太含糊 → 补全类型标注与 docstring。
  • 命名风格混乱 → 先统一命名,模型会跟随你的风格。
  • 上下文里全是无关代码 → 关掉无关标签页,减少干扰。
  • 等整段功能 → 改为先写骨架再补实现。

公式或模型

本节不适用:补全质量目前没有可靠的闭式度量,用主观命中率记录即可(kp-026 的采纳率可作粗代理)。

图示

本节不适用:概率续写机制已用文字说清,图示无增量信息。

直观类比

补全像一位极快的听写下一位:你说上半句它抢答下半句,熟人口吻(强先验)猜得很准,新话题(弱先验)就是瞎接话——你要么给足上下文,要么自己说。

常见误区

  • 把补全当正确性来源:它对「像不像」负责,不对「对不对」负责。
  • 整段接受不读:审查成本不会消失只会延后,且延后时代价更高。
  • 用补全做架构决策:弱先验场景应切换到对话层(kp-003)讨论后再落地。

与其他知识点的关系

kp-003 是补全失效后的正确升级路径;kp-004 解释为什么上下文决定补全质量。

自测题

要点:重复模式与紧邻上文可复制的结构;因为概率续写依赖上下文中的强先验。

要点:方向对吗、名字对吗、边界对吗;任一存疑只接受首行。

  1. 哪些场景补全命中率高?为什么?
  2. 「接受三问」是哪三问?

延伸阅读

《The Pragmatic Programmer(20 周年版)》Hunt & Thomas——「把关你提交的每一行」的原则同样适用于 AI 产出。

#自动补全#Copilot#ghost-text