OpenKub 图书开发书单中职/技工版 · 十二章候选稿

十二章候选稿 · 汇总于2026-10-08

第9章 让AI连续完成几件事

样章 v0.1 | 2026年9月21日

再大一点,让我看清楚

上一章的网页已经可以展开补丁细节。按下按钮,蓝布与针脚的说明出现;再按一下,它们又收回去。我们把一段介绍变成了能够操作的小作品。

设想一位读者看着页面说:“文字能不能再大一点?”你意识到,自己看着合适的字号,未必适合每一位读者。于是,一个新的想法出现了:在页面上留一个“放大文字”的按钮,需要时放大,读完也能恢复。

这个想法听起来只比原来多一个按钮。真正做起来,却需要先读懂已有文件,找到正文与样式,增加操作,再打开网页试用。文字变大后会不会挤出页面?原来“看看补丁”的按钮还能不能用?这些问题要到实际运行时才能看得更清楚。

第8章中,你可能亲自完成了保存、打开与检查。现在,我们尝试把其中一些连续的工作交给配有工具的AI。你说明想改善什么,它读取文件、实施修改,再根据运行结果决定是否需要调整。

在这个过程中,值得观察的不只是最后多了什么功能,还有每一次行动与下一步之间的联系:它得到了什么新信息?为什么接着做这件事?哪些地方需要停下来,听听你的意见?

本章仍然围绕这一页作品展开,不要求另外开发一个智能体平台。你可以使用上一章自己的网页,也可以采用配套的笔袋页面。先完成一次小而清楚的委托,再考虑怎样把这种协作方式用到新的事情上。

学完本章,你将能够: 说明一项任务中步骤的先后关系;分清人、模型和工具各自完成了什么;根据实际返回的结果解释下一步选择;初步理解工作流与智能体的区别;确定可以交给AI继续处理的范围,以及需要自己判断的地方。

9.1 把事情的先后关系安排清楚

9.1.1 一项任务中的固定步骤

先把“文字大一点”说成可以看见的变化。

笔袋页面打开时,继续保持原来的正文和补丁按钮。新增按钮写着“放大文字”。按一下,主要介绍、补丁细节的正文和两个按钮上的字一起变大;新按钮改为“恢复字号”。再按一下,恢复原来的大小。

标题和文字内容不改。放大时,原来的补丁细节仍然可以展开、收起。缩窄窗口后,正文能够自然换行,读者不必左右拖动才能读完一句话。让文字变大时仍然保留内容和操作,是有意义的阅读要求。[1]

本例选用正文从18像素变为24像素。这里的“像素”用于网页排版,与第4章照片中记录颜色的像素用途不同。现在只需知道:在其他条件相同时,较大的字号通常会显示得更大。

浏览器也提供缩放功能。本章的按钮给作品增加一种直接的阅读选择,但不应妨碍浏览器原有的缩放。[1]

开始前,先打开原网页操作一次。 读一遍主要介绍,展开并收起细节,确认自己准备保留什么。若采用第8章的另一版本,细节开始时已经展开,就把这一点写进要求;后面的修改不必把它改回收起。

接下来,想一想怎样把新功能做出来。可以先安排这样的顺序:

读取当前网页 → 增加字号切换 → 保存新文件 → 打开试用 → 对照要求检查。

这几个步骤有先后联系。没有读过正在使用的文件,就容易按旧印象修改;尚未保存新内容,打开的可能还是原来的页面;只看代码,不能代替实际按下按钮。

前一步产生的结果,也会成为后一步需要的材料。读取后得到页面内容,修改后得到新的程序,保存后得到可以打开的文件,试用后得到具体的观察。把这些材料传到下一步,事情才能接着进行。

把一项任务中的步骤及其衔接安排起来,可以称为工作流(workflow)。工作流可以由人按步骤完成,也可以把一些环节交给程序自动执行。在AI应用中,常见做法是预先安排主要路径,让模型和工具分别参与其中。[2]

例如,一个程序可以固定安排“读取文件—请模型修改—保存—打开检查”。每次接到同类任务,就沿这条路径执行。我们不需要为每一步重新发出指令,也能够看到任务逐渐完成。

