@bunny-agent/管理员
⚠️ 折旧(基于执行的运输)
@bunny-agent/manager通过产卵工作bunny-agent run沙盒内的CLI通过exec()。这一办法被下列因素所取代:@bunny-agent/daemon——一个统一的HTTP网关,在沙盒内运行,并在干净的REST API上暴露出同样的能力.偏爱
createBunnyAgent明确daemonUrl从@bunny-agent/sdk当使用 HTTP 守护进程时.此套件仍然支持只提供
exec()(E2B,代顿a等),没有计划清除日期.
Bunny Agent的核心管理软件包 - 管理沙盒和跑道生命周期,定义了核心接口.
这个软件包是电线的核心运行时间 沙盒适配器 +a 键 运行光谱 进入 AI SDK UI 流,您可以从您的服务器或 CLI 中消耗.
概览
@bunny-agent/manager 是一个基础软件包,提供:
- 兔子探员: 管理沙箱代理实例的主要类
- 核心接口数字 :
SandboxAdapter, (中文(简体) ),SandboxHandle, (中文(简体) ),RunnerSpec等 (中文(简体) ). - 转写作家: 记录代理执行的工具( JSONL, 内存, 控制台, 多功能)
- 类型定义: 消息、流和沙盒操作的共享类型
此软件包通常被更高层次的软件包用作依赖性,如 @bunny-agent/sdk 还有沙盒适配器.
安装
npm install @bunny-agent/manager
快速启动
基本用途
import { Bunny Agent } from '@bunny-agent/manager';
import { E2BSandbox } from '@bunny-agent/sandbox-e2b';
const agent = new BunnyAgent({
sandbox: new E2BSandbox({ apiKey: 'xxx' }),
runner: {
model: 'claude-sonnet-4-20250514',
outputFormat: 'stream',
},
env: {
ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY!,
},
});
// Stream a task
const stream = await agent.stream({
messages: [
{ role: 'user', content: 'Create a hello world program' }
],
workspace: {
path: '/workspace',
},
});
// Read the stream
const reader = stream.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
process.stdout.write(value);
}
// Cleanup
await agent.destroy();
使用 Transcript 日志
import { Bunny Agent, JsonlTranscriptWriter } from '@bunny-agent/manager';
const transcriptWriter = new JsonlTranscriptWriter('./transcript.jsonl');
const stream = await agent.stream({
messages: [{ role: 'user', content: 'Do something' }],
workspace: { path: '/workspace' },
transcriptWriter,
});
上传文件
await agent.uploadFiles([
{ path: 'hello.txt', content: 'Hello World!' },
{ path: 'data.json', content: JSON.stringify({ key: 'value' }) },
], '/workspace');
核心接口
沙盒绘图器
沙盒执行必须遵循的接口 :
interface SandboxAdapter {
attach(): Promise<SandboxHandle>;
getHandle(): SandboxHandle | null;
getEnv?(): Record<string, string>;
getWorkdir?(): string;
}
沙盒手执
与所附沙盒互动的接口 :
interface SandboxHandle {
exec(command: string[], opts?: ExecOptions): AsyncIterable<Uint8Array>;
upload(files: Array<{ path: string; content: Uint8Array | string }>, targetDir: string): Promise<void>;
readFile?(filePath: string): Promise<string>;
runCommand?(command: string): Promise<{ stdout: string; stderr: string; exitCode: number }>;
destroy(): Promise<void>;
getWorkdir?(): string;
}
运行器Spec
跑者在沙盒内执行的规格 :
interface RunnerSpec {
model: string;
systemPrompt?: string;
maxTurns?: number;
allowedTools?: string[];
outputFormat?: 'stream' | 'json';
}
转写作家
可用的笔录作者 :
- Jsonl TranscriptWriter 语录: 写入 JSONL 文件
- 内存标记符Writer: 在内存中存储
- 控制台TranscriptWriter: 日志到控制台
- 多写字机Writer: 写给多个作者
import {
JsonlTranscriptWriter,
MemoryTranscriptWriter,
MultiTranscriptWriter
} from '@bunny-agent/manager';
const transcriptWriter = new MultiTranscriptWriter([
new JsonlTranscriptWriter('./transcript.jsonl'),
new ConsoleTranscriptWriter(),
]);
API 参考
兔子探员
构造器
new BunnyAgent(options: BunnyAgentOptions)
选项 :
sandbox(需要): SandboxAdapter 实例runner(需要):运行器Spec配置env: 沙盒的环境变量
方法
流( 输入: 流出): 承诺 < 可读结构 >
将任务通过代理。 返回 AI SDK UI 信件的可读结构.
上传Files( 文件: ArrayQQ 路径: 字符串; 内容: Uint8Array QQ 字符串QQ, 目标Dir? : 字符串: 保证
上传文件到代理工作区 .
毁灭 (): 承诺
摧毁沙盒并释放资源.
所需资源
- 节点.js 20+
- 沙盒适配器(@bunny-agent/sandbox-e2b,@bunny-agent/sandbox-local等) 出自"沙盒适配器"
许可证
阿帕奇 - 2.0