agentscope-ai / agentscope-ai/QwenPaw
[Bug]: Unknown agent error: APIError: Failed to parse input at pos 204
- 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.]
```
{
"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
Evaluación
Este issue todavía no se ha evaluado.