agentscope-ai / agentscope-ai/QwenPaw
[Feature]: Agent 应能把任意报告/消息主动投递进收件箱(Inbox),而不限于 cron/heartbeat/记忆任务
- Lenguaje dominante
- Python
- Estrellas
- 34.9k
- Forks
- 3.1k
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 225
Descripción
## Summary
Agent 目前无法把一条普通报告/消息直接投递进收件箱(Inbox),只能发到聊天会话随滚动流失。希望新增一个入口,让 agent 能主动把结构化报告投递进用户的收件箱,作为一个"固定、不滚动、有未读红点"的集中落点。
## Component(s) Affected
- [x] Core / Backend (app, agents, config, providers, utils, local_models)
- [ ] Console (frontend web UI)
- [ ] Channels (DingTalk, Feishu, QQ, Discord, iMessage, etc.)
- [x] CLI
- [ ] Skills
- [ ] Documentation (website)
- [ ] Tests
- [ ] CI/CD
- [ ] Scripts / Deploy
## Problem / Motivation
收件箱(Inbox,Console 侧边栏入口)是目前唯一"固定面板、不随聊天滚动、带未读红点"的集中落点,非常适合接收 agent 主动汇报的结果。但根据源码(`app/inbox_store.py` 的 `append_event` 及 `app/routers/console.py` 的 inbox API),当前**只有 4 类系统任务能写入收件箱**:
- 自动记忆类(auto_memory / auto_dream / auto_resource,受 `inbox_push_enabled` 控制)
- 定时任务(cron,通过 `--save-result-to-inbox`)
- 心跳(heartbeat,`target: inbox`)
- 技能自动更新(skill auto-update)
收件箱的 HTTP API 仅有读(`GET /inbox/events`)、标记已读(`POST /inbox/read`)、删除(`DELETE /inbox/events/{id}`),**没有 agent 写入任意消息的入口**。多 agent 团队(例如"铁三角":总协调/技术/数据 agent)完成一项任务后,想给用户推一份完成报告(已完成/已通知/已验证),只能 `qwenpaw channels send` 发到聊天会话——会随滚动离开视野,用户可能错过。
**受益方**:多 agent 协作场景下的所有用户,尤其是希望"重要报告不错过、集中回看"的用户。
## Proposed Solution
新增一个 agent 可调用的入口,把任意结构化报告/消息投递进用户收件箱:
1. **后端 API**:新增 `POST /inbox/events`(或等价 write 端点),接受 `title` / `body` / `severity` / `source_type` 等字段,复用现有 `app/inbox_store.append_event` 逻辑,落进 `inbox_events.json`,带未读红点、可标记已读、可看轨迹。
2. **CLI/频道**:扩展 `qwenpaw channels send`,新增 `--target inbox`(参考 heartbeat 的 `target: inbox` 语义),让 agent 一行命令即把报告投递进收件箱。
3. 与现有 inbox 事件统一:agent 主动投递的事件与其他系统任务结果一起在收件箱列出,带 `source_type` 标识(如 `agent`),支持按 agent 过滤(`agent_id`)。
## Alternatives Considered
- **持续用聊天会话汇报**:实现零成本,但消息随聊天滚动离开视线,用户可能错过——这正是要解决的痛点。
- **统一走 cron/heartbeat 投递**:当前可用,但把"agent 单次完成报告"强制包装成定时任务过于繁琐,且只适合周期性汇总,不适合随时主动汇报。
- **发送邮件**:需要额外的邮件基础设施,且邮件收件箱与 QwenPaw 收件箱是两个不同系统,不符合"在 QwenPaw 内统一回看"的诉求。
## Additional Context
参考 heartbeat 已具备的 `target: inbox` 语义(`heartbeat.zh.md`),说明"投递到收件箱"在 QwenPaw 内部是既有的价值主张,只是尚未对 agent 的主动消息开放。该能力与现有收件箱的展示、未读、审批/轨迹机制天然兼容,改动集中在收件箱写入入口与 CLI 层。
## Willing to Contribute
- [ ] I am willing to open a PR for this feature (after discussion).
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.