内容
Adapt 代理
> [!IMPORTANT]
> **状态:重新定位(v2,实验性)**。此软件包现作为 [`openadapt-flow`](https://github.comAI/openadapt-flow) 的**面向代理的桥梁**:它将编译的工作流包暴露为 **MCP 服务器** 和 **代理技能**,以便其他代理(Claude Code、Claude Desktop、任何 MCP 客户端)可以管控的工作流作为工具。它是新的、未经验证的代码 — 不要将其视为生产就绪。
> **旧版 v1 用户:** 预旋转软件包(模型驱动的代理的执行包装器:安全门、HITL 确认、会话管理、审计日志记录)已弃用,其模块在 v2 中被删除。固定最后一个 v1 版本的发布版本,[`openadapt-agent==0.1.0` 在 PyPI 上](https://pypi.org/project/openadapt-agent/0.1.0/),或在 `main` 历史记录上浏览预旋转源代码。执行责任已转移到 [`openadapt-flow`](https://github.com/OpenAdaptAI/openadapt-flow) 中的受管控运行时。
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
使 OpenAdapt README 的承诺成为现实的桥梁:*“编译的工作流也可以作为代理技能或 MCP 服务器发出”*:
- **`openadapt-agent serve`** — 一个 MCP 服务器(stdio)位于编译的工作流包目录上。每个包都成为一个 `run_<slug>` 工具,并具有从其声明的参数派生的 JSON 模式;每次调用都会分发到受管控的 `openadapt-flow run` CLI(关闭失败的准入门),并返回成功 **或具有证据指针的结构化暂停/拒绝 — 永远不会是伪造的成功**。只读工具(`list_workflows`、`get_workflow`、`get_run_report`)始终开启;运行工具需要显式的 `--allow-run` 标志。
- **`openadapt-agent emit-skill`** — 一个 Claude 代理技能文件夹,用于一个包。它包装流自己的 `emit-skill`,并为使用代理追加 MCP 调用和暂停语义指导。
设计、安全模型和 v2.0 有意不执行的内容:[`docs/DESIGN.md`](docs/DESIGN.md)。
## 安装
```bash
pip install "openadapt-agent>=2.0.0.dev0" # 尚未发布;从源代码:
pip install git+https://github.com/OpenAdaptAI/openadapt-agent@feat/mcp-agent-bridge
```
需要 Python 3.10–3.12(继承自 `openadapt-flow`)。安装会拉取 `openadapt-flow`(该软件包驱动的受管控运行时)和官方 `mcp` SDK。
## 快速入门:编译流的捆绑演示,服务它,调用它
```bash
# 1. 记录 + 编译流的规范演示(MockMed,随流附带)
openadapt-flow demo-record --out /tmp/rec
openadapt-flow compile /tmp/rec --out /tmp/bundles/triage --name "Demo Triage"
# 2. 通过 MCP(stdio)提供包目录服务
openadapt-agent serve --bundles /tmp/bundles --allow-run
```
在 Claude Code 中注册它:
```bash
claude mcp add openadapt-workflows -- \
openadapt-agent serve --bundles /tmp/bundles --allow-run
```
然后,Claude Code 看到 `list_workflows`、`get_workflow`、`get_run_report` 和 `run_demo_triage`(默认值为记录值,带有一个 `note` 参数)。省略 `--allow-run` 以仅公开只读工具。
> **预期演示运行将被“拒绝”— 这是演示。** 运行工具通过流的关闭失败 `run` 动词执行,并且新编译的演示包不满足其准入门(身份武装、效果合约、静止加密),因此 `run_demo_triage` 返回一个带有门覆盖报告的结构化“拒绝”结果 — 没有执行任何操作。这是此桥存在的受管控行为。 为真正的部署准备的包(武装身份、效果合约、`--config deployment.yaml` / `--policy`)运行到 `success` 或 `halt`。要查看演示在没有门的情況下实际执行,请直接使用流的宽容演示动词:`openadapt-flow replay /tmp/bundles/triage`。
发出代理技能而不是(或除了)提供 MCP:
```bash
openadapt-agent emit-skill /tmp/bundles/triage --out ~/.claude/skills
```
## 结果如何返回
每次 `run_<slug>` 调用都返回一个结构化结果:
| `status` | 含义 |
| --- | --- |
| `success` | 退出 0 **和** 持久化的 `report.json` 标记运行成功 |
| `halt` | 运行执行并在未处理的狀態下停止 — 包括流的结构化暂停观察(哪里、为什么、在屏幕上观察到什么、什么先完成)和指向 `report.json`/`REPORT.md` 的指针。**不是成功。** |
| `refused` | `openadapt-flow run` 准入门拒绝包(退出 2);**未执行任何操作** |
| `timeout` | 运行超过操作员设置的截止日期并被终止;目标可能部分执行 |
| `error` | 基础设施问题(CLI 丢失、证据不一致) |
`get_run_report` 返回此服务器制作的任何运行的完整 `report.json`,以便使用代理可以显示证据而不是总结它。
## 诚实的限制(v2.0,实验性)
- **没有身份验证故事(仅限本地stdio)。** 服务器信任启动它的用户;MCP 客户端的用户是记录的操作员。没有远程传输,没有 TLS,没有多租户 — 不要跨网络边界公开此功能。
- **生产环境中未经验证。** 单元测试模拟流 CLI;存在一个本地端到端烟雾测试。没有试点通过此桥。
- **没有暂停解决桥接。** 暂停时会显示证据;修复它们(`openadapt-flow teach` / `approve` / `resume`)仍然是一个手动 CLI 工作流。
- **超时≠回滚。** 已终止的运行可能会在工作流中留下目标;结果表明,但没有任何操作会撤销部分工作。
## 开发
```bash
pip install -e ".[dev]"
ruff check src tests && pytest
```
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。