固定步骤也可以包含判断。例如,程序预先写好“文件存在就读取,不存在就提示选择文件”。这仍然是提前安排的路径。能在两种情况之间切换,本身还不能说明下一步是由模型临时决定的。

我们已经在第8章见过这样的判断:细节隐藏时就展开,已经展开时就收起。输入不同、当前情况不同,程序可以得到不同结果;决定怎么处理的规则早已写在代码里。

给自己的小任务安排一条路线。 用几句普通话写出先做什么、后做什么,指出至少一处“后一步要用前一步结果”的地方。写到能帮助开始工作即可,不必把所有可能情况都画成复杂图表。

9.1.2 人、模型与普通程序怎样分工

有了路线,再看看每一步由谁完成。

你了解作品为什么保留那些针脚,也知道想改善的是阅读。模型可以根据要求阅读代码、提出修改并生成新的程序。文件工具负责读取和保存;浏览器负责显示页面、执行按钮里的代码。若环境配有浏览器操作工具,AI还可以借助它打开页面、点击按钮并取得结果。[3]

这几种作用需要配合。模型提出“读取patch.html”,执行程序才会调用相应工具;文件内容返回以后,模型才能据此继续处理。页面上的字号变化,则由浏览器执行实际代码产生。

不必给每一步都安排一个新的AI角色。对这个小任务,一个能够使用必要工具的AI就可以参与多个环节,普通程序完成适合直接执行的操作。怎样分工,取决于任务需要与环境实际提供的能力。

现在开始这次委托。 在能够读写文件、预览并操作网页的AI编程环境中,放入第8章的patch.html。保留原文件,把新作品另存为patch-large.html。本章配套材料也提供了原始页面,可以直接作为起点。

可以这样说明要求:

请读取当前的patch.html,在保留原文件的前提下,制作patch-large.html。

增加一个“放大文字”按钮。按下后,主要介绍、补丁细节正文和两个按钮的字号从18像素变为24像素,按钮文字改为“恢复字号”;再按一下恢复。标题、介绍内容和原来的细节展开方式保持不变。

保存后,请实际打开新文件,依次试用放大、展开细节、恢复字号和收起细节,并在较窄的窗口中检查正文与按钮。我先用390像素宽的预览查看。遇到与要求不符的地方,依据实际结果继续调整,不增加其他功能。

完成后告诉我改了哪里、实际检查了什么。修改本次新文件可以继续进行;改写作品内容、覆盖原文件或对外发布,先与我商量。

这段话同时交代了要做什么、保留什么,以及怎样判断已经完成。它给AI留出了处理代码的空间,也让你能够追踪结果是否仍然符合最初的想法。

工具没有提供某项能力时,可以由你补上相应操作。例如,只有文字对话时,你可以自己保存、打开并把观察告诉AI;有文件工具却没有浏览器操作工具时,可以请AI修改后由你试用。此时,要按实际分工描述过程,不把人的点击写成AI已经操作过。

先观察一次读取,再观察一次修改。 看看AI是否取得了当前文件,是否保留了标题与原有按钮,新的文件叫什么。不要只盯着页面中不断增加的文字,也要找出实际发生的操作。

模型也可以先给出简短的工作安排。这样的安排方便交流,但列出计划与执行计划是两件事。下一节,我们沿着实际操作返回的结果继续看。

9.2 根据结果选择下一步

9.2.1 工具执行以后返回了什么

AI请求工具做一件事以后,工具需要把执行结果送回来。这些结果可以是文件内容、写入位置、计算得到的数值、页面截图,也可以是未能完成操作的说明。不同工具返回的形式不同。[3]

模型接着处理时,依据的是这些已经取得的信息,以及原来的任务要求。若只是继续沿用自己刚才的猜测,就可能错过页面实际发生的变化。

下面是一段示例。我们用普通文字列出几次操作和结果:

