zh
|
70a78a695d
|
feat(agent): 引擎进程管理——空闲回收、并发上限、崩溃退避重启、日志轮转(A3.10)
|
2026-09-29 10:46:13 +08:00 |
zh
|
b20dbd17d0
|
feat(agent): 引擎可替换验证(A3.9)
一致性用例支持两种工具执行模式(platform 由平台执行、runtime 由引擎侧扩展桥执行)与场景跳过(跳过要记原因,不算通过),并支持把场景会话绑定到平台侧真实会话(Pi 走扩展桥时平台必须真的存在该会话)。新增 scripts/engine-conformance.mjs:同一套用例对假引擎与 Pi 各跑一遍,产出 docs/eval/engine-conformance-<日期>.md 对比报告。实测两轮都是 11 项检查 0 项未通过;过程中修掉一个保真缺陷——Pi 工具名是下划线形式(fake_echo),平台事件里应还原成能力 id(fake.echo),已加反向映射并补单测。测试 76 → 77 全绿。
|
2026-09-29 10:35:40 +08:00 |
zh
|
e4b6051da1
|
feat(context): 平台构建上下文与检查点(A3.8)
按实施设计 1.3/1.5:上下文由平台构建,不把整段会话塞给模型。新增 server/app/context-builder.ts——按预算保留最近若干轮 + 钉住引用,把更早的消息折叠成结构化摘要(每条带来源消息 id),工具执行只以引用进摘要(能力、状态、参数摘要、executionId),原始消息一律不动。新增 context_checkpoints 表与仓储(迁移 v2),每轮结束后落检查点,摘要与来源可查。应用服务在运行时会话首次发送时注入上下文包,同一运行时会话不重复注入(引擎自己有原生上下文时就不需要)。Pi 原生会话目录支持 APS_PI_SESSION_DIR 覆盖,便于验证「引擎无状态、平台补上下文」。验证:构建器 5 条单测 + 跨重启注入集成用例;真模型实测——重启平台并让 Pi 用全新会话目录,问「我刚才让你记住什么」答出「25 分钟(车间换型时间)」。测试 70 → 76。
|
2026-09-29 10:24:41 +08:00 |
zh
|
723e5d7ccd
|
feat(client): 界面按现有项目结构迁移第一批(A3.12)
设计令牌直接沿用 main 的 styles.css(中性浅底 + 工业橙 + 低海拔阴影),框架改成四段式:菜单栏 36px + 顶栏 44px + 主体三栏;左右两栏可拖拽调宽(双击复位)、右栏可收起。对话支持 Markdown 渲染(沿用 main 的轻量实现,不加依赖)与工具调用卡片(能力名、参数摘要、状态、平台 executionId)。右工作区三个标签:视图占位 / 事件流(带每类事件摘要)/ 运行记录(点击取回执)。新增/更新:styles.css、components/Markdown.tsx、components/Splitter.tsx、App.tsx、api.execution()。顺带修一个 Fidelity 缺陷:Pi 的 tool_execution_end 里平台 executionId 在 result.details 内,之前映射用了 Pi 的 callId 导致界面显示的执行号无法查询;已改为优先取 details.executionId。另加 APS_PI_DEBUG_EVENTS=1 调试开关(原始事件打到 stderr)。实测:会话列表 9 条、工具卡片显示 exec-9a1e1b86…、运行记录点击取回 {echo:'执行号应该对上了'}。
|
2026-09-28 22:11:45 +08:00 |
zh
|
8a9e9a7211
|
feat(agent): 能力桥——Pi 真正能调用平台能力(A3.4 / A3.11)
新增 Pi 扩展(server/agent/pi/extension/aps-bridge.ts):把平台能力目录注册成 Pi 工具,工具执行时回调平台的 /internal/tool-call(loopback + 内部令牌),平台侧收口到 Core.invoke。平台侧每次建会话写一份桥配置(含能力清单与会话 id,放 ~/.aps/pi-bridge,权限 0600),通过 -e 显式加载扩展(--no-extensions 仍保留,只加载平台自己的扩展)。运行时接口新增 toolExecution 区分工具由谁执行:fake=platform(平台执行并回填)、pi=runtime(扩展在 Pi 进程里执行,平台只观察事件);回合执行器按模式分流,避免重复执行。真引擎实测通过:问「请调用 fake_echo 工具把这句话回显给我」→ 模型自己选出工具 → 回执带 executionId 返回 → 回答里引用该 id;HTTP 查该 executionId 得 {status:succeeded, result:{echo:'工具桥通了'}}。测试 60 → 66(新增扩展桥 3 条 + 回合执行器分流 3 条),全绿。
|
2026-09-28 22:03:44 +08:00 |
zh
|
2c0cfb85d0
|
feat(agent): Pi 子进程接入(A3.3)
新增 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,改为取最严重结果。
|
2026-09-28 20:21:24 +08:00 |