调试与反馈
ETOS LLM Studio 在「出问题怎么定位」上做得比大多数 LLM 客户端深——它内置了局域网调试客户端、应用日志归档、API 流量分析、带 PoW 防刷的反馈工单系统。这一页讲它们各自是什么、什么时候用。
你大概率会遇到的问题
| 现象 | 你需要 |
|---|---|
| AI 回答没出来,弹失败提示 | 应用日志 看具体错误码 |
| AI 回答莫名其妙 | API 流量分析 看实际发出去的请求和返回 |
| 想给开发者提 bug | 反馈助手 |
| 想让电脑端帮你看完整请求流水 | 局域网调试 |
| 想给会话注入自定义代理 / 调试中间人 | 本地调试服务器代理 |
新手必读
应用日志(最常用)
在哪
设置 → 拓展能力 → 拓展功能 → 应用日志或者从异常弹窗的"查看日志"链接直接跳。
它记录什么
每天会建一个按日期命名的文件夹,里面是当天所有请求 / 响应的结构化日志(JSON):
- 每条 LLM 请求的完整 URL、Header、Body
- 每条响应(包括流式分片)
- 工具调用的请求和返回
- 失败时的错误码、堆栈
记录请求明文消息
「记录请求明文消息」开关:
| 状态 | 行为 |
|---|---|
| 关闭(默认) | 请求体日志会隐藏 message、content 等消息字段(只看到结构,不看到内容) |
| 开启 | 记录明文消息文本,但图片、音频和文件的 Base64 仍会隐藏(避免日志爆炸) |
明文日志含敏感信息
开启明文日志后,你聊过的所有内容都会落盘。如果你不想留这些记录,平时关着,只在调试时临时开。
怎么用
- 复现问题
- 进应用日志,找当天的文件夹
- 找到对应时间的请求条目(按时间排序)
- 看里面的错误信息
清理
- 单天日志可以左滑删除
- 「清空全部」按钮清掉所有历史(有二次确认)
反馈系统
在哪
设置 → 拓展能力 → 拓展功能 → 反馈助手或者从应用某些错误弹窗"反馈给开发者"直接跳。
提一个反馈
每个反馈工单包含:
- 类型:Bug 报告 / 功能建议 / 提问 / 其他
- 标题 + 正文
- 环境信息(自动采集):版本号、iOS 版本、设备型号、模拟器状态等
- 截图(可选)
- 日志附件(可选):附上一份脱敏日志压缩包
PoW 防刷
提交时会要求做一个工作量证明(PoW)——你的设备 CPU 跑几秒哈希计算。这是 ETOS 防垃圾工单的方式:不要个人邮箱验证,但每个工单都要付一点点 CPU 成本。
工单状态跟踪
提交后工单会带一个编号。你可以在反馈助手列表里看:
- 状态:未读 / 开发者已读 / 处理中 / 已解决 / 已关闭
- 评论对话:开发者可以在工单下回复,你也能回复
- 开发者标记:「确认 bug」「无法复现」「已修复(下版本)」等
工单状态会自动同步。
双端工单
- iPhone 提的工单会同步到 Watch
- 系统通知会推送状态更新
API 流量分析(看 LLM 请求到底发了什么)
在哪
设置 → 拓展能力 → 拓展功能 → 高级诊断简易用法(仅看 token 用量)
如果你只是想看每条请求的 token 用量和响应速度,直接在 聊天与模型 里的「用量统计」(设置 → 拓展能力 → 用量统计)就够了。
完整流量分析(看完整请求 / 响应)
「高级诊断」是完整流水捕获——能看到每条请求的:
- 完整 URL(含 query string)
- 完整 Request Headers(含 Authorization)
- 完整 Request Body
- 完整 Response Headers
- 完整 Response Body(流式合并后的)
适合定位"为什么 AI 看到这个问题给出那个答案"。
进阶选项
局域网调试模式
高级诊断 页面顶部「连接模式」可以选「HTTP 轮询」或「WebSocket」。
适合:配合电脑端调试工具(仓库的 docs/debug-tools 和 docs/debug-tools-go 提供了客户端)。
工作原理
设备主动连接电脑端 WebSocket 服务器,接收命令并执行文件操作。
设备主动连电脑——不需要在路由器开端口。电脑端起一个 WS 服务(默认端口 8765),设备连过来即可执行:
- 浏览设备的 App 沙盒文件
- 拉取本地数据库做诊断
- 上传 / 下载文件
- 直接在浏览器里看实时控制台
启动步骤
- 电脑端:运行
docs/debug-tools/里的服务器(npm 项目) - 电脑端服务器启动后会显示本机 IP + 端口
- iPhone 端:高级诊断 → 输入"IP:端口"(比如
192.168.1.100:8765)→ 点「连接」 - 连上后状态变绿,可以从浏览器看实时日志
仅在可信网络中使用
高级诊断会完全暴露你的应用沙盒给电脑端。不要在咖啡馆 Wi-Fi 或公共网络用。
页面底部的提示:
仅在可信网络中使用 用完后请及时断开连接
API 代理模式
「API 代理设置」允许把所有 LLM 请求路由到电脑端的中间人:
将 API Base URL 设置为:http://电脑IP:8080请求会被电脑端记录、解析、可能修改后再转发给真实的 LLM API。适合:
- 看完整流式响应内容
- 自己写中间件改请求 / 响应做调试
- 模拟错误响应测试 App 行为
全局代理(生产网络环境)
设置 → 提供商与模型管理 → 全局代理如果你的网络环境所有 LLM 请求都要走代理,配在这里:
| 字段 | 说明 |
|---|---|
| 启用代理 | 总开关 |
| 代理类型 | HTTP / HTTPS / SOCKS5 |
| 代理地址 | 主机名或 IP |
| 端口 | 1-65535 |
| 用户名(可选) | 代理鉴权 |
| 密码(可选) | 代理鉴权 |
优先级:第一次配置提供商 进阶里讲过——提供商级代理 > 全局代理。
适合:
- 整体网络环境需要代理(公司网络 / VPN 出海)
- 不想给每个提供商单独配
请求日志的脱敏机制
ETOS 在记录请求日志时默认会脱敏:
| 字段 | 是否记录 |
|---|---|
| URL | ✅ 完整 |
| Header | ✅ 完整(含 Authorization,这是为了调试,分享时自己删) |
| Body 中的 messages 文本 | ❌ 默认隐藏(需要开"记录明文消息") |
| Body 中的图片 base64 | ❌ 总是隐藏 |
| Body 中的音频 base64 | ❌ 总是隐藏 |
| Body 中的文件 base64 | ❌ 总是隐藏 |
| 流式响应 body | ✅ 合并后完整记录 |
分享日志给开发者前再脱敏一次
即使开了脱敏,日志里还有 URL、Header 等可能含 API Key 的字段。分享前自己再过一遍,把 Authorization / X-API-Key 等替换成 ***。
模型连通性测试
如果你想快速测试一个新接入的模型能不能正常通讯,不必每次都回聊天页发消息——
设置 → 提供商与模型管理 → 某个提供商 → 详情页右上角的「模型测试」按钮它会自动用最小请求体测试这个 Provider 下所有启用模型的连通性,并显示每个模型的:
- ✅ 通过
- ❌ 错误信息
- 响应时间
排查"哪个模型还在用、哪个挂了"的最快方式。
下一步
- 想看你日常会用到的小窍门 → 隐藏技巧
- 想看 Watch 上能做什么 → Apple Watch 使用建议
- 遇到具体问题 → 常见问题