已执行的操作 返回的主要内容 这些内容怎样帮助继续工作
读取patch.html 标题、主要介绍、细节区域和原有按钮代码 找到可以保留的部分及需要增加功能的位置
写入patch-large.html 写入成功,给出文件位置 可以重新读取并打开这份新文件
打开新页面,按下“放大文字” 主要介绍字号变为24像素,按钮显示“恢复字号” 可以继续检查细节是否也变大,以及原功能是否保留
展开细节,再恢复字号 细节仍然可见,正文恢复为18像素 可以检查两个功能是否互相干扰

表中的每个结果只回答相应的问题。写入成功说明工具报告完成了写入;它还没有说明页面一定符合阅读要求。字号达到24像素,说明选中的文字确实变大;它还没有说明读者一定觉得合适。

因此,检查时既看程序可以读取的数值,也看实际页面。浏览器能够提供文字最终采用的字号等样式信息,工具可以利用它们进行比较。[4] 页面是否挤在一起、按钮是否容易找到,则需要结合显示和实际操作判断。

例如,工具报告主要介绍的字号由18变为24像素。可以算一算:

24 ÷ 18 ≈ 1.33。

在这次设置中,字号约为原来的1.33倍,增加了约三分之一。这里比较的是字号数值,不能据此断言所有字形的高度都恰好增加三分之一,更不能把它写成“阅读效果提高三分之一”。

跟着新页面操作一遍。 先放大文字,再展开补丁细节;保持细节展开,恢复字号;最后收起细节。你应该看到,改变字号不会让细节自行展开或收起,改变细节也不会把字号改回去。

这两个小功能可以组合使用。读者可以看普通字号的主要介绍,也可以看放大后的补丁细节。它们帮助同一个阅读目标,但各自保存的当前情况应当分清。

键盘操作也可以顺手检查:用Tab键移到相应按钮,按Enter或空格,看看能否得到同样的变化。[5] 这一步让我们不只依赖一种点击方式。

如果实际结果与要求一致,就继续完成后面的检查,不需要专门制造一次错误。若出现差异,先把差异说清楚,再看需要补充哪一种信息。

例如,按钮文字变成了“恢复字号”,正文却看起来没变大。可以继续读取正文的实际字号,查看改变样式的代码,而不是立即换掉整张页面。若得到的字号确实是24像素,就要再比较前后的显示与所选文字,不能只凭一个印象判断程序失效。

还有一种情况:浏览器工具没有打开文件。此时,得到的是一次打开失败的信息,不是网页内容有问题的证据。先核对文件位置或交由人打开,才能继续判断功能。修改页面内容并不能自动解决所有工具问题。

留下一个具体的行动结果。 选择刚才的一次读取、写入或点击,用一句话说明它取得了什么,以及你据此做了哪项检查。无需抄下整段操作记录,能够回到具体文件或页面核对即可。

9.2.2 智能体怎样选择后续行动

到这里,最初安排的步骤可能已经全部完成,也可能在试用中出现了新的情况。

现在只改变一个条件:把预览窗口进一步缩窄到320像素,或者把窗口拖得比刚才更窄。保持较大的字号,再展开细节。看看文字是否仍然换行,两个按钮是否还在能够操作的位置。

这一次,我们没有增加功能,而是把已有作品放到另一种显示条件下。新的观察,会影响是否需要继续修改。

如果页面仍然清楚,AI可以依据检查结果结束这次调整。如果一行文字超出边缘,它可以读取相关样式,看看是否把区域宽度固定得过大;若定位到具体原因,再修改这一处并重新打开。若只能知道“页面不对”,却看不到实际文件或显示情况,则需要补充材料或请你说明。

这些是可能的处理方向。究竟应该采取哪一种,要看本次工具真实返回了什么,不能要求每个模型都演出同样的过程。

请AI接着检查这个变化。 可以说:

保持刚才的新文件和放大状态,把预览宽度改为320像素,展开细节后再看一次。根据实际结果决定是否需要修改。若已有做法满足要求,就保留;若需要调整,说明新结果改变了哪一步安排。

在以大模型为核心的AI应用中,模型能够围绕目标,利用工具取得信息,并根据结果选择后续行动,这种系统常称为智能体(agent)。本章讨论的就是这种能够使用工具、连续处理任务的智能体。[2]

可以把其中反复发生的联系读成一句话:

