agentscope-ai / agentscope-ai/QwenPaw

[Feature]: Agent 应能把任意报告/消息主动投递进收件箱(Inbox),而不限于 cron/heartbeat/记忆任务

Abierto
#6,917 1 comentario 0 reacciones 0 asignados Ver en GitHub
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

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.