跳转到内容

对话

对话位于 twinny 侧边栏。输入问题并按 Enter 或发送。回答流式显示,随时可用 Esc、Ctrl+C、Ctrl+Shift+/ 或停止按钮中断。回答来自当前的对话提供者,在提供者标签页用使用此提供者选择;空对话会显示将由哪个模型回答。

用输入框左下角的开关或 Shift+Tab 开启智能体模式,让模型在回答前读取、搜索、编辑文件并运行命令。

需要更大空间,或想把侧边栏留给提供者或嵌入标签页时,用 Open twinny panel chat(侧边栏顶部的全屏图标)在完整的编辑器标签页中打开对话。

输入框

对话的按键与终端相同。在空输入框按 ? 查看列表,或从视图的 … 菜单运行 Twinny - Chat keyboard shortcuts;所有按键也列在键盘快捷键。

  • Shift+Enter 换行。
  • 在空输入框中按 ↑ 和 ↓ 逐条调出你发送过的内容,跨会话有效。在调出的提示中输入会让它成为你的草稿。
  • 连按两次 Esc 清空草稿,↑ 可找回。Ctrl+C 停止回答,没有内容在流式输出时则清空草稿;选中文字时仍为复制。
  • Ctrl+L 开始新会话。PgUp 和 PgDn 在不离开输入框的情况下滚动对话记录;焦点在对话记录上时输入会进入输入框。

回答还在进行时发送的消息会被排队,不会丢失:它在对话记录下方等待,回答结束后发出,每次回答一条。悬停在排队的消息上可以撤下它。停止回答会把排队的消息放回输入框,而不是发送。

添加上下文

在消息框输入 @ 可附加上下文:文件、符号、当前问题、git diff、终端最后的输出,或工作区索引搜索。右键文件或选区可 Add file to context 和 Add Selection to Context。发送时编辑器中选中的代码会自动附加。为视觉模型粘贴图片。

每个来源发送的内容及其限制见上下文与提及。

回答

回答中的代码块有操作:

  • copy 复制代码块。
  • new file 以正确的语言在新的未命名文档中打开。
  • insert 把代码直接放到当前编辑器的光标处,替换选区,无需审阅 diff。
  • apply 作为内联编辑放入当前编辑器供你接受或拒绝:有选区时覆盖选区,否则覆盖它重写的行,或插入到光标处。
  • terminal 把 shell 代码块粘贴到 twinny 终端,按 Enter 即可运行。

每条回答下方显示写出它的模型、耗时,以及后端报告 token 数时的每秒 token 数。这些信息随会话保存,从不发送给模型。被你停止的回答会注明,最后一条回答有 Continue,让模型接着写而不是重新开始。

在消息下方可以编辑并重新发送(之后的消息会被丢弃)、重新生成回答或删除它。使用了 @workspace 时,回答下方的 context 行显示检索到的分块、重排序分数和预览,并附有在其所在行打开的链接。

会话

会话保存在 VS Code 全局状态中,跨会话保留。打开会话历史(时钟图标)可搜索、重命名或删除会话,或全部清除;按天分组。Start a new chat(加号图标)或 Ctrl+L 开始新会话;会话标题由第一轮对话生成。

从侧边栏的 … 菜单或面板工具栏选择 Open conversation as Markdown,可在新编辑器中打开整个会话。

每条消息都会附带整个会话,因此很长的会话最终会超出模型的上下文。话题变化时请开启新会话。

编辑器命令

右键选中的代码可以:

  • Explain:让对话解释选区。在工作区索引标签页开启 Use the index for every message 时,会查找相关代码以辅助解释。
  • Refactor、Add types、Generate docs 和 Edit with instruction…:通过内联编辑就地修改代码。
  • Write tests:把测试写入同级测试文件。

选区建议

在编辑器中选中代码时,消息框上方会显示一排建议按钮,来自你在 Manage twinny templates(书本图标)中启用的模板。每个按钮对选区运行该模板。把从不使用的关掉。

Token 与停止

对话请求本身不设长度上限,回答能有多长由提供者的默认上限和模型的上下文窗口决定。对话也不发送 temperature:twinny.temperature 只作用于补全,对话使用服务器的默认值。

自定义提示

系统消息和每个命令的提示都是 ~/.twinny/templates/ 中的 Handlebars 文件。可以改变语气、回答的语言或模型遵循的规则;见提示词模板。