kevinrgu/autoagent
GitHub: kevinrgu/autoagent
一个通过元代理自动迭代优化 Agent harness 的实验框架,用 Markdown 编程替代手写代码调参。
Stars: 748 | Forks: 76
Built by thirdlayer.inc
# AutoAgent

核心思想是一样的:你不需要像工程师通常那样去修改 harness Python 文件。相反,你通过编程 `program.md` 来控制,这是一个 Markdown 文件,为 meta-agent 提供上下文并定义 agent 工程循环。
## 工作原理
仓库中有几个重要的文件和目录:
- **`agent.py`** -- 整个被测试的 harness 都在一个文件中。它包含
config、工具定义、agent 注册表、路由/编排,以及 Harbor 适配器边界。适配器部分被明确标记为固定;
其余部分是 meta-agent 的主要编辑范围。
- **`program.md`** -- 给 meta-agent 的指令 + 指示(要构建
什么样的 agent)。**此文件由人工编辑**。
- **`tasks/`** --
[harbor](https://github.com/laude-institute/harbor) 格式的评估任务。在干净的
基线分支中,benchmark payloads 可能会被省略,并添加到
特定于 benchmark 的分支中。
- **`.agent/`** -- 可选的工作区工件,用于可复用的指令、
笔记、prompts 或 skills。
指标是 benchmark 任务测试套件产生的总 **score**。Meta-agent 针对这个分数进行 hill-climb(爬山算法优化)。
## 快速开始
**要求:** Docker, Python 3.10+, [uv](https://docs.astral.sh/uv/),以及
你当前 `agent.py` harness 所需的任何模型提供商凭证。
```
# 1. 安装 uv (如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 安装依赖
uv sync
# 3. 设置当前 agent/runtime 所需的环境变量
# 示例:
cat > .env << 'EOF'
OPENAI_API_KEY=...
EOF
# 4. 构建 base image
docker build -f Dockerfile.base -t autoagent-base .
# 5. 添加任务到 tasks/ (见下方的 Task 格式部分)
# 6. 运行单个 benchmark 任务
rm -rf jobs; mkdir -p jobs && uv run harbor run -p tasks/ --task-name "
" -l 1 -n 1 --agent-import-path agent:AutoAgent -o jobs --job-name latest > run.log 2>&1
# 7. 并行运行所有任务 (-n = 并发数,默认为 4)
rm -rf jobs; mkdir -p jobs && uv run harbor run -p tasks/ -n 100 --agent-import-path agent:AutoAgent -o jobs --job-name latest > run.log 2>&1
```
## 运行 meta-agent
将你的 coding agent 指向仓库并提示:
```
Read program.md and let's kick off a new experiment!
```
Meta-agent 将读取指令,检查当前的 harness,运行
benchmark,诊断失败,修改 `agent.py`,并进行迭代。
## 项目结构
```
agent.py -- single-file harness under test
editable harness section -- prompt, registries, tools, routing
fixed adapter section -- Harbor integration + trajectory serialization
program.md -- meta-agent instructions + directive
Dockerfile.base -- base image
.agent/ -- optional agent workspace artifacts
tasks/ -- benchmark tasks, typically added in benchmark-specific branches
jobs/ -- Harbor job outputs
results.tsv -- experiment log (created by meta-agent, gitignored)
run.log -- latest run output
```
## 任务格式
仓库默认不包含任务。按照 [Harbor 的任务格式](https://harborframework.com/docs/tasks) 将你自己的任务添加到 `tasks/`:
```
tasks/my-task/
task.toml -- config (timeouts, metadata)
instruction.md -- prompt sent to the agent
tests/
test.sh -- entry point, writes /logs/reward.txt
test.py -- verification (deterministic or LLM-as-judge)
environment/
Dockerfile -- task container (FROM autoagent-base)
files/ -- reference files mounted into container
```
测试将分数 (0.0-1.0) 写入 verifier logs。Meta-agent 针对此进行 hill-climb(爬山算法优化)。有关编写和移植任务的完整详细信息,请参阅 [Harbor 文档](https://harborframework.com/docs)。
## 设计选择
- **对 meta-agent 编程,而不是直接对 harness 编程。** 人类通过 `program.md` 来引导
循环,而 meta-agent 负责编辑 `agent.py`。
- **单文件、注册表驱动的 harness。** 为了简单起见,实现代码位于一个
文件中,但 agent 和工具注册保持结构化,以便
harness 仍然可以干净地演进。
- **Docker 隔离。** Agent 在容器中运行。它无法损坏主机。
- **分数驱动。** 每个实验都会产生一个数字分数。如果更好则保留,
如果不好则丢弃。与 autoresearch 循环相同。
- **兼容 Harbor 的任务。** 任务使用与 harbor benchmarks 相同的格式,
因此同一个 harness 可以在不同的数据集上进行评估。
## 清理
Docker 镜像和容器会在多次运行中积累。定期清理:
```
# Harbor 的 cached task images + 任务缓存
uv run harbor cache clean -f
# 完全清理 Docker (所有未使用的镜像、build cache 等)
docker system prune -a -f
# 精简模式:仅清理死容器
docker container prune -f
```
如果 Docker 变得无响应(例如在多次并发运行后),重启
Docker Desktop:
```
killall Docker && open -a Docker
```
## 通过 skills 提升性能
你可以为 agent 配备 [Agent Skills for Context Engineering](https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering) 和 [context7](https://github.com/upstash/context7) skills 以提升性能。
## 许可证
MIT标签:Agent开发框架, AI自动化, AutoGPT类, DevSecOps工具, DLL 劫持, Docker, Harbor适配器, LLM安全评估, Petitpotam, Python, 代理编排, 代码生成, 元代理, 元编程, 大语言模型, 安全基准测试, 安全防御评估, 提示词工程, 无后门, 渗透测试工具, 爬坡算法, 策略决策点, 自主代理, 自动化Harness工程, 自动化渗透测试, 请求拦截, 逆向工具, 防御加固