对话
对话位于 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 文件。可以改变语气、回答的语言或模型遵循的规则;见提示词模板。