agentscope-ai / agentscope-ai/QwenPaw
[Bug]: feishu 通道配置被意外清空(enabled=false/app_id空)导致通道停用,cron 投递报 KeyError('channel not found: feishu')
- Dominant language
- Python
- Stars
- 34.9k
- Forks
- 3.1k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 225
Description
## 问题描述 / Description
Feishu 通道配置被意外清空,导致飞书通道停用,且 cron 定时任务投递报错 `KeyError('channel not found: feishu')`。
### 环境
- QwenPaw: 2.1.0
- OS: Linux
- 渠道: feishu (飞书)
### 症状
1. 运行中的 `agent.json` 里 `channels.feishu` 段的配置被清空:
- 备份(2026-08-29 06:30)正常:`enabled: true`,`app_id: cli_a958c6e1....`,`app_secret: <完整>`
- 异常时:`enabled: false`,`app_id: ""`,`app_secret: ""`
2. 飞书 WebSocket 通道不再启动,飞书内发消息无响应。
3. cron 定时任务(23:40 批处理)执行后投递失败:`KeyError('channel not found: feishu')`,job 标记 error。
### feishu channel 配置来源(源码佐证)
`qwenpaw/app/channels/feishu/channel.py`:
- 优先读 `agent.json` 的 `config.app_id / config.app_secret / config.enabled`
- env fallback:`FEISHU_APP_ID / FEISHU_APP_SECRET / FEISHU_CHANNEL_ENABLED`(本次环境无这些 env)
- 即配置来源单一在 agent.json,一旦写空则通道必然静默停用。
### 时间线(日志佐证)
- 当天约 00:04 有一次 `AgentConfigWatcher (default): config changed` 触发 graceful reload,reload 后 workspace 仅注入 1 个 channel(console);feishu 未重新启动。
- 之后所有 cron 投递均报 `KeyError('channel not found: feishu')`。
- 服务重启后也未恢复,因配置已被写空。
## 期望行为 / Expected
- 通道配置不应在运行时被静默清空(疑似 zero-downtime reload 误写,或配置持久化 bug)。
- cron 投递遇到 disabled/missing channel 时,应给出清晰错误(而非模糊 `KeyError('channel not found: ...')`),并提示检查配置。
## 请维护者确认
- 根因是否属于 **zero-downtime reload 误写/丢失 channel 配置**(同此前 #673 / #636 hot-reload stop/remove channels 一类,或 #7364 reload 复用 closed 服务一类)。
- 是否应在 `AgentConfigWatcher` reload 时对既有 channel 配置做合并而非整体覆盖回空壳。
## 附注
若确属 reload bug,将考虑在 issue 关闭后补充: 使用备份恢复 feishu 配置、并考虑给相关渠道配置增加"非空校验/拒绝回写空值"保护。
Contributor guide
Assessment
This issue has not been assessed yet.