kevinrgu/autoagent

GitHub: kevinrgu/autoagent

一个通过元代理自动迭代优化 Agent harness 的实验框架,用 Markdown 编程替代手写代码调参。

Stars: 748 | Forks: 76

thirdlayer

Built by thirdlayer.inc

# AutoAgent ![teaser](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9f09f9be66025331.png) 核心思想是一样的:你不需要像工程师通常那样去修改 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工程, 自动化渗透测试, 请求拦截, 逆向工具, 防御加固