聊天与模型
ETOS LLM Studio 的核心功能不是"能发消息"——市面上每个 LLM 客户端都能发。它的真正价值在于:会话能不能当成长期资产管理、模型参数能不能调到合手、阅读 AI 长输出时眼睛是否舒服。这一页系统讲这三件事。
如果你想知道一条消息发出前 ETOS 是怎么把上下文拼起来的,直接去 提示词与上下文拼装。
新手必读
会话治理:把聊天当成长期资产
「会话」是一组连续的消息。但 ETOS 不止把它当"聊天记录",而是当成可以分类、搜索、跨端、分支的资产。
会话列表(顶部菜单图标)
聊天页左上角点开后,看到的是完整的会话列表:
- 搜索框:占位文字「搜索会话标题或消息」。支持全文消息内容搜索——你能直接搜某条历史消息里的关键词,点搜索结果会跳到那条消息所在位置。
- 新建对话按钮
- 文件夹分组:可以把同主题的会话归到一起(比如"工作"、"学习"、"测试")。长按某条会话即可选「移动到文件夹」。
- 会话列表:每条显示标题(自动命名或你手动改的)+ 最后一条消息预览。
长按一条消息能做什么
整个聊天功能的"二级菜单"全在长按上:
| 操作 | 用处 |
|---|---|
| 复制 | 复制消息文本 |
| 引用 | 把这条消息作为下条输入的引用 |
| 编辑 | 改自己的输入或改 AI 的输出(对 AI 的输出做改写) |
| 删除 | 删这一条消息 |
| Token 信息 | 看这条消息消耗了多少 Token,包括思考 Token |
| 思考耗时 | 仅推理模型,看 AI 在这条上"想了多久" |
| 导出整个会话 | 把整条会话导出 |
| 导出到此消息(含上文) | 导出到这条为止 |
| 创建提示词分支 | 从此处开新会话,详见下文 |
创建分支
长按某条 → 「创建提示词分支」会弹「创建分支选项」,二选一:
- 仅分支提示词:只复制系统提示词,不带消息历史
- 仅复制消息历史:复制到此为止的全部内容(含 AI 回答)
新分支是完全独立的会话,原会话不变。用途:
- "我想让 AI 用不同语气重写这一段"
- "我要从这里岔开尝试另一种方案,但不污染主线"
- "我要把这段对话作为模板,下次重新开始"
多提供商与多模型
ETOS 的核心兼容 4 种 API 格式(不是 4 个厂商——一个格式可以对应无数厂商):
| API 格式 | 内部标识 | 谁在用 |
|---|---|---|
| OpenAI 兼容(Chat Completions) | openai-compatible | OpenAI 官方传统接口 + 几乎所有第三方中转 / 国产兼容服务 |
| OpenAI Responses | openai-responses | OpenAI 官方 GPT-4.1 / GPT-5 系列推荐的新接口 |
| Anthropic | anthropic | Claude 官方 |
| Gemini | gemini | Google 官方 |
关键概念:
- 一个提供商只有一个 API 格式——比如你接 Claude 就选 Anthropic 格式。
- 一个提供商可以挂任意多个模型——同一个 OpenAI Key 可以同时用 GPT-4o、GPT-4o-mini、
text-embedding-3-large、whisper-1、tts-1。 - 模型按**能力(Capability)**分槽:聊天模型 / 图像生成模型 / 嵌入模型 / 重排序模型 / 语音转文字模型 / 文本转语音模型。一个模型可以兼具多种能力。
按能力分配专用模型
设置 → 提供商与模型管理 → 「专用模型」入口,可以为不同能力单独指定模型:
| 槽位 | 干什么 | 典型选择 |
|---|---|---|
| 聊天模型 | 默认对话用 | GPT-4o / Claude 3.5 Sonnet / Gemini 2.5 Pro |
| 嵌入模型 | 记忆系统检索用的向量化 | text-embedding-3-large |
| TTS 模型 | 朗读 AI 回答 | OpenAI tts-1 或兼容 |
| 语音转文字模型 | 语音输入 | whisper-1 |
| 图片生成模型 | 设置 → 图片生成 单独配 | gpt-image-1 / Gemini Imagen / DALL·E |
| 每日脉冲模型 | 每日脉冲生成 | 选一个性价比高的,详见 每日脉冲 |
各能力互相独立——你完全可以让 GPT-4o 当聊天模型、Whisper 当语音输入、用 Anthropic 的 Claude 做 Daily Pulse。
多模态:图片 / 语音 / 文件
「多模态」就是 AI 不止能处理文字,还能看图、听音、读文件。前提:你选的模型必须支持对应模态。
图片输入
- 从相册选:聊天页
+→ 「选择图片」,可多选 - 现拍:
+→ 「拍照」 - 支持的格式:JPG / PNG / HEIC / WebP(系统自动转码)
- 能用的模型:GPT-4o 系列、Claude 3.5/4 系列、Gemini 1.5/2.5 系列
语音输入(两种模式)
去 设置 → 语音输入 配置后,输入框附近会出现麦克风按钮。
两种发送方式:
| 模式 | 行为 | 适用模型 |
|---|---|---|
| 转文字后发送 | 用 STT 模型(Whisper 等)把语音转成文字,发文本给聊天模型 | 任何聊天模型都能用 |
| 作为音频附件发送 | 把音频文件原封不动作为附件给 AI,让 AI 直接"听" | 仅 GPT-4o Audio / Gemini 等原生支持音频的模型 |
文件附件
+ → 「选择文件」可以发任意类型文件。注意:
- 文本类(TXT / Markdown / JSON / Swift / Python 等)会被直接读出来作为上下文
- PDF:会尝试提取文字
- 二进制文件:发送前会提示模型可能无法解析
TTS:让 AI 的回答读出来
第一次配 TTS:
设置 → 对话行为 → 语音朗读(TTS) → 选 TTS 模型TTS 模型必须是你已经在某个提供商下添加并启用的 TTS 类模型(tts-1、tts-1-hd 等)。
怎么用:
- 长按任意 AI 气泡 → 「朗读」
- 或在 AI 回答出来时自动播放(设置里有开关)
- 播放期间会出现浮动控制器(暂停 / 停止 / 调速)
TTS 不需要联网?
错——TTS 调用模型的 API,所以需要联网。但音频流是流式的,听上去会几乎和系统 TTS 一样流畅。
如果你想完全离线,可以使用 iOS 系统自带的 AVSpeechSynthesizer 替代(在拓展功能里),但音质会差一截。
阅读体验:把 AI 长输出渲染成"好读的文档"
ETOS 的阅读渲染层不是简单的 Markdown,下面这些都默认开启:
Markdown 增强(设置 → 显示与体验 → 背景与视觉)
| 开关 | 默认 | 作用 |
|---|---|---|
| 启用 Markdown | 开 | 关掉后所有内容显示纯文本 |
| 启用高级渲染器 | 开 | 支持代码高亮、数学公式、Mermaid 图 |
| 自动预览思考过程 | 关 | 推理模型的思考区是否默认展开 |
| 启用毛玻璃 | 开 | iOS 26 Liquid Glass 风格 |
| 顶部模糊渐变 | 开 | 滚动时顶部柔化效果 |
代码块特性
- 语法高亮:自动识别 100+ 种语言
- 复制按钮:右上角
📋,复制后会有反馈动画 - iOS 代码预览:包含 Swift / SwiftUI 代码时,长按代码块可以拉起 iOS 代码预览面板(带语法树)
- 可折叠:超过 50 行的代码块自动折叠,点击展开
数学公式 / Mermaid 图
- LaTeX 公式:
$inline$和$$display$$都支持 - Mermaid 图:用
```mermaid围栏包起来,会自动渲染
显示系统:把视觉细节调到合手
字体自定义
设置 → 显示与体验 → 背景与视觉 → 「字体回退」可以:
- 导入自定义字体文件(WOFF / WOFF2 / TTF / OTF)
- 设字体槽位优先级(中文字体 / 英文字体 / 等宽字体)
- 设字体回退策略(找不到字形时回退到哪个字体)
适合:
- 中英混排时想要特定中文字体
- 长篇阅读时想用 Sarasa Gothic SC / Source Han Serif 等专门为屏幕优化的字体
背景图与气泡
- 启用背景图 → 上传图片 → 配模糊度和透明度
- 自动换背景:每次新对话或定时切换
- 关闭助手气泡:让 AI 的回答直接显示在背景上(更像"阅读文档")
进阶选项
偏好设置(全局默认参数)
设置 → 对话行为 → 偏好设置 里能调:
| 字段 | 干什么 |
|---|---|
| 全局系统提示词 | 每次新会话默认带上的系统提示词。可以建多个,每条独立命名。 |
| AI 温度(Temperature) | 0~2,越高越发散,越低越确定。0.7 是均衡值。 |
| AI Top-P | 0~1,与 Temperature 类似但是 Nucleus Sampling 方法。一般两者只调一个。 |
| 启用流式响应 | 关掉后会等模型生成完才一次性显示。调试某些奇怪兼容服务时关一下。 |
| 启用响应速度指标 | 显示每条回答的字符/秒、首字延迟 |
| OpenAI 流包含 Usage | OpenAI 兼容服务流式响应是否带 usage 字段。某些中转不带需要关。 |
| 启用自动会话命名 | 第一条回答后自动给会话起名 |
| 启用思考摘要 | 推理模型是否生成思考摘要展示 |
| 最大历史消息数 | 每次请求发给模型的历史消息条数上限。详见下文。 |
| 懒加载消息数 | 打开会话时一次加载多少条历史 |
「最大历史消息数」怎么调
这是个关键值:
- 设小(10 以内):省 Token,但 AI 容易"失忆"
- 设大(50+):AI 记得多,但每次请求体大很多、模型可能丢早期消息
- 推荐:先用默认值 30 左右,根据你的实际使用调整
全局系统提示词
最常用的玩法:
- 创建多条:"默认助手"、"代码助手"、"翻译助手"、"角色扮演"……
- 每条独立内容:写好你想要的人设、风格、约束
- 每个会话切换:在聊天页或新建会话时选择当前会话用哪条
系统时间注入
偏好设置里的「发送系统时间」开关:开启后,每次请求会自动注入当前系统时间到提示词里。再开「周期时间地标」可以每 N 分钟在对话流里插入一次时间锚点,让 AI 知道时间在流逝(适用于长对话不让 AI"穿越")。
模型级高级参数
进入 设置 → 提供商与模型管理 → 某个具体模型 → 「模型设置」可以:
- 给单个模型覆盖默认参数(temperature、top_p、max_tokens 等)
- 写参数表达式:模板语法动态计算参数值
- 编辑原始 JSON 请求体:在请求发出前最后插手
参数表达式举例
不需要真的复制粘贴,仅说明它能做什么。比如:
max_tokens = clamp(messages.last.content.length * 2, 512, 8192)这条意思是:让 max_tokens 随最后一条消息的长度变化,但不低于 512 也不超过 8192。
原始 JSON 请求体
某些非标准接口需要在请求 body 里多塞字段(比如某些中转要求 extra_body.thinking.budget_tokens = 32000 给 Claude 思考预算)。这是最终修改请求 body 的地方。普通用户用不到——只有当你遇到"标准字段都对,但接口拒收"时才会需要。
会话导入导出
ETOS 不锁数据。
导入(设置 → 同步与备份 → 第三方导入):
- Cherry Studio 完整备份
- RikkaHub 导出
- Kelivo 导出
- ChatGPT 官方
conversations.json - ETOS 自己的数据包(含全部配置)
导出(聊天页长按某条消息):
- PDF(带格式、可分享)
- Markdown(纯文本,方便二次处理)
- TXT(最简单的文本)
用量统计
设置 → 拓展能力 → 用量统计 可以按提供商、模型、日期看你的 Token 用量和花费。前提是你在提供商里给每个模型配了单价:
设置 → 提供商与模型管理 → 某个模型 → 「定价」配 prompt / completion 单价(按厂商官网定价填)。配好后 ETOS 会自动按用量算钱。