带着任务要求,取得当前结果;据此选择下一步;执行以后,再查看新的结果。

例如,模型发现正文超出边缘,先读取样式;读取结果表明一块区域被固定为较大的宽度,再选择修改宽度;随后重新运行,检查问题是否消失。这里的后续行动由模型结合结果作出选择。[6]

与之相比,如果程序事先规定“超出边缘就套用某一段固定样式,再运行一次”,它也能自动处理这种情况,但处理路径已经预先规定。两种方式都可能有用,判断区别需要看步骤怎样产生,不能只看屏幕上是否连续发生了许多动作。

工作流可以包含判断,智能体也可以使用固定步骤。 例如,固定安排“生成以后一定打开检查”,而让模型根据检查结果选择要修改的代码。实际应用可以把两种方式结合起来。[2]

因此,一段长对话、一次重复尝试,或网页自身的两个按钮,都不足以单独证明其中运行着智能体。需要看模型是否真的参与了后续行动的选择,以及相应工具有没有执行。

还有一个容易混淆的地方:帮助你修改网页的智能体,与做好的网页,是两个对象。本章完成的网页仍然可以用普通JavaScript控制字号和细节。读者按按钮时,并不需要再次询问大模型。AI参与了制作过程,作品运行可以沿用固定程序。

连续工作时,系统还需要保留本次任务中有用的信息。例如,正在修改哪个文件,正文已经采用哪一种字号,刚才在哪个宽度下检查过,哪件事尚未完成。这些信息帮助下一步接上前面的工作。

它们可以保留在当前对话、工具记录或项目文件里。模型根据这些信息继续处理,并不等于每改一次网页就重新训练一次模型。第5章讲过的“提供当前材料”与“调整模型参数”,在这里仍然需要分清。

新开一次对话时,也不要默认对方已经知道前面的过程。把当前文件和一句简短进展交给它,例如:“已完成字号切换,390像素预览正常,接下来检查更窄的显示。”这样,继续工作有了具体起点。

指出一次由结果影响的选择。 它可能是发现问题后修改某处,也可能是确认原有做法适用后停止修改。观察你这次实际发生的过程,说清“得到了什么—因此决定做什么”。如果全程只按预先列好的步骤执行,就如实记录这条工作流,不必为了给它取名而补写一次不存在的选择。

9.3 在委托中保留自己的判断

9.3.1 哪些操作需要先征得同意

当AI可以连续执行操作,我们不必再为每一次读取和点击重新发出指令。与此同时,开始时约定的范围变得更加重要。

这次你同意的是:保留原文件,制作新文件,增加字号切换,并完成相关检查。为完成这项要求,读取练习文件、修改新文件、重新打开和试用,可以在约定范围内继续进行。

假设AI又提出:“为了让页面更简洁,我把针脚的描述删掉了。”页面也许少了几行字,却改变了作品想表达的内容。第7章中,你选择留下针脚,是为了让读者看见修补的经历。怎样取舍这段表达,仍然需要由你判断。

这时可以回应:

保留关于针脚的原文。我们这次只调整阅读方式,不缩减作品内容。若放大后空间不够,请先调整换行和间距,涉及内容修改时再与我讨论。

这句话说明了保留的理由,也为继续处理指明了方向。人的判断不只是最后选择“通过”或“不通过”,还包括解释哪些东西值得保留。

有些操作影响范围更大。例如,覆盖原作会减少比较的依据,删除材料可能使后续修改失去来源,把网页发到公开网站则会改变谁能够看到它。这些都超出了本次“在新文件中调整阅读”的委托,需要另行确认。

确认时,最好明确到具体对象和动作:“可以用这份新文件替换原文件”,或“只在当前文件夹内保存,暂不发布”。一句“你看着办”留下的空间很大,不利于判断哪些选择已经获得同意。

用一句话划清本次范围。 例如:“读取原网页,在新文件中修改与检查;作品文字保留,覆盖原作和发布另行确认。”范围清楚之后,已经同意的低影响操作可以连续完成,不必每点一次按钮都停下来询问。

