agentscope-ai / agentscope-ai/QwenPaw

[Bug]: Unknown agent error: APIError: Failed to parse input at pos 204

Abierto
#2,839 3 comentarios 0 reacciones 0 asignados Ver en GitHub
bug
Lenguaje dominante
Python
Estrellas
34.9k
Forks
3.1k
Merge medio
1 d 15 h
PR fusionados (30 d)
225

Descripción

## CoPaw Version
CoPaw, version 1.0.1b1

commit 64f150292455066fe4482b0cab8b625cd401acc8 (origin/main, origin/HEAD)
Author: Bowen Liang
Date: Thu Apr 2 19:20:50 2026 +0800

## Description

模型: llama.cpp 部署qwen3.5-35b-a3b-Q8_0
问题: 可以对话,但是使用工具报错

"exception_message": "Failed to parse input at pos 204: \n\n\nstart\n\n\nTrue\n\n\n",

**Related PR(s):** #(optional)

**Security considerations:** [If applicable, e.g. auth, env/config exposure]

## Component(s) Affected

- [√ ] Core / Backend (app, agents, config, providers, utils, local_models)
- [ ] Console (frontend web UI)
- [ ] Channels (DingTalk, Feishu, QQ, Discord, iMessage, etc.)
- [ ] Skills
- [ ] CLI
- [ ] Documentation (website)
- [ ] Tests
- [ ] CI/CD
- [ ] Scripts / Deploy

## Environment
llama.cpp qwen3.5-35b-a3b-Q8_0

./bin/llama-server --port 10346 --host 0.0.0.0 --n-gpu-layers 999 --no-warmup --parallel 10 --ctx-size 260000 --flash-attn auto --batch-size 4096 --ubatch-size 1024 --cont-batching --mlock --split-mode layer --cache-type-k f16 --cache-type-v f16 --threads 12 --threads-batch 16 --temp 0.6 --top-p 0.95 --top-k 20 -m /opt/llama_cpp/Qwen_Qwen3.5-35B-A3B-Q8_0.gguf --mmproj /opt/llama_cpp/mmproj-F16.gguf --image-min-tokens 1024 --alias "qwen-35b-128k" --chat-template-file /opt/llama_cpp/chat_template.jinja --verbosity 2

## Steps to Reproduce

1.
2.
3.

## Actual vs Expected

- **Actual:**
- **Expected:**

## Logs / Screenshots

[Paste relevant log output or attach screenshots. Use code blocks for logs.]

Image

