首页/新闻资讯/正文详情

把acpx嵌入你的应用:acpx/runtime嵌入API与共享会话完全指南

发布时间:2026/9/26 19:26:30 来源:云帆数科 栏目:资讯中心
把acpx嵌入你的应用:acpx/runtime嵌入API与共享会话完全指南
把acpx嵌入你的应用acpx/runtime嵌入API与共享会话完全指南【免费下载链接】acpxHeadless CLI client for stateful Agent Client Protocol (ACP) sessions项目地址: https://gitcode.com/gh_mirrors/ac/acpxacpx不仅是命令行工具它还是Agent Client ProtocolACP的无头客户端——通过acpx/runtime嵌入 API你可以直接在 Node.js 应用里管理有状态的 AI 编码代理会话无需启动子进程、无需解析终端输出。本指南带你掌握两种嵌入模式进程内运行时与共享会话让你把 Codex、Claude Code 等代理无缝接入自己的应用。为什么选择嵌入从敲命令到调 API平时你用acpx codex summarize this repository时其实每次都在启动进程、建立 ACP 连接。如果你的产品需要一个常驻的 AI 会话能力IDE 插件、Web 后台、自动化编排器每次都 spawn 进程就太慢了。好消息是acpx的 npm 包直接导出了运行时入口 ./runtime: ./dist/runtime.js安装后即可import { createAcpRuntime } from acpx/runtime在进程内获得完整的会话管理、权限策略、事件流和模型控制能力。两种嵌入运行时一张表看懂怎么选acpx/runtime提供两套运行时对应两种典型场景对比项createAcpRuntime进程内createSharedAcpRuntime共享会话会话所有者你的应用自己持有应用与 acpx CLI共享同一个本地会话oneshot一次性会话✅ 支持❌ 仅persistentsteer引导式回合✅ 支持❌ 仅prompt每回合权限回调onPermissionRequest✅ 支持❌ 只能静态策略自定义会话存储 / MCP 注入 / 子进程环境变量✅ 支持❌ 不支持与终端 CLI 共用同一对话❌ 各自独立✅ 天然支持选择口诀会话只给你自己用 → 进程内应用和终端要说同一句话、看同一段对话→ 共享会话。三步跑通第一个进程内会话进程内运行时的完整契约定义在 src/runtime/public/contract.ts实现入口是 src/runtime.ts。核心流程只有三步创建运行时指定工作目录、会话存储和权限模式准备会话ensureSession按sessionKey agent复用一个持久会话发起回合startTurn提交提示词消费events事件流等待resultimport { createAcpRuntime, createRuntimeStore } from acpx/runtime; const runtime createAcpRuntime({ cwd: process.cwd(), sessionStore: createRuntimeStore({ stateDir: ~/.acpx }), agentRegistry: undefined, // 使用内置代理注册表 permissionMode: approve-reads, }); const handle await runtime.ensureSession({ sessionKey: reviewer, agent: pi, mode: persistent, }); const turn runtime.startTurn({ handle, requestId: crypto.randomUUID(), mode: prompt, text: Summarize the repository, }); for await (const event of turn.events) { if (event.type text_delta) process.stdout.write(event.text); } console.log(await turn.result);会话状态默认落在~/.acpx/重启应用后同名会话可以带着上下文继续聊——这就是有状态的含义。共享会话让终端和你的应用聊同一个天这是嵌入 API 里最惊艳的能力 ⚡createSharedAcpRuntime()让你的应用和acpxCLI 连接到同一个本地会话所有者源码见 src/runtime/shared.ts官方文档见 docs/shared-sessions.mdimport { createSharedAcpRuntime } from acpx/runtime; const runtime createSharedAcpRuntime({ cwd: process.cwd(), permissionMode: deny-all, }); const handle await runtime.ensureSession({ sessionKey: reviewer, agent: pi, mode: persistent, }); const turn runtime.startTurn({ handle, requestId: crypto.randomUUID(), mode: prompt, text: Summarize the repository, });创建好这个reviewer会话后你的终端立刻就能加入同一场对话acpx pi -s reviewer Review the previous summary acpx pi cancel -s reviewer acpx pi sessions show reviewer应用和终端不会互相抢占连接也不会产生两个竞争性的代理会话。几个使用要点身份作用域共享查找按(agentCommand, cwd, sessionKey)精确匹配不会向父目录回溯。终端必须与你的应用使用相同的用户、主目录、工作目录和代理命令。requestId 每次都要新的重复使用正在排队的 ID 会被拒绝它用于追踪请求不提供幂等重试。取消语义清晰turn.cancel()只针对当前请求不会误伤终端正在跑的回合runtime.cancel({ handle })则像 CLI 一样取消会话当前的活动回合。只读旁听runtime.watchSession({ handle })可以旁观其他客户端的会话事件流适合做实时 UI 面板。shutdown 只是断开runtime.shutdown()让客户端脱身并等待已接纳的操作收尾不会杀掉共享所有者也不会取消已接纳的回合。回合生命周期四个关键信号无论进程内还是共享模式startTurn返回的回合对象都由四个信号组成理解它们就能优雅地驱动 UI信号含义用途promptStarted传输层真正接受了提示词排队结束后再亮发送中状态events异步事件流text_delta、tool_call、status等打字机渲染、工具调用面板result回合结束completed/cancelled/failed收尾逻辑的唯一权威信号cancel()取消本回合也响应你传入的AbortSignal用户点停止 老式写法runTurn(...)会把done/error终止事件混进事件流属于兼容适配器新代码建议直接用startTurn把实时事件和最终结果分开处理。回合失败时result会带结构化错误code、detailCode和retryable字段你可以据此决定提示用户还是自动重试。权限、诊断与错误处理嵌入时最容易踩的坑是权限。运行时支持三档静态权限模式approve-all自动批准第一个允许项approve-reads自动批准读/搜索其余询问deny-all尽量拒绝——CI 和无人值守场景的推荐起点进程内模式还可以传入onPermissionRequest回调把审批弹到你自己的 UI 里共享模式则只接受静态策略因为回合实际运行在所有者进程中无法回调你的进程。两个实用工具runtime.doctor()返回健康报告ok/message/installCommand启动时自检代理是否可用比裸试错友好得多。AcpRuntimeError/isAcpRuntimeError所有运行时错误都带稳定错误码如ACP_BACKEND_UNAVAILABLE、ACP_TURN_FAILED方便你写分支逻辑。错误码全表可参考 docs/ACPX_ERROR_STRATEGY.mdCLI 侧退出码见 docs/exit-codes.md。关键源码与文档索引想深挖实现按这个顺序读想理解什么看哪里嵌入 API 总入口与导出src/runtime.tsAcpRuntime契约、事件与结果类型src/runtime/public/contract.ts进程内运行时实现AcpxRuntime类src/runtime.ts共享运行时SharedAcpRuntimesrc/runtime/shared.ts会话所有者与队列生命周期docs/sessions.md、docs/2026-02-17-architecture.md共享会话完整语义取消/断连/兼容docs/shared-sessions.md会话控制cancel / mode / model / statusdocs/session-control.md内置代理注册表与自定义代理src/agent-registry.ts、docs/custom-agents.md权限模型docs/permissions.md常见疑问 FAQQ共享会话和 CLI 的会话记录是同一份吗是。sessionKey直接映射为 CLI 的会话名查找使用精确的(agentCommand, cwd, name)作用域应用和终端天然看到同一条记录。Q为什么共享模式不支持oneshot和steer共享回合实际运行在会话所有者进程里无法回调你的进程做交互式引导也不能像进程内模式那样排队旁观活动回合——所以 API 在设计上直接拒绝这两种模式避免隐式降级。一次性会话请用进程内运行时。QfindSession和ensureSession有什么区别findSession只查本地记录不会启动代理适合这个会话还开着吗的判断ensureSession会按需创建或复用会话可能拉起整个 ACP 连接。Q嵌入 API 稳定吗acpx目前处于 1.0 之前README 明确提示 CLI 与 runtime 接口仍在演进。建议锁定版本号升级前跑一遍你的集成测试。总结acpx/runtime把无头调用编码代理从命令行脚本升级成了可编程的应用能力 进程内createAcpRuntime完整控制——自定义存储、MCP 注入、交互权限回调、一次性会话一应俱全⚡ 共享createSharedAcpRuntime应用与终端共用一个会话所有者同一场对话、同一份记录、互不抢占 回合四信号promptStarted/events/result/cancel让状态管理与取消逻辑清晰可预测从npm install acpx开始几十行代码就能给你的应用装上持久 AI 会话引擎。【免费下载链接】acpxHeadless CLI client for stateful Agent Client Protocol (ACP) sessions项目地址: https://gitcode.com/gh_mirrors/ac/acpx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

