AIGC标识 大家都在聊 Agent Harness,Java 团队也该有自己的 Runtime 了:Pi Java 近期迭代

最近 AI Agent 圈的讨论,正在从“哪个模型更强”转向“同一个模型,为什么在不同 Agent 里表现差这么多”。

GitHub 最近甚至专门公开评测自己的 agentic harness:模型提供原始能力,而 harness 决定模型如何拿到上下文、调用工具、保存状态、处理失败,并最终把任务做完。这个判断很接地气——真正做过 Agent 的人都知道,接通一次模型 API 只要半天,后面 80% 的时间都花在运行时细节上。

参考:GitHub 对 agentic harness 的评测

这也是 Pi Java 最近一轮迭代的主线:不再只是“Java 能调用几个大模型”,而是逐步补齐一个 Agent 真正跑起来需要的 Provider、Tools、Session、Skills、Trust 和 Spring 接入。

项目地址:https://github.com/MarcelLeon/pi-java

Pi Java 是什么

Pi Java 是一个受开源项目 Pi 启发的 Java/Spring 实现。

它想解决的不是“再造一个聊天框”,而是一个很具体的问题:大量业务系统已经在 Java 和 Spring Boot 上,但 Agent 生态里的许多新能力往往先出现在 TypeScript 或 Python。Java 团队如果想实验 session、tool calling、skills 和 agent loop,经常要么跨语言搭一层,要么从零拼运行时。

Pi Java 希望提供一条更熟悉的路:用 Java 类型、Maven 模块和 Spring Starter,把 Agent 的关键运行时能力接进现有系统。

近期最明显的变化:从“接模型”走向“跑 Agent”

1. GitHub Copilot 不再只是一个配置占位

这一轮补上了相对完整的 Copilot 非流式接入链路:

  • OAuth Device Flow;
  • token 本地持久化;
  • 过期 token 自动刷新;
  • 按账号发现可用模型;
  • OpenAI-compatible chat transport;
  • tool_calls 解析与历史消息序列化;
  • 请求级 Header 扩展边界。

换句话说,Copilot Provider 已经从“代码里有这个名字”,推进到“具备认证、模型发现、对话和工具调用基础链路”。

这也贴合了 Copilot CLI 的近期演进:模型选择、跨会话记忆、Skills、工具与可恢复任务,正在成为 coding agent 的标配,而不再只是附加功能。

参考:GitHub Copilot CLI GA

2. 四类 Provider 开始共享同一套工具调用语义

Pi Java 当前围绕 OpenAI、Anthropic、Amazon Bedrock 和 GitHub Copilot,补齐了多项非流式能力:

  • 请求级认证、模型参数和自定义 Header;
  • 图片消息;
  • thinking / reasoning 元数据;
  • Provider 原生的 tool call 与 tool result;
  • 可重试错误识别;
  • 空工具结果占位;
  • assistant tool_calls 历史续写。

重点不是“支持四个 Logo”,而是把不同 Provider 的返回结构收敛到同一条 Java Agent Loop:模型提出工具调用,运行时执行工具,把 TOOL_RESULT 写回会话,再继续下一轮,直到得到最终回答或达到轮次上限。

这才是多模型对业务有用的地方:上层流程不用为每家模型重写一遍。

3. 工具会执行,也会在不确定时刹车

项目已经内置 read、write、edit、bash、find、grep、ls 等工具,并给工具标注 read/write/system 权限类别。

近期补强的不是工具数量,而是执行边界:

  • 工具调用按轮次受限,避免无限循环;
  • 长度截断的 tool call 不会拿着残缺参数直接执行;
  • 空结果会被规范化,避免 Provider 收到不可解释的空消息;
  • bash 超时被严格限制在 1—60 秒;
  • edit 使用可验证的字面替换语义。

一个 Agent 是否可靠,往往就体现在这些“不顺利的时候会怎样”。

4. 会话终于不是一段用完就丢的聊天记录

Pi Java 的 Session 层现在支持:

  • 会话树和 JSONL 持久化;
  • restore、resume、fork、import、export;
  • usage 与 reasoning token 元数据保留;
  • 会话重命名和 session_info_changed 事件;
  • 分支压缩摘要的串行编排;
  • 非法非空 JSONL 的覆盖保护。

这意味着一个任务可以暂停、恢复、从中间节点分叉,也能把会话文件交给别人复现。对于需要审计、回放或人工接管的业务 Agent,这比“上下文窗口再加长一点”更实际。

5. AGENTS.md、Prompts、Skills 和项目 Trust 接上了

近期 CLI 已经能发现并加载:

  • 父目录中的 AGENTS.md / CLAUDE.md;
  • 用户级和项目级 prompt 模板;
  • .pi/skills、.agents/skills 下的 Skill;
  • 已安装 Pi package 中的 prompt / skill 文件;
  • .pi/settings.json 里的资源覆盖规则。

项目级资源不会默认无条件执行,而是经过 /trust 控制。CLI 还提供 /resources、/prompts、/skills、/edit 等入口。

这部分看起来不像“炫技功能”,却是 Agent 进入真实仓库必须补的一层:它不仅要知道用户说了什么,还要知道这个项目自己的规范、工作流和权限边界。

对 Java / Spring 团队,现在实际能做什么

目前比较务实的使用方式有三类:

  1. 用 pi-starter 在 Spring Boot 应用里嵌入 Pi 风格的 Agent Loop。
  2. 把 Provider、Session、Tools 当成自研 Agent 平台的参考实现或基础模块。
  3. 用 CLI 验证模型路由、工具调用、项目上下文、Skills 和会话恢复流程。

项目构建基线已经调整到 Java 17,并在最新 GitHub Actions 中完成 Maven Build、Tests 和 Smoke 验证:

https://github.com/MarcelLeon/pi-java/actions/runs/30816401722

它还不是什么

Pi Java 目前仍是“部分能力对齐”,不是上游 Pi 的完整 Java 替代品。

当前明确的差距包括:完整流式 Agent Runtime、成熟 TUI、可执行扩展与主题/包生态、完整 RPC/SDK、Copilot 流式与真实账号端到端验证,以及更完整的供应链保护。

如果你需要的是成熟开箱即用的终端 Agent,现在还不能只看名字就直接替换;如果你想在 Java/Spring 体系里研究和搭建 Agent Runtime,它已经比“封装一次模型请求”往前走了不少。

最后

这轮 AI 热点里,我最认同的一句话不是“模型又涨了多少分”,而是:模型提供智力,Harness 决定智力怎么落地。

Pi Java 最近做的事情也可以压缩成一句话:让 Java Agent 不只是会回复,而是开始会登录模型、调用工具、保存现场、恢复任务、理解项目规则,并接进 Spring。

仓库:https://github.com/MarcelLeon/pi-java

posted @ 2026-08-12 15:19  AI吗喽  阅读(35)  评论(0)    收藏  举报