前言¶
在 DSH 生态中开发智能体时,你经常需要复用 Pi coding agent,但又不希望它接管宿主应用(ACRYL/Cordis)的完整生命周期管理。直接集成容易导致耦合过紧,难以动态替换或卸载。
下面介绍 pi-cordis。它将 Pi coding agent 打包为 Cordis 运行时插件,通过宿主现有的 Cordis 树提供 Pi SDK 会话。这允许 ACRYL 运行时在需要时挂载、移除或替换 Pi,而无需让 Pi 成为应用组合的所有者。
插件定位¶
- 名称:pi-cordis
- 所有者:cordisplugins
- 定位:将 Pi coding agent 作为 Cordis 运行时插件提供。
- 核心价值:通过宿主的 Cordis 树提供 Pi SDK 会话,实现 Pi 与宿主生命周期的解耦。
核心功能¶
该插件提供以下能力:
* engine:pi
* agent-loop
* sessions
* tools
安装与启用¶
安装依赖时需要指定 Cordis 的版本。
pnpm add pi-cordis @deepseek-ai/cordis@4.0.1
启用插件需要在宿主的配置中使用稳定的 Loader 行。
- id: pi-engine
name: pi-cordis
config:
persistent: false
persistent: false:保持 Pi 会话在内存中。persistent: true:使用 Pi 的会话存储在配置的工作目录中。
典型用法¶
插件在运行时提供 ctx.piEngine 接口。
- 打开会话
const sessionId = await ctx.piEngine.open()
- 订阅事件
ctx.piEngine.subscribe(event => observe(event))
- 发送提示
await ctx.piEngine.prompt('Inspect this project')
- 终止会话
await ctx.piEngine.abort()
适用场景与注意¶
该插件适合需要在 Cordis 生态系统中灵活调用 Pi 编码能力的场景。
架构注意:
* 职责分离:Pi 拥有 agent loop、model runtime、session operations 和 event stream。Cordis 拥有 Pi engine 的服务生命周期、订阅、清理和替换。
* 依赖反转:消费者通过 ctx.piEngine 使用服务,不直接创建或保留 Pi SDK 会话。
* 容错机制:无效的配置会在插件激活前被拒绝。
运行环境:该插件以当前 dsh 进程的权限运行,请确保在安装前检查源码与许可证。
总结¶
pi-cordis 通过插件化方式将 Pi coding agent 嵌入到 Cordis 树中,解决了智能体集成中的生命周期管理问题。它利用依赖反转原则,让 Cordis 掌控宿主环境,Pi 掌控自身逻辑,适合追求架构解耦的开发者。