<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程默的博客 &#187; 沙箱</title>
	<atom:link href="https://blog.chacuo.net/tag/%e6%b2%99%e7%ae%b1/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.chacuo.net</link>
	<description>web原理、web架构、web安全、web性能、服务器性能、服务器架构、服务器安全;你不能预知明天，但你可以利用今天。你不能样样顺利，但你可以事事尽力!</description>
	<lastBuildDate>Mon, 14 Sep 2026 08:40:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>AI 智能体开始持续工作后，开发者还需要负责什么？</title>
		<link>https://blog.chacuo.net/1682.html</link>
		<comments>https://blog.chacuo.net/1682.html#comments</comments>
		<pubDate>Mon, 14 Sep 2026 08:40:05 +0000</pubDate>
		<dc:creator>程默</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[Agents API]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[codex]]></category>
		<category><![CDATA[motoagent]]></category>
		<category><![CDATA[上下文管理]]></category>
		<category><![CDATA[多智能体]]></category>
		<category><![CDATA[智能体开发]]></category>
		<category><![CDATA[沙箱]]></category>

		<guid isPermaLink="false">https://blog.chacuo.net/?p=1682</guid>
		<description><![CDATA[以前做一个 AI 应用，最常见的方式是：收到用户问题，调用一次模型，再把回答返回 &#8230; <a href="https://blog.chacuo.net/1682.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>以前做一个 AI 应用，最常见的方式是：收到用户问题，调用一次模型，再把回答返回出去。</p>
<p>当任务变长之后，这种方式很快会遇到问题。模型需要连续读取文件、调用工具、保存中间结果、处理报错，还可能把任务拆给多个子智能体。开发者不再只是写一个请求，而是要自己维护一套让 Agent 持续工作的运行系统。</p>
<p>最近围绕 OpenAI Agents API 和 Codex harness 的讨论，真正值得关注的也不是“又多了一个接口”，而是一个更现实的问题：当智能体开始连续工作，开发者还需要亲自维护哪些部分？</p>
<h2>一、一次模型调用，为什么会变成一套运行系统？</h2>
<p>单次问答的流程比较短：输入问题、调用模型、返回结果。</p>
<p>一个能真正执行任务的 Agent，通常还要处理这些环节：</p>
<table style="border-collapse:collapse;border:1px solid #d0d0d0;width:100%;margin:10px 0;">
<tr>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">环节</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">要解决的问题</th>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">会话状态</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">记住任务已经做到哪一步</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">上下文管理</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">对话变长后，保留重要信息并压缩历史内容</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">工具调用</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">让模型能够访问文件、终端、搜索或外部服务</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">执行环境</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">决定代码在哪里运行、文件放在哪里</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">子智能体</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">把独立任务拆出去并汇总结果</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">错误恢复</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">命令失败、网络中断后能否继续处理</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">权限控制</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">限制 Agent 可以读取和修改什么</td>
</tr>
</table>
<p>这些工作合在一起，通常被称为 Agent harness。它不是一个单独的模型，而是围绕模型建立的任务运行底座。</p>
<h2>二、这次变化的重点，不是模型变得更会聊天</h2>
<p>阿里云文章提到的 Agents API 发布，核心变化是把 Codex 背后的运行能力开放给开发者。OpenAI 官方公告也将它描述为基于 Codex harness 的云端 Agent API，并强调会话、工具使用、上下文管理和子智能体协作。<a href="https://openai.com/index/introducing-the-agents-api/" target="_blank">官方公告</a></p>
<p>这意味着开发者可以把更多精力放在三件事上：</p>
<ul>
<li>Agent 应该完成什么业务任务；</li>
<li>它需要哪些工具和资料；</li>
</ul>
<ul>
<li>什么结果才算完成。</li>
</ul>
<p>至于会话如何持续、上下文什么时候压缩、多个子任务怎样并行，则可以交给更成熟的运行底座处理。</p>
<p>这并不等于开发工作消失了。它只是把工作重点从“维护每一次模型调用”转向“设计任务、工具和边界”。</p>
<h2>三、持续任务最容易卡在哪些地方？</h2>
<h3>1. 上下文越来越长</h3>
<p>一个 Agent 调查问题几个小时后，早期的文件、命令输出和判断都会进入上下文。如果所有内容都原样保留，成本和处理压力都会上升；如果删得太多，又可能丢掉关键结论。</p>
<p>因此，长任务需要上下文压缩，但压缩的目标不是简单删掉旧消息，而是保留任务目标、已经验证的事实、未解决的问题和下一步动作。<a href="https://developers.openai.com/api/docs/guides/agents-api/overview" target="_blank">Agents API 文档</a> 将自动上下文压缩列为长会话能力的一部分。</p>
<h3>2. 工具太多，模型反而不容易选择</h3>
<p>把几十个工具的完整说明全部放进每次请求，会占用大量上下文。工具搜索的思路，是先让 Agent 找到可能相关的工具，再加载需要的定义。</p>
<p>工具越多，越需要清晰的名称、参数和权限说明。工具接口写得含糊，Agent 很难稳定调用；工具权限过大，出错时影响范围也会变大。</p>
<h3>3. 子智能体共享文件，不代表互不影响</h3>
<p>多智能体可以把“查日志、看部署、分析依赖”拆成不同任务并行处理。每个子智能体拥有独立上下文，能够减少任务之间的干扰。</p>
<p>但如果它们共享同一个执行目录，仍然可能同时修改同一个文件。上下文隔离不等于文件隔离，实际工程中仍然需要任务边界、锁定策略和结果检查。</p>
<h3>4. 沙箱解决运行问题，但不自动解决业务安全</h3>
<p>Agent 需要执行代码时，必须有一个环境保存文件、安装依赖和运行命令。可以使用托管沙箱，也可以接入自己的基础设施。<a href="https://developers.openai.com/api/docs/guides/agents-api/architecture" target="_blank">架构文档</a> 将 Agent 运行底座、执行环境和业务应用区分开来。</p>
<p>沙箱能限制运行范围，却不能替开发者决定哪些文件可以读取、哪些操作需要人工确认。放进执行环境的密钥，也可能被 Agent 生成的代码访问，这部分仍然需要单独设计。</p>
<h2>四、开发者的角色正在从“写循环”变成“定边界”</h2>
<p>以前需要自己维护的代码循环，往往包括：调用模型、解析工具请求、执行命令、把结果放回上下文、判断是否继续，最后处理异常。</p>
<p>现在更值得投入时间的，是下面这些问题：</p>
<table style="border-collapse:collapse;border:1px solid #d0d0d0;width:100%;margin:10px 0;">
<tr>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">设计问题</th>
<th style="background:#4a90d9;color:#fff;padding:10px 12px;border:1px solid #3a7bc8;text-align:left;font-weight:600;">具体要回答什么</th>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">任务边界</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">Agent 能做什么，不能做什么</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">完成标准</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">什么结果才算任务结束</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">工具范围</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">哪些工具默认开放，哪些需要确认</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">数据范围</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">可以访问哪些目录、数据库和文档</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">失败处理</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;">出错后重试、暂停还是交给人工</td>
</tr>
<tr>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">结果验证</td>
<td style="padding:8px 12px;border:1px solid #e0e0e0;background:#f4f6f8;">谁检查代码、数据和最终结论</td>
</tr>
</table>
<p>Agents API 的意义，是减少运行底座的重复建设，但产品规则、数据权限、评估标准和人工接管机制仍然属于应用本身。</p>
<h2>五、普通开发者怎样理解这件事？</h2>
<p>不需要一开始就搭建完整的多 Agent 平台。可以从一个边界明确的小任务开始：让 Agent 读取一个项目，分析一个错误，生成一份报告，并把过程中的文件和命令限制在测试目录中。</p>
<p>测试时可以使用下面这段指令：</p>
<pre style="background:#f7f8fa;color:#1f2937;border:1px solid #d1d5db;border-radius:6px;padding:12px 14px;overflow-x:auto;font-size:14px;line-height:1.8;white-space:pre-wrap;"><code style="display:block;color:#1f2937;line-height:1.8;">请检查当前项目中的登录错误：<br />1. 只读取与登录功能相关的文件；<br />2. 不修改源代码，不执行删除命令；<br />3. 列出你找到的证据和可能原因；<br />4. 如果需要进一步验证，请先说明要执行的命令；<br />5. 最后给出一份按优先级排序的修复建议。</code></pre>
<p>这条指令的价值不在于让 Agent 一次修好问题，而是观察它是否遵守范围、是否引用了真实证据，以及是否在执行动作前说明风险。</p>
<h2>六、MotoAgent 适合放在哪个位置？</h2>
<p>如果目标是研究 Agents API 的底层架构，直接阅读官方文档、调用接口和搭建自己的运行环境更合适。</p>
<p>如果目标只是先体验 Codex 的实际工作方式，自己维护一整套运行底座就显得过重。<a href="https://motoagent.net/" target="_blank">MotoAgent</a> 将 Codex 作为内置入口，把对话、项目目录、文件访问和任务执行放在一个桌面工作区中。使用者可以先打开已经安装好的软件，选择 Codex，指定测试目录，再发送一个小任务。</p>
<p>电脑中实际安装的界面可以看到 OpenClaw、Codex、Hermes 和 Claude 等入口。它更像一个统一的 Agent 工作台：不同任务可以切换不同智能体，项目和对话仍然留在同一个使用环境里。</p>
<p><img style="width:80%" src="http://blog.chacuo.net/wp-content/uploads/2026/09/wpid-motoagent_agent_list2.png"></p>
<p>内置方式并不能替开发者完成所有工程设计，但它减少了第一次体验时的准备工作。对于想先观察 Agent 如何读取文件、执行任务和返回结果的人，先从一个小项目开始会更容易判断是否适合深入。</p>
<h2>七、使用内置 Codex 时，第一条任务应该怎么写？</h2>
<p>打开 Codex 会话后，可以先发送：</p>
<pre style="background:#f7f8fa;color:#1f2937;border:1px solid #d1d5db;border-radius:6px;padding:12px 14px;overflow-x:auto;font-size:14px;line-height:1.8;white-space:pre-wrap;"><code style="display:block;color:#1f2937;line-height:1.8;">请先分析当前测试项目，不要修改文件：<br />1. 说明项目使用的技术栈；<br />2. 找出程序的启动入口；<br />3. 列出可能的运行命令；<br />4. 说明你需要哪些权限才能继续；<br />5. 如果信息不足，请列出缺少的文件或配置。</code></pre>
<p>确认分析结果后，再让它完成一个很小的修改，并要求运行验证。这样可以把“模型理解错了”“目录选错了”和“权限不足”区分开来。</p>
<h2>八、不要把“托管”理解成不需要负责</h2>
<p>Agent 的运行底座可以由平台维护，但以下责任不会自动消失：</p>
<ul>
<li>哪些数据可以被模型读取；</li>
<li>哪些工具可以直接调用；</li>
</ul>
<ul>
<li>哪些操作必须等待人工确认；</li>
<li>任务失败后是否允许自动重试；</li>
</ul>
<ul>
<li>生成的代码和报告如何被验证；</li>
<li>运行环境中的密钥和文件如何保存。</li>
</ul>
<p>OpenAI 官方公告也明确说明，Agents API 公开测试阶段不额外收取平台层费用，但模型、工具和执行环境仍可能产生相应成本，不能简单理解为“Agent 免费运行”。</p>
<h2>结语：开发者没有退出，只是站到了更高一层</h2>
<p>AI Agent 从“回答问题”走向“持续完成任务”之后，开发者需要关注的内容确实发生了变化。</p>
<p>会话管理、上下文压缩、工具调用和子智能体编排，可以交给成熟的 harness；但任务边界、权限、安全、验收标准和人工接管，仍然要由开发者负责。</p>
<p>想研究底层能力，可以从 Agents API 的官方快速入门开始；想先体验 Codex 怎样在项目里工作，则可以打开已经安装好的 MotoAgent，从一个测试目录和一条小指令开始。真正有价值的不是让 Agent 看起来什么都能做，而是让它在清楚的边界内稳定完成一件事。</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.chacuo.net/1682.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
