Solon v4.1.1

示例:定制一个 PiAgent

</> markdown
2026年10月8日 上午9:19:32

网上传说的 PiAgent 以 read、write、edit、bash 四类终端能力为核心。Harness 提供了 ToolName.TOOL_PI 这一快捷枚举,它在工具名映射层展开为 read、write、edit、bash、bash_start、bash_wait、bash_stop 七个名字,其中后三个用于异步 Bash 会话的启动、等待与终止。

1、代码示例

public class DemoApp {
    public static void main(String[] arg) throws Throwable {
        AgentSessionProvider sessionProvider = new AgentSessionProvider() {
            private Map<String, AgentSession> sessionMap = new ConcurrentHashMap<>();

            @Override
            public AgentSession getSession(String instanceId) {
                return sessionMap.computeIfAbsent(instanceId, k -> InMemoryAgentSession.of(k));
            }
        };

        HarnessEngine engine = HarnessEngine.of(".tmp/", ".demo")
                .sessionProvider(sessionProvider)
                .toolsAdd(ToolName.TOOL_PI)
                .build();

        engine.prompt("网络调查 ai mcp 协议,生成一个 mcp.md 报告").call();
    }
}

需要注意 bash_start、bash_wait、bash_stop 属于异步会话工具,只有在 bashAsyncEnabled(true) 时才会进入代理的真实工具集:AgentFactory 完成名字展开后,终端能力会按该开关过滤掉这三个异步工具,而 bashAsyncEnabled 默认为 false。所以按上例的默认配置,PiAgent 实际可用的是 read、write、edit、bash 四个基础工具。若确实需要完整的七个工具,构建时补上该开关即可:

HarnessEngine engine = HarnessEngine.of(".tmp/", ".demo")
        .sessionProvider(sessionProvider)
        .toolsAdd(ToolName.TOOL_PI)
        .bashAsyncEnabled(true) //开启异步 bash 会话,才会暴露 bash_start/bash_wait/bash_stop
        .build();