The GitHub repository was renamed from oh-my-opencode to oh-my-openagent, but all documentation, scripts, and source code references still pointed to the old repository name. This caused confusion for users who saw 'oh-my-opencode' in docs but a different repo name on GitHub. Updated all references across: - README files (en, ko, ja, zh-cn, ru) - CONTRIBUTING.md - docs/ (installation, overview, configuration, etc.) - Source code (schema URLs, GitHub API calls, issue links) - Test snapshots The npm package name remains 'oh-my-opencode' (unchanged). Fixes: https://x.com/Dhruv14588676/status/2031216617762468348
128 lines
3.4 KiB
Markdown
128 lines
3.4 KiB
Markdown
# Ollama Troubleshooting
|
|
|
|
## Streaming Issue: JSON Parse Error
|
|
|
|
### Problem
|
|
|
|
When using Ollama as a provider with oh-my-opencode agents, you may encounter:
|
|
|
|
```
|
|
JSON Parse error: Unexpected EOF
|
|
```
|
|
|
|
This occurs when agents attempt tool calls (e.g., `explore` agent using `mcp_grep_search`).
|
|
|
|
### Root Cause
|
|
|
|
Ollama returns **NDJSON** (newline-delimited JSON) when `stream: true` is used in API requests:
|
|
|
|
```json
|
|
{"message":{"tool_calls":[{"function":{"name":"read","arguments":{"filePath":"README.md"}}}]}, "done":false}
|
|
{"message":{"content":""}, "done":true}
|
|
```
|
|
|
|
Claude Code SDK expects a single JSON object, not multiple NDJSON lines, causing the parse error.
|
|
|
|
**Why this happens:**
|
|
- **Ollama API**: Returns streaming responses as NDJSON by design
|
|
- **Claude Code SDK**: Doesn't properly handle NDJSON responses for tool calls
|
|
- **oh-my-opencode**: Passes through the SDK's behavior (can't fix at this layer)
|
|
|
|
## Solutions
|
|
|
|
### Option 1: Disable Streaming (Recommended)
|
|
|
|
Configure your Ollama provider to use `stream: false`:
|
|
|
|
```json
|
|
{
|
|
"provider": "ollama",
|
|
"model": "qwen3-coder",
|
|
"stream": false
|
|
}
|
|
```
|
|
|
|
**Pros:**
|
|
- Works immediately
|
|
- No code changes needed
|
|
- Simple configuration
|
|
|
|
**Cons:**
|
|
- Slightly slower response time (no streaming)
|
|
- Less interactive feedback
|
|
|
|
### Option 2: Use Non-Tool Agents Only
|
|
|
|
If you need streaming, avoid agents that use tools:
|
|
|
|
- **Safe**: Simple text generation, non-tool tasks
|
|
- **Problematic**: Any agent with tool calls (explore, librarian, etc.)
|
|
|
|
### Option 3: Wait for SDK Fix
|
|
|
|
The proper fix requires Claude Code SDK to:
|
|
|
|
1. Detect NDJSON responses
|
|
2. Parse each line separately
|
|
3. Merge `tool_calls` from multiple lines
|
|
4. Return a single merged response
|
|
|
|
**Tracking**: https://github.com/code-yeongyu/oh-my-openagent/issues/1124
|
|
|
|
## Workaround Implementation
|
|
|
|
Until the SDK is fixed, here's how to implement NDJSON parsing (for SDK maintainers):
|
|
|
|
```typescript
|
|
async function parseOllamaStreamResponse(response: string): Promise<object> {
|
|
const lines = response.split('\n').filter(line => line.trim());
|
|
const mergedMessage = { tool_calls: [] };
|
|
|
|
for (const line of lines) {
|
|
try {
|
|
const json = JSON.parse(line);
|
|
if (json.message?.tool_calls) {
|
|
mergedMessage.tool_calls.push(...json.message.tool_calls);
|
|
}
|
|
if (json.message?.content) {
|
|
mergedMessage.content = json.message.content;
|
|
}
|
|
} catch (e) {
|
|
// Skip malformed lines
|
|
console.warn('Skipping malformed NDJSON line:', line);
|
|
}
|
|
}
|
|
|
|
return mergedMessage;
|
|
}
|
|
```
|
|
|
|
## Testing
|
|
|
|
To verify the fix works:
|
|
|
|
```bash
|
|
# Test with curl (should work with stream: false)
|
|
curl -s http://localhost:11434/api/chat \
|
|
-d '{
|
|
"model": "qwen3-coder",
|
|
"messages": [{"role": "user", "content": "Read file README.md"}],
|
|
"stream": false,
|
|
"tools": [{"type": "function", "function": {"name": "read", "description": "Read a file", "parameters": {"type": "object", "properties": {"filePath": {"type": "string"}}, "required": ["filePath"]}}}]
|
|
}'
|
|
```
|
|
|
|
## Related Issues
|
|
|
|
- **oh-my-opencode**: https://github.com/code-yeongyu/oh-my-openagent/issues/1124
|
|
- **Ollama API Docs**: https://github.com/ollama/ollama/blob/main/docs/api.md
|
|
|
|
## Getting Help
|
|
|
|
If you encounter this issue:
|
|
|
|
1. Check your Ollama provider configuration
|
|
2. Set `stream: false` as a workaround
|
|
3. Report any additional errors to the issue tracker
|
|
4. Provide your configuration (without secrets) for debugging
|