Skip to content

后台会话

后台会话(Background Sessions)允许您在主会话中启动并行的非阻塞任务,让 Hermes 在"后台"执行耗时操作,同时您可以继续使用主会话进行其他工作。

什么是后台会话

默认情况下,Hermes 的对话是同步的:您发送一条消息,等待智能体完成响应,然后才能发送下一条。

后台会话打破了这种限制:通过 /background 命令,您可以同时运行多个相互独立的任务,每个任务在自己的隔离环境中执行,完成后结果自动出现在主会话中。

主会话(交互式)
    ├── 后台任务 A:爬取 50 个网页并提取数据  [运行中...]
    ├── 后台任务 B:分析代码库并生成文档       [运行中...]
    └── 后台任务 C:下载并处理数据集          [运行中...]

启动后台会话

基本用法

/background 搜索并整理关于 Rust 异步编程的最新资料,生成一份学习大纲
/background 分析 ~/projects/my-app 目录下所有 Go 文件,找出潜在的性能问题
/background 从 GitHub API 获取我最近 30 天的提交记录,生成活动报告

命名后台任务

为任务指定名称,便于后续追踪:

/background --name "文献调研" 搜索并整理关于大型语言模型推理优化的学术论文,总结最新进展
/background --name "代码审查" 审查 backend/api 目录下的所有 Go 文件,按严重程度列出问题

指定工具集

后台任务默认继承主会话的工具集,也可以显式指定:

/background --toolsets "web,file" 下载并整理 React 官方文档的变更日志

独立的执行环境

每个后台会话拥有完全独立的执行环境:

独立对话历史

后台会话有自己的上下文,不与主会话共享对话历史:

主会话上下文:                    后台任务 A 上下文:
  [用户聊天记录]                    [系统提示]
  [用户最新消息]                    [任务指令]
                                    [任务执行过程...]

这意味着:

  • 后台任务不会"看到"主会话的敏感信息
  • 主会话不会被后台任务的大量中间输出填满
  • 多个后台任务之间完全隔离

独立任务 ID

每个后台会话获得唯一任务 ID,格式为 bg-<随机字符串>

后台任务已启动
ID: bg-a7f3c2d1
名称: 文献调研
状态: 运行中

查看后台任务状态

列出所有后台任务

/background list

输出:

ID            名称          状态      已用时    进度
-----------   -----------   -------   -------   ---------------------
bg-a7f3c2d1   文献调研      运行中    2m 34s    正在分析第 8/15 篇论文...
bg-b8e4d3f2   代码审查      完成      5m 12s    发现 12 个问题
bg-c9f5e4g3   数据处理      失败      1m 05s    连接超时

查看任务详情

/background status bg-a7f3c2d1

取消后台任务

/background cancel bg-a7f3c2d1

结果呈现

当后台任务完成时,结果以独立面板的形式出现在主会话中,不会打断当前对话流:

┌─────────────────────────────────────────────────────────┐
│  后台任务完成:文献调研  [bg-a7f3c2d1]  用时 8m 23s    │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ## LLM 推理优化:最新研究综述                          │
│                                                         │
│  ### 主要方向                                           │
│  1. **量化技术**:AWQ、GPTQ、SmoothQuant               │
│     - AWQ 在保持精度的同时实现 4x 压缩                  │
│  2. **推测解码**:Medusa、Eagle                         │
│     - 最高可实现 3x 速度提升                            │
│  3. **KV Cache 优化**:PagedAttention、FlashAttention   │
│                                                         │
│  ### 推荐阅读                                           │
│  - [AWQ 论文](https://arxiv.org/abs/2306.00978)        │
│  ...                                                    │
│                                                         │
│  [查看完整报告] [保存到文件] [开始对话]                 │
└─────────────────────────────────────────────────────────┘

与结果交互

完成后可以继续针对后台任务的结果提问:

/background resume bg-a7f3c2d1

这将切换到该后台会话,继续基于其上下文进行深入讨论。


实用场景示例

并行研究

同时启动多个研究任务,节省等待时间:

/background --name "竞品分析" 搜索并对比 5 个主流 AI API 网关产品的功能和定价

/background --name "技术评估" 分析 Kong、APISIX、Traefik 在高并发场景下的性能对比

/background --name "用户反馈" 搜索 Reddit 和 HackerNews 上关于 AI API 代理的用户讨论

三个任务并行执行,总时间接近最慢任务的时间,而非三个任务时间之和。

长时间数据处理

/background --name "日志分析" --toolsets "terminal,file" \
  分析 /var/log/nginx/access.log,统计每小时请求量、错误率、Top 10 慢接口,生成报告

后台代码生成

/background --name "测试生成" --toolsets "file,terminal" \
  为 service/ 目录下所有 Go 文件生成单元测试,使用 testify 框架,保存到对应的 _test.go 文件

监控与告警

/background --name "服务监控" \
  每 5 分钟检查 https://api.myservice.com/health,如果连续 3 次失败则在主会话中告警

配置后台任务

yaml
# ~/.hermes/config.yaml
background:
  max_concurrent: 5          # 最大并行任务数(默认 5)
  default_timeout: 3600      # 任务超时时间,秒(默认 1 小时)
  notify_on_complete: true   # 任务完成时在主会话显示通知
  notify_on_fail: true       # 任务失败时发送告警
  auto_cleanup_days: 7       # 自动清理 N 天前的已完成任务记录

注意事项

  • 后台任务消耗独立的 Token 配额,不与主会话共享
  • 关闭 Hermes 时,运行中的后台任务会被暂停(下次启动时提示是否恢复)
  • 后台任务无法直接访问主会话的记忆快照(但可以读取持久化的 MEMORY.md
  • 建议为长时间任务指定明确的 --name,便于后续追踪

基于 MIT 许可发布 | 由 Nous Research 开发