T learn.traeai

第 4 节 · 本站原创中文课程 · 建议 25 分钟

用 Codemode 编排工具

学完能做:理解 QuickJS 与宿主边界,写出并行读取和部分失败处理。

脚本是程序,输出是模型观察

Codemode 接收原始 JavaScript,作为 async 函数体在 QuickJS 中执行,可使用顶层 await 和 return。脚本没有 Node、文件、网络或计时器 API,只能通过注入工具和 models 到外部。它可以先组合与过滤工具结果,只把 text()、image() 或返回值交给模型。减少上下文的关键是输出选择,不是把失败隐藏;脚本结束时未等待的任务会被取消或丢弃。

部分失败要保留

独立只读调用可以用 Promise.allSettled。每个 rejected 结果都应变成明确的失败观察;MCP 正常返回值还可能有 isError:true,必须另外检查。不要并行依赖前一步结果的步骤,也别把写操作的失败重试默认为安全。官方文档明确指出:脚本失败不撤销已经完成的工具副作用。

const results = await Promise.allSettled([
  tools.read({ path: 'README.md' }),
  tools.read({ path: 'package.json' }),
]);
for (let i = 0; i < results.length; i++) {
  const result = results[i];
  text(result.status === 'fulfilled'
    ? { index: i, summary: String(result.value).slice(0, 300) }
    : { index: i, error: String(result.reason) });
}
// 在 Pi codemode 中运行;这里不执行宿主工具

宿主限制与 store

CodemodeSandbox.execute 复制工具清单并传入 signal、超时、内存限额和序列化 store。低层包不自行持久化 store;coding-agent 在成功执行后把 store 写入会话分支。store 适合 ID、游标和摘要,不能视为外部副作用事务。1.0 的 models.generateImages 通过会话凭证调用图像模型,须检查 stopReason/errorMessage,再用 image() 展示结果;会话成本会计入这些调用。

图像分类是另一种模型调用

1.1 允许 models.classify() 同时接收 state、questions 和 images,但必须先确认分类模型的 input 包含 image。不支持图像的分类模型收到非空 images 会返回错误;这与生成图像不同。官方示例从 tools.read() 得到图片块再传给分类器,例如用 GPT-6 Luna 判断截图布局。练习只用假图片块与假分类器,记录不支持输入、错误结果和成功结果,不需要真实凭证或付费调用。

这是本站独立编写的讲解与示例,并非官方课程逐字翻译。理解之后,请完成下面的练习、自测和笔记。

参考来源:Pi v1.1.0 官方源码与文档

动手,把理解变成成果

本节练习

正在读取本机草稿…

用假 read 工具写一个并行两文件读取脚本,输出摘要和失败原因。再设计图片块→假分类器→结果检查的流程,覆盖不支持图像的模型。说明超时、store 与外部副作用的边界。无需真实凭证。

82 / 6000 字。本页不执行代码;可下载后在本地运行,或用 Agent 获取定性建议。

给我一个提示

先让一个假读取成功、另一个失败,检查成功证据和失败缺口都存在。

查看参考思路(本站预写,非实时 Agent)

Promise.allSettled 保留两项结果;成功项输出文件名和摘要,失败项输出原因。假分类器先检查 input 是否包含 image;不支持时返回能力错误,支持时传入图片块并检查错误结果,不把异常当作分类答案。超时不回滚外部工具,store 仅提交成功脚本的小状态,宿主仍需限制真实工具。

人工自评:逐项核对自己的作品

这些勾选由你确认,不是自动测试结果。遇到待测项,请在作品里明确注明。

理解自测

QuickJS 中的脚本不能直接访问文件,说明什么?

自己的学习笔记

0 / 3000 字 · 仅保存在此浏览器

围绕当前章节学习

Agent 答疑与作品评价

正在检查连接…

本站讲解、提示、参考思路和自测可独立使用。连接模型服务后,才能实时提问或评价;这里不会把预写内容伪装为 Agent 回答。

走完学习闭环

完成本节

保留练习、勾选人工自评并通过自测后,可记录完成。修改作品或答案会重新打开本节。

课程进度:0 / 6 · 本机记录,不是外部官方证书

← 上一节:工具定义、真实执行与模型消息