新增 server/agent/pi/runtime.ts:用官方 RpcClient 拉起 pi --mode rpc,一个会话一个进程(ADR-0006)。启动参数带 --no-builtin-tools / --no-extensions / --no-skills / --no-context-files,Pi 自带的 read/bash/edit/write 全部关掉,工具只能来自能力目录(扩展桥在 A3.11 接)。密钥经环境变量注入子进程(不进命令行,避免进程列表泄露);Pi 自己的 session 文件放 ~/.aps/pi-sessions 只作同引擎恢复,会话历史仍归平台。事件映射:message_update(text_delta)→text、tool_execution_start/end→tool_call/tool_result、message_end(assistant, stopReason=error)→error 并按六分类归一、agent_settled→turn_end。配置层加引擎选择:有密钥自动用 Pi、否则假引擎,可用 APS_ENGINE 覆盖;要求 Pi 但没有密钥时明确回退并告警。未配置密钥时 createSession 快速失败并给出配置指引,不再静默挂住。测试 56 → 60(59 通过 + 1 条需 APS_PI_INTEGRATION=1 的真实调用默认跳过);用假密钥实测:401 在 340ms 内被归到 forbidden,随后正常收尾。过程中修掉自身缺陷:错误回合的 finishReason 被 turn_end 覆盖回 stop,改为取最严重结果。 |
||
|---|---|---|
| .. | ||
| agent | ||
| app | ||
| bin | ||
| core | ||
| entry | ||
| provider-sdk | ||
| workflows | ||
| README.md | ||
| config.ts | ||
| index.ts | ||
| package.json | ||
| tsconfig.json | ||
README.md
@aps/server
平台服务。目录按架构设计第 2 节建立,各模块的边界与「不该出现什么」以该节为准。
| 目录 | 职责 | 不该出现什么 |
|---|---|---|
entry/ |
HTTP / SSE 入口、会话、鉴权 | 业务规则、直接调业务系统 |
app/ |
请求编排、能力查询、审批流转、事件推送 | 引擎内部概念、直接 import Pi |
agent/ |
引擎适配:AgentRuntime 接口 + Pi / Codex 实现 |
业务规则、碰凭据 |
core/ |
能力目录、身份映射、策略、凭据、执行、审计 | 业务数据、直接拼业务系统 URL |
workflows/ |
跨系统顺序流程 | 配置化 DAG 引擎 |
依赖方向(A1.2 会接入 CI 检查):
contracts ← provider-sdk ← server ← client
↑
providers/*
providers/*只依赖@aps/provider-sdk(与@aps/contracts),不依赖@aps/server- 只有
agent/允许 import 引擎包;其它模块必须经这一层