[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時間
- マージ済み PR(30日)
- 120
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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
-
[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時間 初心者へのやさしさ 72/100
duolicious/duolicious#1943 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
fedora-infra/anitya#2166 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
NVIDIA/auto-ontology#486 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
NVIDIA/SkillEvaluator#446 ·
メンテナーはふだん 2 日以内に返信