状态栏、日志与隐私
状态栏项
twinny 在状态栏右侧有一个项。
| 显示 | 含义 |
|---|---|
</> | 空闲,自动建议开启 |
</> off | 空闲,自动建议关闭;Alt+\ 仍可用 |
| 旋转图标 | 补全、对话、编辑或审查正在运行;点击可停止 |
| 隐藏 | twinny 已禁用(twinny.enabled 为 false) |
悬停显示当前自动补全模型和提供者,以及自动建议是否开启。空闲时点击打开菜单:
- 开关自动建议,
- 打开对话,
- 管理提供者,
- 打开 twinny 设置,
- 显示日志。
忙碌时点击执行 Stop generation。
Twinny 输出通道
twinny 所做的一切都写入输出面板的 Twinny 通道。用 Twinny - Show logs、状态栏菜单,或在输出面板下拉框中选择 Twinny 打开。
该通道是 VS Code 日志通道,每行带时间戳和级别,面板中的级别选择器(或 Developer: Set Log Level…)决定你看到多少:
| 级别 | 内容 |
|---|---|
| Info | 请求发出一行、返回一行:工作类型、提供者和模型、耗时、提示和回复的大小,以及生成停止的原因(停止标记、行数限制、块结束、取消……) |
| Debug | 另加完整的提示和回复,各截至 8,000 字符 |
| Warning / Error | 失败及提供者的原始信息。始终写入 |
twinny.enableLogging(默认开启)控制 Info 和 Debug;警告和错误无论如何都会写入。写入前会对 API 密钥和 bearer token 脱敏。
读日志能回答大多数“它为什么这么做”的问题:FIM 模板是否匹配、模型用了多久、提示是否过长、@workspace 选了哪些分块。
隐私
twinny 没有账号、没有遥测、没有自己的服务器。离开你机器的,正是你指定的目标:
| 你使用 | 发送内容 | 目的地 |
|---|---|---|
| 本地服务器 | 提示和上下文 | 本机上的该服务器 |
| 已配对设备 | 提示和上下文,加密 | 你的另一台机器 |
| 托管 API | 提示和上下文 | 该供应商 |
| GitHub 拉取请求审查 | 仓库所有者、名称、PR 编号、你的令牌 | GitHub |
| 其他 | 无 |
提示和上下文指:光标周围的代码及补全上下文;对话消息及其附件;内联编辑的选区;审查和提交信息的 diff;终端功能的最后输出;用于嵌入的文件分块。
工作区索引的重排序器在扩展内运行。P2P 的 DHT 只知道某个密钥可在某个地址访问。twinny 的作者不收集任何使用数据,扩展也不会自行向 twinny.dev 或任何其他地方发请求。
twinny 写入的文件
| 路径 | 内容 |
|---|---|
~/.twinny/templates/ | 提示词模板 |
~/.twinny/embeddings/<workspace>/ | 工作区索引(LanceDB)和清单 |
~/.twinny/node/ | 命令行节点的身份和受信设备 |
| VS Code 全局状态 | 提供者(默认)、会话、已配对设备、侧边栏中选择的设置 |
| VS Code 密钥存储 | 扩展的 P2P 身份 |
| 扩展全局存储 | twinny.providerStorageLocation 为 file 时的提供者;P2P 主机锁 |
这些都可以删除;twinny 会重建所需内容。