Repository navigation
Releases
Releases · sinabs/spring-agent-scope
v2.0.0
Yoke 2.0.0
Agent 从 ReActAgent 换成 HarnessAgent,会话历史放进 Redis:重启不丢,多个副本共享。
不兼容变更
- 必须有 Redis。 连接串写在
yoke.redis.uri(prod 读环境变量YOKE_REDIS_URI,没有默认值),启动期校验格式并 ping,连不上启动即失败,报错里的连接串已脱敏。本地用docker compose up -d拉起。 - 会话按
(userId, sessionId)寻址,两个 ID 都受@SafeId约束(字母、数字、_.-,1~64 位,不能全是点)。 - 模型能用的工具大幅收紧:文件系统、shell、联网、子 Agent 在装配期关掉;
web_fetch、web_search和读类的记忆与会话工具(memory_get、memory_search、session_history、session_list、session_search)被拒绝,避免模型读到别的用户的数据;工作区里的tools.json不再生效。 POST /api/chat/stream的请求体里,content是内容块形式(包括全是文本块、带图片)时返回 400,目前只支持字符串。
新功能
HarnessAgentFactory每请求新建HarnessAgent,用完关闭(HarnessAgent.Builder不能共享,连续build()中间件会越积越多)。- Compaction:
yoke.compaction.triggerMessages/keepMessages按条数触发压缩,非法值回落到默认;压缩后的摘要放在context的第一条消息里。 LoggingMiddleware记录每次调用的耗时,不记录工具参数与输出。- 启动时在工作区创建默认
AGENTS.md,消除 AgentScope 的启动警告。 - 根目录
docker-compose.yml,集成测试用 Testcontainers 拉起真实 Redis。
修复
- Agent 在结果交给调用方之后才关闭,关闭失败只记日志,不会把已经成功的对话变成 500,流式接口也不会在
RUN_FINISHED之后再追加RUN_ERROR。
其他
- 版本号 1.0.1 → 2.0.0。
- 清理 IDEA 警告,README 中英同步。
v1.0.1
Yoke 1.0.1
流式接口改用 AG-UI 标准协议:SSE 只做传输,事件契约交给官方 agentscope-extensions-agui(只引库,不引 starter)。
不兼容变更
POST /api/chat/stream的请求体改为标准 AG-UIRunAgentInput(threadId即会话 ID,runId必填),必须是application/json;旧的{"sessionId", "message"}请求体和私有事件(textDelta、toolCall、toolResult、hint、done、error)已移除,没有并存。- 响应事件换成 AG-UI 事件:
RUN_STARTED、TEXT_MESSAGE_*、TOOL_CALL_*、CUSTOM(token_usage、hint)、RUN_FINISHED或RUN_ERROR。没有done事件,完整回复由客户端拼接TEXT_MESSAGE_CONTENT。 POST /api/chat的sessionId改用与threadId相同的规则校验(字母、数字、_.-,1~64 位,不能全是点),如user:42这类值现在返回 400;空白仍视同未传。
新功能
AguiStreamCodec解析并校验请求体,只采用最后一条 user 消息,丢弃客户端的tools等字段,适配器上设AGENT_ONLY,客户端不能给 Agent 加工具或改写历史。HintEventConverter把框架提示转成CUSTOM name=hint,用量走CUSTOM name=token_usage。- 错误通过
RUN_ERROR体现,HTTP 状态码仍是 200,Agent 创建失败时也会先补RUN_STARTED。
其他
- 版本号 1.0.0 → 1.0.1。
- 删除
ChatEvent、EventCodec;ArchUnit 规则放行codec与config中的 AG-UI 类型。
v1.0.0
Yoke 1.0.0
首个正式版本:Spring Boot 4.1 + AgentScope Java 2.0 的单模块 Agent 服务,支持同步与 SSE 流式对话,内置天气工具。
新功能
- SSE 流式对话
POST /api/chat/stream:边推理边推送事件(textDelta、toolCall、toolResult、done、error)。框架吐出的工具参数碎片在服务端攒齐;模型出错时发error事件而不是断连。 - 天气工具
get_weather:通过开源的 Open-Meteo 查询当前天气,无需密钥。 - 同步对话
POST /api/chat:一次返回整段回复。 - 本地环境接火山方舟(OpenAI 兼容协议),密钥读环境变量
ARK_API_KEY。
修复与加固
- 流式响应补上
charset=UTF-8,解决 IDEA 等客户端把中文显示成乱码的问题。 - 天气工具:上游响应限长读取(最多 64KB);上游缺必须字段时提示服务不可用,不再用 0 编造天气;很小的经纬度不再被拼成科学计数法。
其他
- 对外事件定义在
model.ChatEvent(sealed),框架类型只允许出现在codec和middleware,由 ArchUnit 测试守着。 - 代码风格统一:空白判断用 Hutool
StrUtil,判空用Objects.isNull/nonNull,默认值用Optional。 - 新增
src/test/java/com/yoke/curl/01-sse-streaming.http,在 IDEA 里点绿色三角即可运行示例请求。
注意
- Open-Meteo 免费接口仅限非商业使用,商用需换付费版或别的数据源。
- 同一会话的并发请求不会被串行化,由调用方保证同一会话同一时间只发一个请求。
完整变更见 #1