[Bug] 「本地执行不可联网」提示按发言人权限 system prompt 中段,群聊共享会话里如果联网权限不同则会导致整轮缓存失效
维护者通常 1 天内回复
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- python
- 领域
- backend, performance
调研方向
Start by reading astr_main_agent.py's build_main_agent in v4.29.3, or astr_main_agent/computer_use.py's ## Execution policy in master, and trace where LOCAL_NETWORK_POLICY_NOTICE enters the prompt. The issue proposes moving speaker-dependent text to the current user message as temporary content or keeping the session prompt consistent. Done means alternating speakers in a shared group session no longer invalidates the prompt prefix cache; an open linked pull request indicates work is already underway.
由索引模型根据 Issue 内容生成。
描述
问题描述
环境:computer_use_runtime = local,管理员可联网、普通成员不可联网(默认)。群聊不开隔离对话(整个群共用一个会话),模型走 OpenAI 兼容接口(DeepSeek,自动前缀缓存)。
LOCAL_NETWORK_POLICY_NOTICE 只在「当前发言人可执行、不可联网」时追加到 system_prompt(v4.29.3 在 astr_main_agent.py build_main_agent 末尾;master 在 astr_main_agent/computer_use.py 的 ## Execution policy)。它的位置在 system prompt 中段,后面还有工具使用提示、workspace 说明等。
于是同一个群里管理员和普通成员交替发言时,system prompt 会在这句话处时有时无,从这里往后的 system 内容和全部历史都无法命中前缀缓存。
实测(同一群、同一会话,30 轮主模型请求):
- system prompt 只有两种:8326 字 / 8600 字,差的正好是这句提示;
- 同一类人连续发言、间隔较短时,缓存命中 96%~99%;
- 管理员与成员每切换一次,那一轮约 10 万 token 全部未命中,耗时从约 20 秒变为 30~150 秒。
相关:#10134 把这条提示从工具结果移进了 system prompt。私聊里发言人固定,所以不受影响;只有多人共用一个会话时才会出现。
建议:按发言人变化的内容不要放进 system prompt。例如放到当前用户消息末尾作为临时内容(mark_as_temp),这样不影响前面的缓存;或者对同一会话保持一致。
如何复现?
- computer_use_runtime 设为 local,保持普通成员不可联网(默认)。
- 群聊中不开启隔离对话。
- 管理员和普通成员交替 @ 机器人,对比两次请求的 system prompt,或查看服务商返回的缓存命中 token。
AstrBot 版本
4.29.3
操作系统
Linux
部署方式
Docker
使用的消息平台适配器
aiocqhttp
错误日志
无报错,表现为缓存命中率下降、响应变慢。
辅助信息
No response
检查清单
- 主要语言
- Python
- 星标
- 46.4k
- 派生
- 3.4k
- 平均合并
- 1 天 11 小时
- 30 天内合并 PR
- 120
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
AstrBotDevs/AstrBot 的其他 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 75/100
AstrBotDevs/AstrBot#11038 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
AstrBotDevs/AstrBot#11034 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
AstrBotDevs/AstrBot#10999 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug] OpenAI-compatible Gemini 工具 schema const 导致 400可能已有人在做 @arccat-114 于 17 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 77/100
AstrBotDevs/AstrBot#10720 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug] Discord slash command sync aborts with KeyError when a plugin handler is defined in a submodule可能已有人在做 @yuexia5 于 21 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 77/100
AstrBotDevs/AstrBot#10626 · 1 条评论 ·
维护者通常 1 天内回复
查看 AstrBotDevs/AstrBot 的全部 Issue
相似的 Issue
-
channels:edit check:passed
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
aws-samples/sample-aws-genai-db-modernizer#2097 · 1 条评论 ·
维护者通常 1 天内回复
-
enhancement
难度 2/5 1-3 小时 新手友好度 67/100
ietf-tools/datatracker#12027 ·
维护者通常 1 天内回复
-
[Bug]: Python SDK overwrites OVPack backups with HTTP 200 JSON errors可能已有人在做 @stefanielizeth73-art 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
volcengine/OpenViking#7347 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
deepset-ai/haystack-core-integrations#4228 ·
维护者通常 1 天内回复