还要区分任务要求与实际权限。我们在对话中说明“不修改其他文件”,是在表达约定;环境还可以通过权限设置限制哪些文件能够写入、哪些操作需要确认。两者共同发挥作用,不能把一句提示当作已经设置好了全部限制。[7]

对于这个练习,使用单独的作品副本和相应工具范围即可。你需要理解允许发生什么,以及操作是否与约定一致;不需要在本章编写一套权限管理程序。

如果环境请求一项新权限,先看它准备做什么。完成一个本地字号按钮,通常无需把作品发布到外部网站。没有必要的额外操作,可以不批准,让任务回到原来的范围。

再请一位读者试用。 数值检查可以确认字号是否变大,实际读者则能告诉你,按钮是否容易找到、文字是否更适合自己。不同人可能有不同偏好,因此作品保留“恢复字号”的选择,也保留读者自己的决定。

9.3.2 什么时候继续,什么时候停下

“再优化一下”很容易说出口,却未必有明确的终点。AI能够继续生成建议,不代表这页作品需要一直增加内容。

回到最初的要求:正文和按钮可以放大、恢复;原来的细节功能保留;文字内容没有被改写;在已经检查的窄窗口中能够阅读和操作。若这些已经做到,就可以完成这次任务。

在这样的条件下停下来,意味着一项具体改进已经完成。以后有新的需要,再开始下一次尝试。保留一个能够使用的版本,比不断改变却说不清改进了什么更有帮助。

还有一种停止,是把需要判断的地方交还给人。比如你和试用者对字号大小有不同意见,或者希望同时保留两种完全不同的版式。AI可以整理差别,最终采用哪种做法,应当结合你们的用途和体验决定。

也可能暂时无法完成某一步。浏览器工具不可用时,可以说清“文件已经修改,实际点击尚未检查”,然后由你补上。不能因为后面的检查没有进行,就把前面已经完成的工作全部作废;也不能把未检查的部分写成成功。

反复尝试却没有新的信息时,同样值得暂停。例如,每次都重新生成整张页面,问题却没有被定位。更有用的做法可能是重新读取当前文件,补充一张页面截图,或把需要修改的范围缩小。

可以约定:围绕同一个问题尝试了几次仍没有进展,就先说明当前文件、已经尝试的办法和还缺少的信息。自动执行的系统还可以设置运行时间或尝试次数的上限,防止任务无限继续;具体数值按实际任务安排。[2]

这里的关键是让继续与停止有依据。还有可以核对的新信息、下一步与目标有关,就继续;需要人的选择、缺少必要条件,或已经满足要求,就在合适的位置结束或暂停。

完成一次清楚的交接。 可以请AI用几句话说明:“改了什么;依据什么结果判断;还有什么未做。”下面是一段示例:

新页面保存在patch-large.html,原文件保留。主要介绍、细节正文和两个按钮可以在18与24像素之间切换。

已在390与320像素宽的预览中操作两个按钮,字号切换没有改变细节的展开情况,文字未出现横向超出。当前结果满足本次要求。

页面没有公开发布。实际读者是否觉得更便于阅读,还需要请他试用。

按本次真实过程写这段说明。没有做过320像素预览,就不写这一项;由你完成的检查,就明确写成你的观察。这里需要的是清楚交代结果,不是列出尽可能多的完成项目。

配套的patch-large.html提供了一种完成写法,可以打开对照。它本身是一份普通网页,不会演示或重放智能体的制作过程。学习连续协作,需要观察自己的实际操作,以及模型怎样接着处理。

回看这次委托。 找到一项已发生的工具操作、一次受到结果影响的安排,以及一项需要自己决定的事情。再问问自己:AI接过部分操作以后,我是否更清楚作品要改善什么?实际结果是否帮助我形成了新的想法?

一个小按钮的价值,来自它回应了一个具体需要。能够连续完成工作,让我们有机会把更多注意力放在这样的需要上,也要求我们对目标与结果保持理解。

本章回望

一项任务可以拆成相互衔接的步骤。前一步的文件、计算或运行结果,为后一步提供材料。提前安排主要路径,有助于让工作稳定地接续起来。

