Skip to content

v1.9.0 —— 后台任务不再像卡死

Latest

Choose a tag to compare

@javaside javaside released this 10 Aug 06:09

springai-agentdemo v1.9.0

v1.8.3 基础上的功能版(minor)。核心交付物仍是终端编码智能体 springai-code-tui

本版主题是**「后台任务不再像卡死」:v1.8.0 引入后台子 agent 之后,两个体验痛点被先后修掉——运行中的任务行加上波光动画**(耗时计数器 1 秒才跳一次,太静,看起来像卡死);后台任务完成通知改为明确要求模型继续推进 Todo 计划(此前模型常常只是确认一下结果就停住)。另外把 run_in_background 的使用条件写进了工具描述,从源头减少误用后台。无破坏性变更,无新增依赖。

下载物仍是两个自包含运行包(解压即用,无需构建):

  • springai-code-tui-1.9.0-dist.tar.gz(macOS / Linux 首选)
  • springai-code-tui-1.9.0-dist.zip(Windows 首选)

两者内容一致:启动脚本(bin/)+ 主 jar + 全部运行期依赖(lib/)+ LICENSE/NOTICE/README。运行时界面版本标识为 v1.9.0

完整功能全景与⚠️安全声明见 v1.3.0 发布说明v1.0.0 发布说明;本文只列出相对 v1.8.3 的变化。


✨ 新功能:后台任务面板 RUNNING 行波光动画

⏱ 后台任务面板/tasks 面板里运行中)的任务行现在带一层波光动画——文字在亮黄加粗的基础上以帧为节律扫过一条光带,一眼就能看出「这条还在动」。

为什么需要它:面板上每行只有一个 1 秒跳一次的耗时计数器,其余全部静态。长时间跑一个没输出的任务(比如等一个外部 API、卡在一个慢工具上)时,那行看起来就像死了一样,你只能干瞪眼猜它是不是挂了。加动画之后,「在跑」和「死了」从视觉上分开了。

只对 RUNNING 生效✓ 完成 / ✗ 失败 / ⊘ 已终止都是终态,保持原来的静态样式——终态不需要「动」,动起来反而添乱。

动画复用状态栏已有的 shimmer 实现(同一套波形),颜色仍是运行态专属的亮黄加粗(TODO_RUN),与完成/失败行的绿/红区分开。


🐛 修复:后台完成通知现在要求模型「继续干」

后台任务结果送达模型时,通知结尾的措辞改了:

  • 之前:「以上是你先前派出的后台任务的结果,请据此继续。」——模型经常只回一句「好的,收到结果」就停住,根本没往下推进
  • 现在:「请检查你的 Todo 计划列表,找出下一项 pending 的任务并立即执行;如果所有任务已完成,向用户汇报最终结果。」——明确要求模型继续计划而非仅确认结果。

根因:通知没有告诉模型「接下来该做什么」。后台任务的意义是「派出去的活不占着回合」,主模型收到结果后理应接着跑计划里的下一项——但「据此继续」这四个字没把这件事说透,模型理解成「确认收到」也说得通。把期望动作写明之后,模型的行为就有了明确的锚点。

这是纯提示词改动:不涉及任何执行逻辑,只改 BackgroundNotifier 拼接的文本;既不影响后台任务的结果回收,也不影响权限判定。


🔧 工程:run_in_background 使用条件写进工具描述

Task / ParallelTasks 的工具描述(模型看到的说明文字)重写,把默认前台后台的严格使用条件讲清楚:

  • 默认前台(不传或传 false):大多数编码流程是顺序的——explore → plan → implement → test,每一步都需要上一步的结果,后台反而添乱。
  • 仅当全部成立才用后台:① 任务真正独立(其输出不决定你的下一步);② 之后会通过 TaskOutput 取结果;③ 任务只读或只用预批准工具(后台任务不能弹审批,需要批准的调用会被静默拒绝)。
  • 不要因为任务慢就转后台:一个你最终需要的慢任务,前台等它比后台等它再取结果更干净。

为什么重要:此前描述对后台的适用场景说得太宽松(「长调查可以后台跑,你继续干别的」),模型容易把需要写文件、需要审批的任务也派到后台——然后所有 ASK 全被静默拒绝,模型对着失败结果反复重试直到耗光回合。把条件收紧到工具描述里,等于把 v1.8.0 发布说明里那条「后台任务 ASK 一律 DENY」的警告前置到模型决策那一刻。


🧪 质量

mvn -pl springai-code-tui test1387 个用例,0 失败 0 错误(与 v1.8.3 持平;本版三个改动均为界面/提示词层面,无新增单测)。


🔐 校验(SHA-256)

8e2eb1008aad70e33fb2d3fe4b70d49c5f1425797e0f3722926b05e306709fef  springai-code-tui-1.9.0-dist.tar.gz
3f4d602aa7a5ce30a12a1c1ce2181f3f5588bf98ef9ac9b42e53dae0a48080fa  springai-code-tui-1.9.0-dist.zip
shasum -a 256 -c <<'EOF'
8e2eb1008aad70e33fb2d3fe4b70d49c5f1425797e0f3722926b05e306709fef  springai-code-tui-1.9.0-dist.tar.gz
3f4d602aa7a5ce30a12a1c1ce2181f3f5588bf98ef9ac9b42e53dae0a48080fa  springai-code-tui-1.9.0-dist.zip
EOF

📄 许可

Apache License 2.0。发布包内随附 LICENSENOTICE(含所分发第三方库:Spring AI / Spring Boot / spring-ai-community 为 Apache 2.0,TamboUI 为 MIT)。本版未引入任何新的第三方依赖

环境:JDK 17+,macOS / Linux / Windows。