遗留问题报告 --- supervisor-agent 记忆链路与联调事项
日期 :2026-09-20
用途 :后续逐项解决的工作清单(含前因后果,接手即可动手)
背景:本次会话完成了长期记忆链路端到端验证、消费可观测改造(已提交 575733a)、日志工具建设(trace.py / watch-agents.ps1),过程中发现以下遗留项。
一、鉴权依赖项(阻塞管理后台归档联调,2 项)
前因 :平台鉴权整体未调试,supervisor 侧 AUTH_ENABLED=false(deployment env + Nacos 热更新持续压 False)。管理后台(qed-auth-service 归档模块)的 Kafka 消费配置中有两项本质是鉴权问题,被此卡住。
| # | 项 | 现状 | 待办 |
|---|---|---|---|
| 1 | USER_CONTEXT_ARCHIVE_SCHEDULE_TOKEN |
_required 强校验,不配服务起不来;它是 /start /stop /status 三运维接口的口令(hmac 比对 X-Schedule-Token 头)。谁生成/放哪个 secret/谁持有------鉴权方案没定,无人能拍 |
鉴权方案定稿后:生成强随机值(openssl rand -hex 32)入 secret,统一下发给 admin 侧 |
| 2 | USER_CONTEXT_ARCHIVE_AUTOSTART true/false |
当前 false。技术结论已给:推荐 true(常驻消费)------流式归档语义 + supervisor 侧 mq_consumer 同款先例 + Redis 分布式锁已防多副本重复消费。但 A 方案下 token 退化为运维口令(谁保管)、B 方案下是调度凭证(谁调度)都等鉴权定稿 | 鉴权定稿后拍板;拍 A 则顺带明确 token 的运维保管人 |
已回复管理后台的确定项(不依赖鉴权,全部实测钉死,勿重复调查):
- broker
10.0.6.5:9092;SASL 机制PLAIN、security_protocol 省略 (实测SASL_PLAINTEXT三种机制均连不上,不传 protocol + PLAIN 通过;与 supervisor 生产配置一致) mq-secretkey 名:bootstrap_servers/sasl_username/sasl_password(dev/test 同实例同值)- Topic 真名:
dev./test.supervisor.turn.completed(3 分区,可订阅)------admin configmap 必须按环境带前缀 - Group:
{env}-supervisor-turn-completed-history-archive(需补 dev/test overlay) - deployment 应改引
mq-secret(现引qed-auth-runtime,其中无任何 Kafka key) - ⚠️
SCHEDULE_AUTH_BYPASS仅开发期可开,所有 overlay/生产禁配 true
二、长期记忆设计缺口(§10.2.1 v10 待实现,详见同目录差异报告)
前因 :设计文档已定稿(3_agent_design.md §10.2.1,L2188/L2190 标注待实现、需 openspec-propose),代码停在 §10.2 简化版。dev 阶段够用;放量前必补前两项:
| 优先级 | 项 | 后果实例 |
|---|---|---|
| 中(放量前) | upsert/retract 覆盖语义 | 用户改主意(「不再吃素」)旧记忆残留------过敏类记忆过时是真实事故源 |
| 低 | L0 写前去重(memory.search 前置) | AGM 中「花生过敏」已存 2 条 |
| 低 | idle 5min 多轮聚合 | 每轮跑一次 LLM 压缩,省钱导向,量大再做 |
| 低 | Redis 幂等(现进程内存 dict)/ 死信队列 | dev 可容忍,生产化清单 |
| 低 | evals/memory 四指标守门 | 与 prompt 迭代一并建 |
三、子 Agent / 平台侧问题(非 supervisor 代码,需转交)
| # | 问题 | 证据 | 应转给 |
|---|---|---|---|
| 1 | canteen 复合长句持续 schema_invalid :phase_one_llm_json parse=invalid_json / field_paths=['result.route_to'] → LLM_OUTPUT_INVALID 降级 |
多意图 trace 实录("今天食堂有什么菜?顺便看看附近哪里有充电桩"4 连败) | canteen-agent 团队 |
| 2 | LLM 网关忽略 model 参数:请求 flash 实际返回 deepseek-v4-pro(用 bogus model 名也能通);子 Agent 侧全在用 pro(reasoning 模型,输出格式不稳,疑似 #1 上游根因) |
直连 18080 网关实测 | 网关/平台侧 |
| 3 | biodiversity Nacos prompt 缺失 :Prompt not found: bio-planner / bio-response-generator,每 10s 刷 2 条 ERROR |
Nacos public ns 141 配置中 bio 相关仅 5 个,两 key 从未创建 | biodiversity-agent 团队 |
| 4 | canteen slot_filler / response_generator prompt 也是 PromptContractError → static 兜底(有兜底,危害小) |
watch 日志 WARNING | canteen-agent 团队 |
| 5 | query-agent 多设施查询只回单卡("附近充电站、便利店、厕所"只出 1 张厕所卡) | 直 curl 8014 返回 dict 非 list | agent-query 团队(已有交接报告) |
| 6 | 跳板机(43.139.222.166:36000 root)正被陌生 IP 爆破(failed login 记录) | 登录横幅实录 | 运维:改仅密钥登录或强密码 |
四、supervisor 待办(本仓库内)
| # | 项 | 说明 |
|---|---|---|
| 1 | 575733a 未 push(含 60497a6) | push 即部署 dev------push 前按惯例跑三轨验证 + 用户确认;内容:记忆消费 info 日志 + 溯源行 + 埋点命名(_route_after_intent/_route_after_dispatch) |
| 2 | 线上 pod 曾手工注入 mq_consumer.py 验证(重启即失,无残留风险),正式生效依赖 #1 | 已在差异报告附录注明 |
| 3 | Nacos 上 supervisor prompt 若有本地改动未同步,push 前核对(Nacos 三层命名一致性铁律) | --- |
| 4 | scripts/agm-query.py 未做(可选):把 AGM 查询命令包装成 uv run python scripts/agm-query.py <user_id> |
当前用 kubectl exec 一行式,能用但易贴错 |
五、本次已交付(对照,勿重复做)
- 长期记忆链路端到端验证(MQ→consumer→LLM 压缩→AGM/PG,TKE 实测,AGM 落库含溯源行)
- commit 575733a:消费日志 debug→info(skip/写入/置信度可见)+ content 头部
[trace=xxx turns=N]溯源 +MEMORY_LOG_CONTENT脱敏开关;60497a6:trace 埋点路由函数命名(Unnamed 消除) scripts/trace.py:终端 Langfuse trace 树(-v 带输入输出;ClickHouse 直查绕过 v4 events_only API 封锁)scripts/watch-agents.ps1:四路子 Agent 日志单窗口混流(滤噪 + ERROR 标红)docs/REPORT_长期记忆现状与设计差异.md:架构师汇报版差异报告- 管理后台 Kafka 接入 6 项确定参数(见一节)