跳转到内容

上下文与提及

模型只能回答它看到的内容。twinny 让附加正确的东西变得快捷,并让每个来源都有上限,以免小模型被淹没。

@ 菜单

在消息框输入 @。会出现分类列表;选一个分类再选项目,或继续输入以过滤。附加的项目以标签形式显示在消息框上方,发送前可移除。

提及发送的内容限制
@files 再输入名称文件内容,标注路径。输入部分名称即可搜索工作区;列表来自资源管理器的文件树,因此被忽略的目录不在其中整个文件
@symbols 再输入名称通过语言服务器找到的一个函数、类、方法或其他符号,只含其代码及文件和行号。该文件的语言服务器必须处于活动状态最多显示 30 个匹配
@workspace针对问题搜索工作区索引,返回扩展到所在函数并附文件 import 的最佳分块最多 6 个分块,每个 3,000 字符,总计 12,000
@problems问题面板中的错误和警告,含文件、行号和信息前 50 条
@git当前分支、git status --short 和工作区 diffdiff 在文件边界处截断至 16,000 字符
@terminal通过 VS Code shell 集成获取的当前终端最后运行的命令及其输出最后 200 行或 12,000 字符

@workspace@problems@git@terminal 这些词在发送前会从问题中移除;模型看到的是附加的内容块。

其他附加方式

  • 右键文件(资源管理器或编辑器):Twinny - Add file to context
  • 右键选区Twinny: Add Selection to Context。选区连同文件和行范围一起附加。
  • 选中代码后发送。 按下发送时编辑器中选中的代码会自动附加;字符数显示在输入框下方。
  • 图片。 把图片粘贴或拖入消息。对接受图片的模型(llama3.2-visionllava、托管的 GPT 和 Claude 模型)它作为图片部分发送;其他模型会忽略。
  • 命令。 Explain 附加选区;修复最后的终端错误在对话中询问 附加输出和最多三个被引用的文件;代码审查附加 diff 的摘要。

上下文如何呈现给模型

附加的文件和选区格式化为带路径(及相关时的行范围)的标注块,然后是问题。工作区结果放在一条简短说明之后,说明告诉模型引用这些标签并忽略无关块。问题、git 和终端各有自己的标注段落。系统消息来自 system.hbs;见提示词模板

这些都计入模型的上下文窗口。Ollama 的默认窗口很小;如果回答忽略了附加的文件,或服务器报告提示过长,请提高 num_ctx(见 Ollama)或减少附加内容。

选好上下文

  • 知道答案在哪时,一个文件胜过整个工作区。 @workspace 用于跨项目的“在哪里……”和“……是怎么工作的”问题。
  • 关于单个函数的问题,符号胜过文件:模型读 40 行而不是 400 行。
  • 问题 + 文件是“为什么这里标红”的正确组合。
  • Git 适合“总结我改了什么”和“我漏了什么”。
  • 终端把失败的命令直接变成问题,无需复制粘贴。