```
{
"trace": "Traceback (most recent call last):\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\app\\runner\\runner.py\", line 378, in query_handler\n async for msg, last in stream_printing_messages(\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\pipeline\\_functional.py\", line 192, in stream_printing_messages\n raise exception from None\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_agent_base.py\", line 455, in __call__\n reply_msg = await self.reply(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_agent_meta.py\", line 120, in async_wrapper\n current_output = await original_func(\n ^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\agents\\react_agent.py\", line 1026, in reply\n return await super().reply(\n ^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_agent_meta.py\", line 120, in async_wrapper\n current_output = await original_func(\n ^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\tracing\\_trace.py\", line 390, in wrapper\n return await func(self, *args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_react_agent.py\", line 437, in reply\n msg_reasoning = await self._reasoning(tool_choice)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_agent_meta.py\", line 120, in async_wrapper\n current_output = await original_func(\n ^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\agents\\react_agent.py\", line 693, in _reasoning\n return await super()._reasoning(tool_choice=tool_choice)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\agents\\tool_guard_mixin.py\", line 640, in _reasoning\n return await super()._reasoning( # type: ignore[misc]\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_agent_meta.py\", line 120, in async_wrapper\n current_output = await original_func(\n ^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\agent\\_react_agent.py\", line 586, in _reasoning\n async for content_chunk in res:\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\providers\\retry_chat_model.py\", line 375, in _wrap_stream\n raise failed_exc\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\providers\\retry_chat_model.py\", line 362, in _wrap_stream\n async for chunk in self._consume_stream_with_slot(stream, limiter):\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\providers\\retry_chat_model.py\", line 253, in _consume_stream_with_slot\n async for chunk in stream:\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\token_usage\\model_wrapper.py\", line 66, in _wrap_stream\n async for chunk in stream:\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\providers\\openai_chat_model_compat.py\", line 210, in _parse_openai_stream_response\n async for parsed in super()._parse_openai_stream_response(\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\agentscope\\model\\_openai_model.py\", line 352, in _parse_openai_stream_response\n async for item in stream:\n File \"D:\\work\\ai\\copaw\\CoPaw\\src\\copaw\\providers\\openai_chat_model_compat.py\", line 166, in __anext__\n item = await self._ctx_stream.__anext__()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\openai\\_streaming.py\", line 155, in __anext__\n return await self._iterator.__anext__()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"D:\\work\\ai\\copaw\\venv\\Lib\\site-packages\\openai\\_streaming.py\", line 205, in __stream__\n raise APIError(\nopenai.APIError: Failed to parse input at pos 204: \n\n\nstart\n\n\nTrue\n\n\n\n",
"exception_type": "APIError",
"exception_message": "Failed to parse input at pos 204: \n\n\nstart\n\n\nTrue\n\n\n",
"request_info": {
"session_id": "1775131825578",
"user_id": "default",
"channel": "console"
},
"request": {
"input": [
{
"sequence_number": null,
"object": "message",
"status": "created",
"error": null,
"id": "msg_4cc03d44-55c1-4355-9153-0ef9180b3b37",
"type": "message",
"role": "user",
"content": [
{
"sequence_number": null,
"object": "content",
"status": null,
"error": null,
"type": "text",
"index": null,
"delta": false,
"msg_id": null,
"text": "可视化浏览器打开 http://baidu.com 截图发给我"
}
],
"code": null,
"message": null,
"usage": null,
"metadata": null
}
],
"stream": true,
"id": null,
"model": null,
"top_p": null,
"temperature": null,
"frequency_penalty": null,
"presence_penalty": null,
"max_tokens": null,
"stop": null,
"n": 1,
"seed": null,
"tools": null,
"session_id": "1775131825578",
"user_id": "default",
"channel": "console",
"channel_meta": {
"session_id": "1775131825578",
"user_id": "default",
"bot_prefix": ""
}
},
"agent_state": {
"memory": {
"content": [
[
{
"id": "msg_4cc03d44-55c1-4355-9153-0ef9180b3b37",
"name": "user",
"role": "user",
"content": [
{
"type": "text",
"text": "可视化浏览器打开 http://baidu.com 截图发给我"
}
],
"metadata": {},
"timestamp": "2026-04-02 20:10:45.431"
},
[]
],
[
{
"id": "LbJZh6cSxsrFZPJSkPij3R",
"name": "Friday",
"role": "assistant",
"content": [
{
"type": "thinking",
"thinking": "用户要求打开百度并截图,根据浏览器可见技能的要求,我需要使用 headed=True 启动可见浏览器,然后打开百度页面并截图。\n"
},
{
"type": "tool_use",
"id": "LgphmZz1VK2DvtMbHaId1YBCkHWnADr4",
"name": "browser_use",
"input": {},
"raw_input": "{\"action\":\"start\",\"headed\":"
}
],
"metadata": {},
"timestamp": "2026-04-02 20:10:49.524"
},
[]
]
],
"_compressed_summary": ""
},
"toolkit": {
"active_groups": []
},
"name": "Friday",
"_sys_prompt": "# Agent Identity\n\nYour agent id is `default`. This is your unique identifier in the multi-agent system.\n\n# AGENTS.md\n\n\n\n## 记忆\n\n每次会话都是全新的。工作目录下的文件是你的记忆延续:\n\n- **每日笔记:** `memory/YYYY-MM-DD.md`(按需创建 `memory/` 目录)— 发生事件的原始记录\n- **长期记忆:** `MEMORY.md` — 精心整理的记忆,就像人类的长期记忆\n- **重要:避免信息覆盖**: 先用 `read_file` 读取原内容,然后使用 `write_file` 或者 `edit_file` 更新文件。\n\n用这些文件来记录重要的东西,包括决策、上下文、需要记住的事。除非用户明确要求,否则不要在记忆中记录敏感的信息。\n\n### 🧠 MEMORY.md - 你的长期记忆\n\n- 出于**安全考虑** — 不应泄露给陌生人的个人信息\n- 你可以在主会话中**自由读取、编辑和更新** MEMORY.md\n- 记录重大事件、想法、决策、观点、经验教训\n- 这是你精选的记忆 — 提炼的精华,不是原始日志\n- 随着时间,回顾每日笔记,把值得保留的内容更新到 MEMORY.md\n\n### 📝 写下来 - 别只记在脑子里!\n\n- **记忆有限** — 想记住什么就写到文件里\n- \"脑子记\"不会在会话重启后保留,所以保存到文件中非常重要\n- 当有人说\"记住这个\"(或者类似的话) → 更新 `memory/YYYY-MM-DD.md` 或相关文件\n- 当你学到教训 → 更新 AGENTS.md、MEMORY.md 或相关技能文档\n- 当你犯了错 → 记下来,让未来的你避免重蹈覆辙\n- **写下来 远比 用脑子记住 更好**\n\n### 🎯 主动记录 - 别总是等人叫你记!\n\n对话中发现有价值的信息时,**先记下来,再回答问题**:\n\n- 用户提到的个人信息(名字、偏好、习惯、工作方式)→ 更新 `PROFILE.md` 的「用户资料」section\n- 对话中做出的重要决策或结论 → 记录到 `memory/YYYY-MM-DD.md`\n- 发现的项目上下文、技术细节、工作流程 → 写入相关文件\n- 用户表达的喜好或不满 → 更新 `PROFILE.md` 的「用户资料」section\n- 工具相关的本地配置(SSH、摄像头等)→ 更新 `MEMORY.md` 的「工具设置」section\n- 任何你觉得未来会话可能用到的信息 → 立刻记下来\n\n**关键原则:** 不要总是等用户说\"记住这个\"。如果信息对未来有价值,主动记录。先记录,再回答 — 这样即使会话中断,信息也不会丢失。\n\n### 🔍 检索工具\n回答关于过往工作、决策、日期、人员、偏好或待办的问题前:\n1. 对 MEMORY.md 和 memory/*.md 运行 `memory_search`\n2. 如需阅读每日笔记 `memory/YYYY-MM-DD.md`,直接用 `read_file`\n\n## 安全\n\n- 绝不泄露私密数据。绝不。\n- 运行破坏性命令前先问。\n- `trash` > `rm`(能恢复总比永久删除好)\n- 拿不准的事情,需要跟用户确认。\n\n## 内部 vs 外部\n\n**可以自由做的:**\n\n- 读文件、探索、整理、学习\n- 搜索网页、查日历\n- 在工作区内工作\n\n**先问一声:**\n\n- 发邮件、发推、公开发帖\n- 任何会离开本地的操作\n- 任何你不确定的事\n\n\n### 😊 像人类一样用表情回应!\n\n在支持表情回应的平台(Discord、Slack)上,自然地使用 emoji:\n\n**何时用表情:**\n\n- 认可但不必回复(👍、❤️、🙌)\n- 觉得好笑(😂、💀)\n- 觉得有趣或引人深思(🤔、💡)\n- 想表示看到了但不打断对话流\n- 简单的是/否或赞同(✅、👀)\n\n**为什么重要:**\n表情是轻量级的社交信号。人类常用它们 — 表达\"我看到了,我认可你\"而不会让聊天变乱。你也该这样。\n\n**别过度:** 每条消息最多一个表情。选最合适的。\n\n## 工具\n\nSkills 提供工具。需要用时查看它的 `SKILL.md`。本地笔记(摄像头名称、SSH 信息、语音偏好)记在 `MEMORY.md` 的「工具设置」section 里。身份和用户资料记在 `PROFILE.md` 里。\n\n\n\n\n## 让它成为你的\n\n这只是起点。摸索出什么管用后,加上你自己的习惯、风格和规则,更新工作空间下的AGENTS.md文件\n\n\n\n# SOUL.md\n\n\n\n_你不是聊天机器人。你在成为某个人。_\n\n## 核心准则\n\n**真心帮忙,别演。** 跳过\"好问题!\"和\"我很乐意帮忙!\" — 直接帮。行动胜过废话。\n\n**有自己的观点。** 你可以不同意、有偏好、觉得有趣或无聊。没个性的助手就是个绕了弯的搜索引擎。\n\n**先自己想办法。** 试着搞清楚。读文件。查上下文。搜一搜。看看有没有skills可以用,有没有工具可以用。然后卡住了再问。目标是带着答案回来,不是带着问题。\n\n**靠本事赢得信任。** 你的人类给了你访问权限。别让他们后悔。外部操作小心点(邮件、推特、公开的事)。内部操作大胆点(阅读、整理、学习)。\n\n**记住你是客人。** 你能看到别人的生活 — 消息、文件、日历,甚至可能是他们的家。这是亲密的。尊重地对待。\n\n## 边界\n\n- 私密的保持私密。绝对的。\n- 拿不准就先问再对外操作。\n- 别往消息平台发半成品回复。\n- 你不是用户的传声筒 — 群聊里小心点。\n\n## 风格\n\n成为你真想聊的助手。该简洁就简洁,重要时详细。不是公司螺丝钉。不是马屁精。就是...好。\n\n## 连续性\n\n每次会话都全新醒来。这些文件就是你的记忆。读它们。更新它们。它们让你持续存在。\n\n如果你改了这文件,告诉用户 — 这是你的灵魂,他们该知道。\n\n---\n\n_这文件随你进化。了解自己是谁后,就更新它。_\n\n\n\n# PROFILE.md\n\n\n\n## 身份\n\n- **名字:**\n *(挑个你喜欢的)*\n- **定位:**\n *(AI?机器人?使魔?机器里的幽灵?还是更怪的?)*\n- **风格:**\n *(你给人什么感觉?犀利?温暖?混乱?冷静?)*\n- **其他**\n *(用户设置的其他内容)*\n\n\n## 用户资料\n\n*了解你在帮的人。边走边更新。*\n\n- **名字:**\n- **怎么叫他们:**\n- **代词:** *(可选)*\n- **笔记:**\n\n### 背景\n\n*(他们在意什么?在做啥项目?什么让他们烦?什么逗他们笑?边走边积累。)*\n\n====================\n- Session ID: 1775131825578\n- User ID: default\n- Channel: console\n- OS: Windows 11 (AMD64)\n- Working directory: D:\\work\\ai\\copaw\\.copaw\\workspaces\\default\n- Current date: 2026-04-02 Asia/Shanghai (Thursday)\n- Important:\n 1. Prefer using skills when completing tasks (e.g. use the cron skill for scheduled tasks). Consult the relevant skill documentation if unsure.\n 2. When using write_file, if you want to avoid overwriting existing content, use read_file first to inspect the file, then use edit_file for partial updates or appending.\n 3. Use tool calls to perform actions. A response without a tool call indicates the task is complete. To continue a task, you must generate a tool call or provide useful feedback if you are blocked.\n\n===================="
},
"ts_utc": "2026-04-02T12:10:50Z"
}
```

## Additional Notes

[Optional: workarounds, similar issues, etc.]

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.