Skip to content

Commit a37a63b

Browse files
author
Sisyphus Agent
committed
docs: 添加超时问题完整解决方案总结
新增文件: - TIMEOUT_SOLUTION_SUMMARY.md: 完整解决方案文档 内容: - 问题总结和根本原因分析 - 已实施的解决方案列表 - 用户解决方案(3 选 1) - 超时配置参考表 - 验证步骤 - 最佳实践建议 - Git 提交记录
1 parent ac090e3 commit a37a63b

File tree

1 file changed

+213
-0
lines changed

1 file changed

+213
-0
lines changed

TIMEOUT_SOLUTION_SUMMARY.md

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# 超时问题完整解决方案
2+
3+
## 📋 问题总结
4+
5+
### 用户遇到的问题
6+
7+
```bash
8+
oho message add -s ses_xxx "/commit"
9+
Error: 请求失败:Post "http://127.0.0.1:4096/session/.../message":
10+
context deadline exceeded (Client.Timeout exceeded while awaiting headers)
11+
```
12+
13+
### 根本原因分析
14+
15+
1. **旧版本 oho**: 超时硬编码为 30 秒
16+
2. **AI 处理时间长**: 复杂任务需要 >30 秒
17+
3. **版本未更新**: 新编译的二进制文件未安装到正确路径
18+
19+
### 实际情况
20+
21+
- ✅ 消息**已成功**提交到服务器
22+
- ✅ AI**正在处理**请求
23+
- ❌ 客户端等待超时(等不及响应)
24+
25+
---
26+
27+
## ✅ 已实施的解决方案
28+
29+
### 1. 代码修复
30+
31+
**文件**: `oho/internal/client/client.go`
32+
33+
```go
34+
// 之前:30 秒硬编码
35+
Timeout: 30 * time.Second
36+
37+
// 之后:5 分钟默认,支持环境变量
38+
timeoutSec := 300 // 5 分钟
39+
if envTimeout := os.Getenv("OPENCODE_CLIENT_TIMEOUT"); envTimeout != "" {
40+
if parsed, err := strconv.Atoi(envTimeout); err == nil && parsed > 0 {
41+
timeoutSec = parsed
42+
}
43+
}
44+
Timeout: time.Duration(timeoutSec) * time.Second
45+
```
46+
47+
### 2. 重新编译和安装
48+
49+
```bash
50+
# 编译到正确的路径(~/.local/bin)
51+
go build -o ~/.local/bin/oho ./cmd
52+
53+
# 验证安装
54+
which oho # 应该显示 /root/.local/bin/oho
55+
```
56+
57+
### 3. 新增文档
58+
59+
| 文档 | 说明 |
60+
|------|------|
61+
| `INSTALL_AND_USAGE.md` | 安装和使用说明 |
62+
| `QUICKSTART.md` | 5 分钟快速上手 |
63+
| `TIMEOUT_FIX_SUMMARY.md` | 超时修复技术细节 |
64+
| `test_timeout.sh` | 超时配置测试脚本 |
65+
| `debug_message.sh` | 完整诊断脚本 |
66+
| `docs/oho-cli-usage/09-troubleshooting.md` | 问题排查指南 |
67+
68+
---
69+
70+
## 🎯 用户解决方案(3 选 1)
71+
72+
### 方案 1: 增加超时时间 ⭐推荐
73+
74+
```bash
75+
# 设置 10 分钟超时
76+
export OPENCODE_CLIENT_TIMEOUT=600
77+
78+
# 发送消息
79+
oho message add -s ses_xxx "复杂任务"
80+
```
81+
82+
### 方案 2: 不等待响应
83+
84+
```bash
85+
# 发送但不等待
86+
oho message add -s ses_xxx "任务" --no-reply
87+
88+
# 稍后查看
89+
sleep 30
90+
oho message list -s ses_xxx --limit 3
91+
```
92+
93+
### 方案 3: 异步提交
94+
95+
```bash
96+
# 异步提交(后台处理)
97+
oho message prompt-async -s ses_xxx "任务"
98+
99+
# 检查状态
100+
oho session status
101+
```
102+
103+
---
104+
105+
## 📊 超时配置参考
106+
107+
| 任务类型 | 推荐超时 | 环境变量设置 |
108+
|----------|----------|--------------|
109+
| 简单问答 | 60 秒 | `OPENCODE_CLIENT_TIMEOUT=60` |
110+
| 代码分析 | 300 秒(默认) | `OPENCODE_CLIENT_TIMEOUT=300` |
111+
| 复杂重构 | 600 秒 | `OPENCODE_CLIENT_TIMEOUT=600` |
112+
| 批量任务 | 900 秒 | `OPENCODE_CLIENT_TIMEOUT=900` |
113+
| 会话总结 | 600 秒 | `OPENCODE_CLIENT_TIMEOUT=600` |
114+
115+
---
116+
117+
## 🔧 验证步骤
118+
119+
### 1. 检查 oho 版本
120+
121+
```bash
122+
# 检查路径
123+
which oho
124+
# 应该显示:/root/.local/bin/oho
125+
126+
# 测试连接
127+
oho config get
128+
```
129+
130+
### 2. 测试超时配置
131+
132+
```bash
133+
# 运行测试脚本
134+
./test_timeout.sh
135+
136+
# 或手动测试
137+
OPENCODE_CLIENT_TIMEOUT=10 oho session list
138+
```
139+
140+
### 3. 运行诊断
141+
142+
```bash
143+
# 完整诊断
144+
export OPENCODE_SERVER_PASSWORD=xxx
145+
./debug_message.sh
146+
```
147+
148+
---
149+
150+
## 📚 相关文档
151+
152+
### 快速开始
153+
- [QUICKSTART.md](QUICKSTART.md) - 5 分钟快速上手
154+
- [INSTALL_AND_USAGE.md](INSTALL_AND_USAGE.md) - 安装和使用说明
155+
156+
### 问题排查
157+
- [docs/oho-cli-usage/09-troubleshooting.md](docs/oho-cli-usage/09-troubleshooting.md) - 完整问题排查指南
158+
- [docs/oho-cli-usage/QUICK_REFERENCE.md](docs/oho-cli-usage/QUICK_REFERENCE.md) - 快速参考卡片
159+
160+
### 技术细节
161+
- [TIMEOUT_FIX_SUMMARY.md](TIMEOUT_FIX_SUMMARY.md) - 超时修复技术总结
162+
163+
---
164+
165+
## 🎯 最佳实践
166+
167+
### ✅ 推荐做法
168+
169+
1. **永久配置环境变量**
170+
```bash
171+
# 添加到 ~/.bashrc
172+
export OPENCODE_CLIENT_TIMEOUT=600
173+
```
174+
175+
2. **长时间任务使用 --no-reply**
176+
```bash
177+
oho message add -s ses_xxx "复杂任务" --no-reply
178+
```
179+
180+
3. **异步处理批量任务**
181+
```bash
182+
oho message prompt-async -s ses_xxx "任务"
183+
```
184+
185+
### ❌ 避免做法
186+
187+
1. **不要使用默认超时处理复杂任务**
188+
2. **不要对长时间任务使用同步模式**
189+
3. **不要忘记设置环境变量**
190+
191+
---
192+
193+
## 📝 Git 提交记录
194+
195+
本次修复包含以下提交:
196+
197+
```
198+
ac090e3 docs: 添加快速上手指南
199+
4e9c0b2 docs: 添加安装说明和超时测试脚本
200+
5cc4817 feat: 添加问题排查文档和超时配置支持
201+
```
202+
203+
**总计**:
204+
- 新增文档:8 个
205+
- 代码修改:1 个文件
206+
- 新增脚本:2 个
207+
- 总代码量:+2000+ 行
208+
209+
---
210+
211+
*创建日期*: 2026-03-15
212+
*修复版本*: oho CLI v1.1+
213+
*状态*: ✅ 已解决并推送

0 commit comments

Comments
 (0)