AutoGen AgentChat 14:Workbench 与 MCP 配置实战
AutoGen AgentChat 14:Workbench 与 MCP 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 19:26:30

DeskcommCRM实战:打造高效Helpdesk客服系统的完整指南
DeskcommCRM实战:打造高效Helpdesk客服系统的完整指南

去年我做客服流程改造时,被一个场景折磨了很久:客户下午三点在IM群里问了一个问题,同事A看了眼没回,客户四点多又补了一封邮件,邮件被同事B接到,两人给出的答复还不一致。客户最后直接打电话来投诉&#xf… · 2026/9/26 19:26:24

TRAE 2.0 SOLO 出道:首位 Context Engineer 的 settings.json 配置骨架与验证
TRAE 2.0 SOLO 出道:首位 Context Engineer 的 settings.json 配置骨架与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 19:26:24

基于STM32单片机电磁波检测电磁波传感器电磁辐射蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S445
基于STM32单片机电磁波检测电磁波传感器电磁辐射蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S445

S445-电磁波检测报警频率变化预警阈值超阈值报警OLED屏声光提醒按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、电磁波检测模块、舵机控制电路、蜂鸣器报警、电源电路、按键电路组成。【1】OLED液晶显示… · 2026/9/26 20:03:31

基于STM32单片机直流电机PID控制红外光电测速PWM调速里程表蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S440
基于STM32单片机直流电机PID控制红外光电测速PWM调速里程表蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S440

