先说结论:“让大模型自己设计自己的运行框架”这件事,已经有了明确的研究方向。AutoDesign: Meta-Harness Optimization for Long-Horizon Agentic Design,这个题目如果只看名字,很容易被当成又一个花哨的 agent 框架,但它真正想解决的问题,恰好是目前做智能体应用最头疼的部分——你花了很多时间调 prompt、调工具调用格式、调多轮循环,结果换一个任务场景就全部作废。
AutoDesign 的思路是把这个过程本身交给一个上层系统去优化:不再由人类手写 agent 的行为规则,而是让系统自动搜索、评估并改进“用来承载 agent 运行”的那套外层控制结构,术语叫 Harness。目标场景是 Long-Horizon,也就是执行时间长、步骤多、依赖多个工具、中间状态容易出错的任务。这篇文章不会只做概念搬运,我会尽量把它拆成可以用于工程预研的技术点,包括 Meta-Harness Optimization 要解决什么问题、Long-Horizon Agentic Design 的难点在哪里、如果你想在自己项目里做一个小型验证,应该从哪些模块入手,以及在批量运行、资源占用、效果度量和问题排查上要注意什么。
1. AutoDesign 核心能力速览
在动手拆解之前,先给一张定位表。AutoDesign 不是传统意义上“装好就能跑”的单一开源工具,它更像一个研究范式:一套让智能体自动设计和优化自身运行框架的方法论。当前公开可复现资料有限,因此下表里部分结论是基于论文标题与研究范式作出的合理推导,不是某个官方仓库写死的规格。
| 能力项 | 说明 |
|---|---|
| 项目定位 | 面向长视野任务的智能体设计自动化研究,关键词包含 AutoDesign、Meta-Harness Optimization、Long-Horizon Agentic Design |
| 核心思想 | 把 agent 的外层控制结构当作可优化对象,通过元层优化让系统自动生成、评估和改进 Harness |
| 目标场景 | 长时间跨度、多步骤、多工具协作的复杂任务,如自动化设计流程、研究报告生成、多阶段代码工程等 |
| 主要模块 | Harness 定义、任务分解、执行循环、结果评估、元优化回路 |
| 是否可直接下载 | 当前公开材料不完整,建议先把原型实验做通,再判断是否需要依赖具体实现 |
| 依赖基础 | 底层通常需要一个可调用的大语言模型推理服务,无论是云端接口还是本地推理服务均可 |
| 显存需求 | 不确定,取决于底层模型;如果按纯接口调用方式验证,本机无需大显存 |
| API 化能力 | 可通过通用 HTTP API 接入任务调度队列,属于工程集成层面可自行搭建 |
| 批量任务 | 支持,需要自行设计任务队列、结果记录和失败重试机制 |
| 适合读者 | 研究 agent 自动化设计的算法工程师、做复杂工作流平台的开发人员、关注 Agent 新范式的技术负责人 |
很多人看到这里会问:它跟 AutoGPT、AutoGen 这些有什么本质区别?区别在于优化的对象。AutoGPT 这类框架把“固定的循环控制”视为前提,大模型只负责填任务分析和动作参数。而 AutoDesign 关注的不是某个任务里的具体动作,而是“承载这个动作序列的外层框架”本身能不能被优化。也就是说,设计对象从任务内容上移到了框架结构层面。
2. 技术拆解:Meta-Harness Optimization 解决什么问题
要把这个概念读懂,先得把 Harness 这个词从抽象里拉出来。在智能体应用里,Harness 可以理解为“让大模型能在一个环境里稳定完成任务的整套外层系统”,它不是模型本身,而是模型运行所依赖的结构。常见内容包括:
- System Prompt 与行为约束;
- 工具调用的输入输出格式;
- 多轮循环的跳出条件;
- 记忆写入和上下文截断策略;
- 错误回退与重试规则;
- 中间结果的校验逻辑。
传统做法里,这些结构都是工程师手工设计的。你写一个 ReAct 循环,规定好“观察”和“思考”的格式,再写十几个 if-else 处理各种异常,这套东西就是一个典型的 Harness。问题是它对人的经验依赖极高:Prompt 稍微写得不够细,模型就会反复调用同一个工具;上下文过长导致早期信息被截断;某个工具返回了不符合预期的 JSON,整个循环就卡住。AutoDesign 的核心观点很直接:既然 Harness 决定了 agent 的表现,为什么不把 Harness 本身当成一个搜索对象,让元层智能体去自动优化它?
这就是 Meta-Harness Optimization 的含义。它包含两层:
第一层是目标层,负责执行具体的长视野任务,比如根据用户输入自动完成一个界面的多轮设计。这一层的模型需要按某个 Harness 运行。
第二层是元层,负责观察目标层执行过程,分析哪些步骤超时、哪些工具调用出错、哪些信息没有被利用,然后修改 Harness 定义。修改内容可以是 Prompt 措辞、工具调用说明、循环退出条件,甚至是整体执行流程的调整。
如果把这两层映射到实际的 agent 系统开发中,元层优化器本质上也是一个 LLM 程序,但它处理的对象不是用户业务问题,而是“当前这套执行框架为什么效率不高”的工程问题。它看到的是执行日志、工具调用记录、中断原因和评估分数,输出的是新的 Harness 配置。这个过程可以迭代多轮,直到在代表性验收任务上达到指定效果。
从范式上看,AutoDesign 与“Code Generation 自动写代码”的思路类似。自动写代码是用模型生成程序代码来解决一个功能问题;AutoDesign 是用模型生成智能体系统运行所需的框架配置来解决“智能体自动化程度不足”的问题。差别在于,程序代码可以比较方便地编译运行验证,而 Harness 的效果必须在多次长任务执行中观测,评估成本要高得多。这一点会直接决定后面做原型验证的设计策略。
3. 适用场景与使用边界
3.1 适合什么场景
从 Long-Horizon Agentic Design 的定位看,它最适合的场景具备三个共同特征:
任务必须可以被重复执行。如果每个任务只跑一次,优化出来的 Harness 没有复用价值。AutoDesign 类方案要求同一类任务有足够的样本量,元层才能在结果中归纳规律。
任务结果必须可以被自动评估。系统只有知道“这次执行是好是坏”,优化才有一个相对明确的梯度方向。评估方式可以是规则校验、结果匹配、用户反馈,也可以是另一个模型打分。
任务的时间跨度足够长。如果任务三步之内就能完成,手工写 Prompt 可能更省成本。AutoDesign 的优势在长流程中才明显,因为步骤变多之后,每步微小错误都会被放大,人工定位问题的时间成本急剧上升。
3.2 不适合什么场景
如果任务本身不具备可重复性,或者用户输入每次差异极大,又没有可靠的自动评估器,那么直接把 AutoDesign 方案引入生产环境风险很高。元层优化会持续产生额外的推理调用和 token 消耗,但如果无法判断哪版 Harness 更好,整个优化只是在浪费时间与成本。
3.3 使用边界与合规红线
AutoDesign 这类“元优化”能力一旦与真实工具系统打通,存在被滥用的可能。如果一个 Harness 被自动优化出“尝试绕过权限限制、访问未授权文件、对第三方系统执行越权操作”的行为,元层优化器本身可能因为评估器设计不完善而无法及时发现。因此落地时必须做到:
- 所有工具调用必须保留完整审计日志;
- 关键操作必须经过人工授权或独立安全策略校验;
- 设计实验只使用测试环境和模拟数据;
- 涉及人脸、声音、隐私数据或版权素材时,必须先确认授权;
- 真实项目上线前,要把异常行为规则加入评估维度,而不是只考核任务成功率。
任何自动优化框架都不应该被用来生成绕过平台限制、规避安全机制或窃取数据的内容。工程人员需要在评测环节加入安全约束校验,确保优化出来的 Harness 不会越界。
4. 原型环境准备与前置条件
虽然公开材料没有给出 AutoDesign 的一键安装包和官方代码仓库,但我们仍然可以基于范式搭建一个最小可运行的实验原型。环境准备的核心不是某个特定库,而是把“模型推理调用”和“任务执行日志”这两个基础能力准备好。
4.1 基础环境清单
建议使用独立 Python 环境,避免与已有项目依赖互相污染。以下是一个通用检查清单:
- 操作系统:Linux 或 macOS 优先,Windows 也可以,但路径处理要留意;
- Python:3.10 或 3.11 均可;
- 依赖管理:venv 或 conda;
- 底层模型:选择支持 OpenAI 兼容接口的推理服务。本地可使用 Ollama、vLLM 等,也可以使用云上的模型 API;
- 请求库:
requests或openaiPython SDK; - 日志与排障:建议直接使用标准库
logging,不要着急引重量级框架。
4.2 推荐目录结构
原型阶段不建议把所有代码塞进一个文件,建议按职责分开:
autodesign_proto/ ├── config/ │ └── model.yaml ├── harness/ │ ├── base.py │ ├── parser.py │ └── prompt_templates.py ├── agents/ │ ├── executor.py │ └── meta_optimizer.py ├── evaluator/ │ ├── rules.py │ └── score.py ├── data/ │ └── tasks.jsonl ├── logs/ │ └── run.log └── main.pyconfig 目录保存模型接入参数,harness 目录保存 Harness 的解析逻辑和 Prompt 模板,agents 目录实现执行器和元优化器,evaluator 目录负责给单次执行打分。这样划分的好处是:元层优化器修改的只是 Harness 配置,而不是代码逻辑,代码结构可以保持稳定。
4.3 模型接口通用配置
下面的 YAML 配置是一个通用模板,具体 model、base_url、api_key 需要按你实际的推理服务填写。
# config/model.yaml default_model: base_url: "http://127.0.0.1:8080/v1" api_key: "EMPTY" model_name: "your-local-model" temperature: 0.2 max_tokens: 2048使用本地推理服务时,base_url 指向本地端口即可;使用云端 API 时,base_url 填写服务商提供地址,api_key 使用自己的密钥。这个原型不限制模型规格,但需要注意,长视野任务对长文本能力要求比较高,如果模型上下文窗口很短,需要在 Harness 中设计持久化记忆截断策略。
5. 原型关键模块设计
AutoDesign 的最小原型至少要包含四类模块:Harness 定义器、执行器、评估器、元优化器。下面按“先让目标层跑起来,再套上元层优化”的顺序设计。
5.1 Harness 定义:可被解析的配置结构
Harness 不能是一段人眼才能理解的自然语言,它需要被代码解析并控制执行流程。最简单的形式是一个 JSON 或 YAML 配置,描述系统行为。这里给一个示意结构:
{ "harness_id": "harness_v1", "system_instruction": "你是一个设计任务执行助手。请严格按照步骤完成设计,每一步都必须调用相应工具并给出中间说明。", "max_steps": 12, "tool_call_format": { "type": "json", "force_comment": "true" }, "retry_policy": { "max_retry": 2, "retry_interval_seconds": 3 }, "context_policy": { "max_history_chars": 6000, "truncation": "keep_recent" }, "stop_conditions": [ "task_complete", "max_steps_reached", "user_cancelled" ] }这个结构可以由元层优化器生成,也可以由人工写初始版本。关键点是代码必须标准化地读取它,而不能把配置含义硬编码在执行逻辑里。
5.2 执行器:让 Harness 约束真正生效
执行器的职责是加载 Harness 配置,并控制目标层模型按此运行。下面给出一段原型示意代码,它演示了如何把配置中的 system_instruction、max_steps 和 stop_conditions 转换成实际控制逻辑。实际项目中需要按你自己的模型 SDK 和工具调用方式调整。
import json import time import logging from typing import Optional logger = logging.getLogger(__name__) class HarnessExecutor: def __init__(self, harness_config: dict, model_client): self.config = harness_config self.model = model_client def execute_task(self, task: str): instruction = self.config.get("system_instruction", "") max_steps = int(self.config.get("max_steps", 8)) history = [] for step in range(1, max_steps + 1): messages = self._build_messages(instruction, task, history) response = self.model.chat(messages=messages, temperature=0.2) logger.info("step=%s response=%s", step, response) # 解析动作,可能是工具调用,也可能是最终答案 action = self._parse_action(response) history.append({"step": step, "action": action}) if action.get("type") == "final_answer": return {"success": True, "answer": action.get("content"), "steps": step} if action.get("type") == "tool_call": result = self._execute_tool(action.get("name"), action.get("arguments")) history.append({"tool_result": result}) return {"success": False, "answer": None, "steps": max_steps}这段代码不是完整可运行版本,它展示了 Harness 的核心控制点:在第几步结束、历史消息如何裁剪、工具调用结果要不要继续喂回模型、达到最大步数时如何终止。一个 Harness 好不好,正是由这些控制点上的策略决定的。
5.3 评估器:优化回路的驱动器
若没有评估器,元层优化就没有反馈信号。评估器需要针对具体任务类型设计。原型阶段建议使用多层指标:
- 完成率:任务是否在最大步骤内完成;
- 结果质量分:是否符合验收规则,或者由打分模型输出 1 到 10 的分数;
- 资源效率:实际调用次数、总 token 消耗、平均单步耗时;
- 稳定性:同一任务多次运行时结果的离散程度。
代码里可以这样组织:
class MetricAggregator: def __init__(self): self.records = [] def add_run(self, run_result: dict): self.records.append({ "success": run_result.get("success"), "quality": run_result.get("quality", 0), "steps": run_result.get("steps", 0), "total_tokens": run_result.get("total_tokens", 0), "cost": run_result.get("cost", 0.0) }) def aggregate(self) -> dict: if not self.records: return {} n = len(self.records) success_rate = sum(1 for r in self.records if r["success"]) / n avg_quality = sum(r["quality"] for r in self.records) / n avg_tokens = sum(r["total_tokens"] for r in self.records) / n return { "success_rate": round(success_rate, 4), "avg_quality": round(avg_quality, 4), "avg_tokens": int(avg_tokens), "run_count": n }在 AutoDesign 中,评估器不只是用来给单次任务打分,它还要对比不同 Harness 版本在同一批验收任务上的表现。这里最容易踩的坑是为了节省成本而减少测试任务数量。样本太少会导致某个 Harness 出现假阳性结果,元层优化器可能会过度拟合噪声。
5.4 元优化器:自动修改 Harness
元优化器可以理解为另一个面向 Harness 的“写作模型”。它需要拿到三类信息:
- 当前 Harness 配置;
- 一批任务的多轮执行日志摘要;
- 聚合后的评估结果。
然后输出一版新的 Harness 配置。典型的调用方式示意如下:
instruction = """ 你是智能体系统优化器。当前 Harness 在验收任务上的成功率为{success_rate}, 平均质量分为{quality},平均 token 消耗为{tokens}。 请根据以下执行日志中的问题模式,输出优化后的 Harness。 注意:优化目标是提高成功率与稳定性,不要无意义增加工具调用步数。 """.format(success_rate=sr, quality=q, tokens=t) new_config = meta_model.chat( messages=[ {"role": "system", "content": "你只能输出合法 JSON 格式的 Harness 配置。"}, {"role": "user", "content": instruction + "\n旧配置:" + json.dumps(old_config, ensure_ascii=False)} ] )这里有几个工程细节需要特别说明:元层模型必须被限制为输出严格 JSON,否则后续解析会不断失败;每次优化只应该针对一个明确的失败模式,不要期望一次把所有问题改完;拿到新 Harness 后下一步不是直接推广,而是用小规模任务样本做回归验证。
如果优化回路陷入不收敛,通常的原因是描述不够具体。比如“提升质量分”这种目标太泛,元层模型不知道往哪个方向改。比较好的做法是把日志摘要里的具体失败例放到上下文里,比如“在第 7 步出现了重复调用 search_tool 三次且查询条件完全相同”这样的描述,能显著提升优化方向的准确性。
6. Long-Horizon Agentic Design 功能测试与效果验证
原型搭好后,需要有标准化的测试流程。AutoDesign 目标场景是 Long-Horizon,所以不能只用简单问答来验证,而应设计包含中间步骤的验收任务。
6.1 验收任务样例
下面以“多阶段设计任务”为样例,设计三种难度递增的任务。你可以根据自己的业务场景替换:
任务 A:给定一个产品关键词,生成 10 条候选 slogans。这个任务步骤不多,主要是测温能力。
任务 B:给定一个页面主题,先采集素材,再生成结构方案,最后输出完整设计说明。这个任务跨多个工具,需要多轮信息组织。
任务 C:给定一个全流程需求,需要拆解成子任务清单,逐个执行并汇总成文档,且中间允许自动纠错。这更接近 Long-Horizon。
每个任务最好准备 10 到 30 个不同输入。任务太少无法判断 Harness 稳定性和元优化的真实收益。
6.2 对比实验设计
一次完整的 AutoDesign 实验建议跑三条线:
- 基线 A:固定人工设计的初始 Harness,不做任何元优化,重复多轮,记录指标。
- 基线 B:修改部分 Prompt 但仍然手工配置,比如只加一段“如果调用工具失败,请重新描述目标”,记录指标。
- 实验线 C:使用元优化器迭代改进 Harness,通常是多轮优化,每轮用小样本验证后,再在测试集上评估。
判断 AutoDesign 是否有价值的直接指标是:实验线 C 在验收集上的成功率是否显著高于基线 A,且 token 开销是否在可接受范围内。如果成功率上升但 token 消耗翻了几倍,对生产环境不一定划算。
6.3 检查执行日志的要点
实验过程中不要只看最终分数,要定期人工抽查目标层执行日志。主要排查对象包括:
- 工具调用是否与当前阶段目标一致;
- 是否存在无效的重复调用;
- 历史信息是否出现截断后的自我矛盾;
- 模型是否因为 Context 太长而丢失早期任务约束。
如果日志里出现“模型反复尝试调用一个并不存在的工具”“在第 3 步就开始重复使用第 1 步的结论”,这些问题单靠评估分数不容易发现,需要日志联动分析。
6.4 判断优化是否成功的标准
- 成功率:在验收任务集上,成功率持续上升,而不是单次波动;
- 中断率:因为“步数耗尽”或“解析失败”而中断的任务占比降低;
- 稳定收益:元优化后的 Harness 在没有继续优化时也能在相似任务上保持效果,而不是过拟合到训练样本;
- 可解释性:新的 Harness 修改点能够解释为“减少了盲目重试”或“补充了输出格式约束”,而不是随机改动。
7. 自动化接入与批量任务框架
AutoDesign 从实验走向生产,必须解决批量任务和自动化接入问题。简单说,你需要把实验流程封装成可调度的任务服务,让外部系统可以提交多份需求,并带上一份 Harness 配置或“使用默认配置进行优化”的标记。
一个通用流程如下:
- 接收 Job 请求,保存任务参数到队列;
- Worker 拉取任务,选择 Harness 版本;
- 目标层执行并将完整日志写入文件或数据库;
- 评估器计算指标,写入结果记录;
- 如果是元层优化任务,还需触发配置迭代流程。
下面是批量提交任务的 Python 调用示意,实际接口路径和任务结构需要按你的平台调整。
import requests import json job_list = [ {"task_id": "job_001", "content": "设计一个登录页面的视觉布局方案", "harness_id": "harness_v3"}, {"task_id": "job_002", "content": "为一款在线协作工具设计设置面板结构", "harness_id": "harness_v3"}, ] for job in job_list: resp = requests.post( "http://127.0.0.1:8000/submit", json=job, timeout=30 ) print(job["task_id"], resp.status_code, resp.text)批量任务的难点往往不在接口本身,而在失败重试和日志关联。建议在 task_id 之外增加全局 request_id,所有内部日志都带这个 ID,否则一旦某个任务中间卡住,排查顺序会非常痛苦。
失败重试策略也要谨慎。对于 LLM 类任务,直接盲目重试可能浪费大量 token。建议区分错误类型:接口超时可重试;模型返回格式非法,可以重试但重试用例要带上纠错说明;任务执行超过最大步数,通常重试也没有意义,应该记录失败原因后通过元层分析修复逻辑。
元层优化还有一个更高阶的玩法:不针对单个任务优化 Harness,而是维护一个 Harness 版本库,每次任务在开始时先跑一个小型“能力预检”,根据任务难度选择不同 Harness 配置。这与 AutoDesign 的核心目标结合,可以演变成一套更自动化的路由机制。当然,这属于工程扩展方向,实际落地要以你的任务分布和成本结构为前提。
8. 资源占用与性能观察
AutoDesign 的资源消耗与普通 Agent 应用相比是倍增的,因为它在完成目标层任务之外,还多了一层元层评估与优化调用。需要重点观察三个方向。
8.1 推理 Token 消耗
Long-Horizon 任务本身会导致长上下文。每个步骤都要把前面的历史信息重新发送给模型,随着步骤增加,Token 消耗呈近似线性增长。如果再加一层元层优化,每个优化周期还需要带上日志摘要,日志越长 Token 越大。建议在日志入库时对文本做截断或摘要,不要让元层优化器读取全部原始日志。
# 示例:截断超长日志的逻辑片段 def truncate_log_text(log_text: str, max_chars: int = 3000): if len(log_text) <= max_chars: return log_text head = log_text[: max_chars // 2] tail = log_text[-max_chars // 2:] return head + "\n...[middle truncated]...\n" + tail8.2 上下文窗口与显存关系
如果你使用本地模型,上下文窗口长度直接决定显存占用。模型上下文越长,KV Cache 占用的显存越高,尤其是在长视野任务持续多轮对话时需要注意。同一个模型,处理短查询和处理 10 轮以上长任务日志所需显存可能有明显差异。具体数字不能一概而论,需要按实际模型、量化精度和并发数测试。以是否接入本地模型的判断为准:如果完全走云端模型 API,本机主要资源瓶颈在任务队列、日志存储和处理进程本身,CPU 内存 8G 以上基本够用;如果走本地推理,显存大小才是决定上限的因素。
8.3 性能取舍建议
在做 AutoDesign 实验时,不要一开始就在全量验收集上做元优化。正确做法是先抽 5 到 8 个代表任务作为快速反馈集,元层每修改一轮 Harness,就在快速反馈集上跑一次。确认指标没有退化之后,再扩大到全量验证集。这样可以大幅降低优化成本,也让迭代频率更快。
如果目标层模型出现反复输出非法 JSON 的情况,可以考虑增强解析器的容错能力,而不是让元层模型重新生成一版 Harness。解析器容错和处理异常生成结果是执行器层面的事,元层模型更适合处理策略问题。
9. 常见问题与排查方法
从工程预研角度,AutoDesign 类系统最容易遇到下面几类问题。排查时不建议只盯代码报错,要从“最终分数降到阈值外”往回追原因。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 优化循环不收敛 | 评估指标波动太大、验收任务量太少、元层上下文里缺少具体失败样例 | 检查多轮评估分数的标准差与日志摘要 | 固定验收集,增加样本量,优化目标从泛化描述改为具体失败模式 |
| 成功率上升但 token 消耗暴涨 | 模型在无关步骤上消耗上下文,或 Harness 增加了无效的中间检查点 | 分析每步调用类型与 token 消耗分布 | 在 Harness 中增加“完成预期后立即输出最终结果”的跳出条件 |
| 长任务出现早期任务约束丢失 | 上下文过长导致截断,或模型注意力集中在最近几轮 | 回放执行日志,查看关键约束是否还存在于历史消息中 | 使用持久化 Memory,按阶段摘要早期信息并重新注入 |
| 元层输出不是合法 JSON | 元层 Prompt 约束不足,或输出被截断 | 打印原始模型响应 | 增强结构化输出约束,或使用 JSON Mode 接口 |
| 重试风暴 | 失败后直接重试全部任务,导致接口压力增大 | 查看日志中的 token 消耗与调用频次 | 区分可重试错误与不可重试错误,必要时引入退避策略 |
| 结果分数偏离人工判断 | 评估器指标设计不合理,例如只关注完成不关注质量 | 抽取失败样本人工对比 | 在评估器中加入规则校验或模型质量评分 |
需要特别提醒的是,AutoDesign 里一旦元层优化器生成的 Harness 明显偏离预期,不要急着“把模型换大一号”。更大的模型固然可能生成更复杂的配置,但也会带来更高的延迟与成本。更稳妥的做法是记录当前 Harness 中哪一条约束导致了问题,直接修改对应配置项,然后观察下一次执行是否改善。这种“定向修策略”的方式比无脑全量重跑高效得多。
10. 最佳实践与使用建议
AutoDesign 这套范式如果要用到真实系统,建议按下面的工程节奏推进,不要直接上线完全自治的“Agent 设计 Agent”产品。
第一阶段,做好任务样本库。把你的真实任务整理成可重复执行、可自动评估的数据集。这是 AutoDesign 能否跑通的前提。如果这一步没有做好,后面所有优化都会变成盲人摸象。
第二阶段,先选择一个基线 Harness。最简单的方式是手工写一个固定流程的 ReAct 或 Plan-and-Execute 循环,跑通一段端到端任务并记录日志。这个阶段的目标不是效果多好,而是让日志、错误分类、评估指标和任务 ID 串联起来。
第三阶段,实现元层优化闭环。在基线上增加日志摘要模块、指标聚合模块和 Harness 生成模块。优化时保持“每轮只修一个关键问题”的原则,宁可多跑几轮也不要让单轮改动过大,否则无法定位是哪项改动提升了效果。
第四阶段,加入安全边界和人工抽检。对 Harness 自动生成工具的调用权限进行限制,不建议直接授权元层模型新增或删除任何工具,它的职责应该局限于调整执行策略。每次元层输出新配置后,至少要跑一轮安全校验:检查是否存在绕过权限、访问非法资源、修改受保护文件的描述。
第五阶段,逐步扩大自动权限。只有经过充分验证、并在多人复核过的 Harness 版本,才可以在受限范围内自动使用。涉及高风险操作,例如发送消息、修改数据库、发布内容,必须在系统中保留不可跳过的授权步骤。
从合规角度再三重复一点:凡是涉及真实用户数据、受版权保护内容、人脸或声音信息、跨系统操作、第三方账号的自动化流程,都必须事先确认授权与合规边界。AutoDesign 的理念是让系统更聪明地完成任务,而不是让系统突破使用边界。评估器里必须加入安全合规维度,确保模型“能做好一件事”和“只做合法范围内的事”这两个目标不冲突。
11. 总结:AutoDesign 思路是否值得跟进
AutoDesign 这个方向给 agent 工程带来的最大启发,不是“以后不用人写 Prompt 了”,而是把静态的 Prompt 工程升级成了动态的系统优化问题。它把目标层的执行框架看成可以被搜索和迭代的对象,把工程师从“手调几十条规则”的重复劳动里解放出来,同时也把问题转移到了“如何构建可靠评估器”和“如何控制优化成本”上。
如果你想在自己项目里验证这套思路,最先应该做的不是写一个完整的元优化器,而是先回答一个问题:你手头的任务集是否可以自动评估?如果答案是肯定的,AutoDesign 就具备了落地的土壤;如果答案是否定的,优先补评估能力,远比搭一个精美的 Harness 搜索框架更有价值。
最容易踩的坑是低估日志分析和评估集的作用。很多团队会花大量时间设计元层 Prompt,却忽视了日志里最有价值的信息:哪一步重复调用、哪一步上下文溢出、哪一步输出格式不合法。把这些失败模式结构化,再交给元层模型去修改 Harness,效果会好很多。
AutoDesign 真正可以持续扩展的方向包括:多任务场景下的 Harness 路由、基于历史优化的成本控制、评估器的自动生成与校准、以及把 Harness 版本化后接入 CI/CD 流程。如果你正在做 Agent 平台或者复杂工作流引擎,建议先把这套“配置可解析、执行可记录、效果可评估、上层可迭代”的工程基础打牢。后续就算不沿用 AutoDesign 的全部设计,这套思路也能显著降低智能体系统的维护成本。