docs: 全面更新文档(agents.md, taolun.md)包含 TTS 功能说明
This commit is contained in:
80
taolun.md
80
taolun.md
@@ -46,8 +46,8 @@ hxclaw/
|
||||
### 6. Markdown 终端渲染
|
||||
|
||||
- 使用 charmbracelet 家族库
|
||||
- glamour:Markdown 渲染(自带代码高亮)
|
||||
- lipgloss:终端样式
|
||||
- glow:代码高亮
|
||||
- 流程:Markdown → ANSI 转义序列 → 终端显示
|
||||
|
||||
### 7. 部署方式
|
||||
@@ -330,7 +330,7 @@ func outputLineByLine(text string) {
|
||||
# 模拟流式输出配置
|
||||
streaming:
|
||||
line_delay_ms: 1000 # 每行输出后的延迟(毫秒)
|
||||
last_line_delay_ms: 600 # 最后一行延迟(毫秒)
|
||||
last_line_delay_ms: 600 # 最后一行延迟(毫秒)
|
||||
|
||||
# Markdown 渲染配置
|
||||
markdown:
|
||||
@@ -341,6 +341,12 @@ markdown:
|
||||
ui:
|
||||
logo: "🦐" # Logo
|
||||
user_prefix: "👀 " # 用户输入前缀
|
||||
|
||||
# TTS 语音配置
|
||||
tts:
|
||||
enabled: false # 全局开关(默认关闭)
|
||||
port: 9876 # daemon 端口
|
||||
auto: true # AI 回复后自动朗读
|
||||
```
|
||||
|
||||
#### 配置加载优先级
|
||||
@@ -381,4 +387,72 @@ func getConfigPath() string {
|
||||
|
||||
- 人眼需要约 30-50ms 才能感知单次视觉变化
|
||||
- 空白字符不应逐个输出,应批量处理
|
||||
- 终端宽度 100% 时 Markdown 渲染会显著增加行数和字符数
|
||||
- 终端宽度 100% 时 Markdown 渲染会显著增加行数和字符数
|
||||
|
||||
---
|
||||
|
||||
### 19. TTS 语音朗读集成
|
||||
|
||||
#### 架构设计
|
||||
|
||||
hxclaw 作为 mimo-tts 的客户端,通过 TCP Socket 连接本地 daemon:
|
||||
|
||||
```
|
||||
hxclaw (客户端) --TCP:9876--> mimo-tts daemon (服务端)
|
||||
|
|
||||
v
|
||||
API 调用 (mimo-v2.5-tts)
|
||||
|
|
||||
v
|
||||
返回音频文件路径
|
||||
|
|
||||
v
|
||||
afplay 播放
|
||||
```
|
||||
|
||||
#### 配置文件
|
||||
|
||||
```yaml
|
||||
tts:
|
||||
enabled: false # 全局开关(默认关闭)
|
||||
port: 9876 # daemon 端口
|
||||
auto: true # AI 回复后自动朗读
|
||||
```
|
||||
|
||||
#### 命令支持
|
||||
|
||||
| 输入 | 行为 |
|
||||
|------|------|
|
||||
| `/tts` | 切换 TTS 开关 |
|
||||
| `/tts on` | 开启 TTS |
|
||||
| `/tts off` | 关闭 TTS |
|
||||
| `/tts status` | 显示状态 |
|
||||
| `T 消息` | 临时开启并发送 |
|
||||
|
||||
#### 动态提示符
|
||||
|
||||
- 关闭:`👀 `
|
||||
- 开启:`👀 🔊 `
|
||||
|
||||
#### 实现要点
|
||||
|
||||
1. TCP 连接:使用 Go 标准库 `net` 包
|
||||
2. JSON 序列化:发送请求格式 `{text, voice, format}`
|
||||
3. 异步播放:使用 `go func()` 异步调用 afplay
|
||||
4. 静默失败:网络异常只记录警告日志,不阻塞用户
|
||||
|
||||
#### 踩坑记录
|
||||
|
||||
**ergochat/readline SetPrompt 无返回值**
|
||||
|
||||
```go
|
||||
// 错误
|
||||
func (r *Readline) SetPrompt(prompt string) error {
|
||||
return r.rl.SetPrompt(prompt) // SetPrompt 返回 void
|
||||
}
|
||||
|
||||
// 正确
|
||||
func (r *Readline) SetPrompt(prompt string) {
|
||||
r.rl.SetPrompt(prompt) // void 类型
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user