安装
pnpm add @burtson-labs/agent-core
快开始
agent-core 是提供者不可知的——与提供者客户端对齐(@burtson-labs/agent-adapters-provider 包装 Ollama, OpenAI 兼容的端点,以及主机"盗贼"网关)和主机侧式工具集(@burtson-labs/host-kit 将额外CLI和扩展用途的船载。 最小形状 :
import { createAgentRuntime } from "@burtson-labs/agent-core";
const runtime = createAgentRuntime({
providerClient, // satisfies ProviderClient
systemPrompt: "You are a helpful coding agent.",
tools: [/* built-ins + your own */]
});
const plan = await runtime.plan("Summarize this repo");
const result = await runtime.execute();
const report = await runtime.report();
主机在提供者上电线向上接通流线+auth;循环拥有迭代,重试/倒置,收缩,输出-预算序列化,以及探测器合同.
典型配对
| 惠璶 | 添加 |
|---|---|
| LLM 提供者( Ollama / OpenAI / 云) | @burtson-labs/agent-adapters-provider |
| 在节点上运行( shell + 文件系统) | @burtson-labs/agent-adapters-node |
| 在浏览器中运行 | @burtson-labs/agent-adapters-web |
| 在 VS 代码扩展内运行 | @burtson-labs/agent-adapters-vscode |
| 从 GitHub 动作中运行 | @burtson-labs/agent-adapters-github |
记忆/钩子 / @-mentions/额外工具 | @burtson-labs/host-kit |
| 预建运行时间( CLI + 扩展平价) | @burtson-labs/stealth-core-runtime |
| 对应计划/ 聊天/ diff/ 遥测的 UI | @burtson-labs/agent-ui |
里面的东西
| 路径 | 目的 |
|---|---|
src/tools/tool-use-loop.ts | 循环本身。 管弦乐 LLM调用 → 响应解析 → 探测器通过 → 工具执行 → 重复. |
src/tools/tool-use-parser.ts | 摘录 <tool_call> 信封(XML、栅栏、赤色JSON、烟花倒置). |
src/tools/tool-registry.ts | 工具注册+ Ollama 本地- schema 生成 tools 字段. |
src/tools/core-tools.ts | 内置工具 : read_file, (中文(简体) ), apply_edit, (中文(简体) ), apply_patch, (中文(简体) ), run_command, (中文(简体) ), git_*等 (中文(简体) ). |
src/tools/compactMessages.ts | 当信息输入预算时, 贪婪地压缩了陈旧的工具结果信息 . |
src/tools/post-edit-checks.ts | TS/TSX编辑后自动打字检查. |
src/security/secretPatterns.ts | 秘密检测+ redactSecretsString (随处使用用户/工具文本被浮出). |
src/telemetry/otlpExporter.ts | 缩入,无 SDK OTLP 出口国(TelemetryExporter, (中文(简体) ), resolveTelemetryConfig) 主机不可知(Web Crypto +) fetch; 将一个转动图绘制为跟踪+指使/TTFT/期限度量衡。 由CLI和IDE主机共享. |
正在测试
pnpm --filter @burtson-labs/agent-core test
套房是分开的 合成合同测试 (每个探测器集群一个文件)和 实时重播测试 (从 .bandit/turns/ 通过新循环重放 :
| 关切 | 文件 |
|---|---|
| 构造器选项合并为运行时间 | 试验/建造者 |
| "要求不做"探测器(假的完成,部分完成,宣布当时的安装) | 测试/要求,不做探测器. test.ts |
| "Structured expert 代替工具"探测器(代码-fence,JSON-todo自动促进) | 测试/结构化输出检测器. test.ts |
| 循环探测器(反弹出声、去声出声) | 测试/探测器. test.ts |
| 修复/空修复(空修复、思考后修复、剖析后修复) | 测试/成型 |
迷幻剂 <tool_result> 恢复 | 试验/卤化探测器 |
| 副代理人协调(被烧毁被遗忘) | 试验/增殖剂 协调探测器. test.ts |
| 工具执行边缘大小写( dedup, 上限, 重复破解器, 未发现, 出错, 待办事宜进度) | 测试/工具 |
| 取消合同 | 测试/取消 |
| 压缩+瞄准器合同 | 试验/合同 |
| 真实追踪重放 | 测试/回放 Replay.test.ts |
从真实的故障跟踪中添加回归固定
当你在真实运行中看到一个怪异的代理行为时,将转动日志固定器放下去测试套件,这样未来的循环变化就不能默默地倒退. 见 测试/固定/转弯/README.md 用于完整指南——重放-完成性限制,命名惯例,断言什么,以及复制-复制测试模板.
公约
- 每个探测器每转一发. 每个
tool_loop:*_nudge在循环终止或模型恢复之前,事件起火最多一次。 添加新的探测器意味着添加出门旗+合同测试. - 构造器选项必须流到运行时间 .
ToolUseLoopOptions适用于每个runWithMessages电话 合并发生于runWithMessages看到了吗effectiveOptions = { ...defaultOptions, ...perCall }新选项需要相应的条目 试验/建造者 (文件的详尽性检查失败, 如果你忘了的话) . - 帮手进去
test/_helpers.ts; 重新播放带入test/_replay.ts。 。 。 . 两个文件名称从_所以他们被排除在vitest的之外test/**/*.test.tsglo.
框架中的立场
[host: VS Code extension or CLI]
│
▼
┌──────────────┐
│ ToolUseLoop │ ← this package
└──────┬───────┘
│
┌─────┴─────┐
▼ ▼
[tool registry] [chat function]
│ │
▼ ▼
[host-kit tools] [Ollama / Bandit cloud / etc.]
循环是主机不可知. 主机连接聊天功能(使用自己的监听/流出/认证),并提供一个工具注册;循环拥有迭代,重试/倒置政策,收缩,输出-预算序列化,以及检测器合同.
许可证
Apache 许可证 2.0 ——版权2026 Burtson Labs.