模型、工具和人承担不同作用。模型根据要求与已有信息提出下一步,执行程序调用工具,工具返回真实发生的结果。读取了什么、保存到哪里、页面怎样变化,都应当能够回到具体对象上检查。

当模型结合结果选择后续步骤和工具,就出现了本章讨论的智能体式工作方式。固定工作流与模型选择可以配合使用。需要哪种方式,应当从任务出发,不以步骤多或自动化程度高作为唯一目标。

连续协作还需要清楚的委托。我们可以让已经同意的操作继续进行,也可以保留对内容、影响范围与完成标准的判断。知道什么时候继续、什么时候结束或交还给人,是完成任务的一部分。

第7章,你选择怎样讲述一件作品;第8章,你让读者能够操作它;本章,你又尝试组织AI与工具共同改进它。下一章,我们将把感知到的环境变化与作品的回应接起来,看看屏幕之外还有哪些值得探索的问题。

练习与继续探索

1. 说明步骤怎样衔接。 选择本次任务中的三个连续步骤,分别说出每一步需要什么、产生什么。若跳过中间一步,后面的判断可能缺少什么?

2. 比较两种“根据结果继续”。 一个程序预先规定“找不到文件就提示重新选择”;另一个应用由模型阅读返回信息后,决定检查文件名、换一种查找方式或向人提问。它们在哪里相似,下一步的产生方式又有什么不同?

3. 改变一个条件。 把预览窗口变窄,或使用自己原先设为默认展开的页面,重新完成一次相关检查。记录实际结果与下一步。结果正常时,说明为什么可以保留原有做法。

4. 判断一项新操作。 为了让页面更短,AI建议删去作品中的一句经历;为了让别人看到新页面,它建议立即发布。分别说清原来的委托是否包含这些动作,以及你需要了解什么才能作出决定。

5. 写清完成到哪里。 新文件已经保存,浏览器未能打开,AI写下“全部功能检查通过”。把这句话改成符合实际情况的说明,并指出下一步需要补上什么。

6. 把协作方法带到新事情中。 回到第1章留下的问题,或选择自己关心的一件小事。哪些步骤已经清楚,哪些需要看实际结果再决定?说明一项可以交给AI与工具的操作,以及一项你希望保留的选择。暂时不必增加新的软件平台。

本章资料来源

[1] W3C Web Accessibility Initiative. Understanding Success Criterion 1.4.4: Resize Text. 用于核对文字放大时保留内容与功能、允许浏览器缩放的基本原则。本章18至24像素的切换是教学示例,不据此宣称完成全部无障碍要求。访问日期:2026-09-21。https://www.w3.org/WAI/WCAG22/Understanding/resize-text.html

[2] Anthropic. Building effective agents. 原文发表于2024-12-19。用于核对预设工作流、模型选择行动、两者组合及停止条件的基本区分。本章限定讨论以大模型为核心的智能体,不把这一用法作为全部智能体研究的唯一界定。访问日期:2026-09-21。https://www.anthropic.com/engineering/building-effective-agents

[3] Anthropic. Tool use with Claude. 用于核对模型发出工具请求、执行程序调用工具并返回结果的关系。仅作原理参考,不指定课堂品牌、模型版本或接口配置。访问日期:2026-09-21。https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview

[4] MDN Web Docs. Window: getComputedStyle() method. 用于核对浏览器读取元素最终样式值的基本能力。访问日期:2026-09-21。https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

[5] W3C Web Accessibility Initiative. Disclosure (Show/Hide) Pattern. 用于核对展开与收起按钮的键盘操作和展开信息。访问日期:2026-09-21。https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/

[6] Google Research. ReAct: Synergizing Reasoning and Acting in Language Models. 2022-11-08。用于参照行动、环境观察与后续处理之间的联系,不要求学生复现论文系统或读取模型内部思考过程。访问日期:2026-09-21。https://research.google/blog/react-synergizing-reasoning-and-acting-in-language-models/

[7] Anthropic. Configure permissions. 用于核对工具执行中的允许、拒绝与人工确认机制,支持区分自然语言约定与实际权限设置。访问日期:2026-09-21。https://code.claude.com/docs/en/agent-sdk/permissions