S440-光电测速PID控制行驶时间里程PWM10档正反转超速阈值OLED屏声光提醒按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、电机驱动模块、测速传感器、蜂鸣器报警、电源电路、按键电路组成。【1】OLED屏显… · 2026/9/26 20:03:31

Atlas 300V 24G 跑 YOLO 全流程实战:硬件选型、模型转换与推理部署
Atlas 300V 24G 跑 YOLO 全流程实战:硬件选型、模型转换与推理部署

先说个结论:如果你最近在考虑“用 Atals 300V 24G 跑 YOLO”这件事,那我可以直接告诉你——这条路是通的,而且比大多数人想象中要顺手。华为昇腾这套工具链这两年迭代得很快,跟早年“文档难找、报错靠猜”的体验完全不是一回事。但… · 2026/9/26 20:03:31

深入理解 SAP HANA SQLSCRIPT_STATEMENT_STATISTICS_TYPE,掌握 SQLScript 语句级性能统计与故障诊断
深入理解 SAP HANA SQLSCRIPT_STATEMENT_STATISTICS_TYPE,掌握 SQLScript 语句级性能统计与故障诊断

在 SAP HANA 的实际开发中,我们经常会遇到一种很有代表性的性能问题。同一个存储过程,在测试环境中只需要几十毫秒就能执行完成,到了生产环境,却可能需要数秒甚至更长时间。检查 SQLScript 源代码时,业务逻辑似乎没有明显问题,数据库服务器的 CPU 和内存使用率也未必出现… · 2026/9/26 20:03:31

RAD Studio 13.2 官方原版 ISO 部署实录:Delphi 13.2 安装配置与故障排查指南
RAD Studio 13.2 官方原版 ISO 部署实录:Delphi 13.2 安装配置与故障排查指南

1. 为什么 RAD Studio 13.2 值得单独写一篇部署实录 RAD Studio 13.2 这个版本号一出来,很多老 Delphi 玩家的第一反应是"又更新了?",第二反应是"这次到底值不值得折腾"。我自己从 Delphi 7 一路用到现在的 RAD Studio 1… · 2026/9/26 20:03:22

室内人头检测YOLOv8数据集927张图训练实践与避坑指南
室内人头检测YOLOv8数据集927张图训练实践与避坑指南

简介:面向yolo系列目标检测算法学习者与室内监控场景开发者,该数据集包含927张室内人头检测图像及完整标注,可直接用于yolov5、yolov7、yolov8、yolov9、yolov10、yolo11等主流模型的训练与验证测试。压缩包共2000个文件,包含927个… · 2026/9/26 20:03:03

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码