
书名:《Agent Runtime 工程化:从工具调用循环到可恢复执行系统》
作者:陈堂会
章节:第二章 TypeScript / Node Runtime 基础 / 2.3 AbortSignal:取消要能传到底
电子版系列:查看完整目录
第二章 TypeScript / Node Runtime 基础:2.3 AbortSignal:取消要能传到底
一个成熟 runtime 必须支持取消。取消不是'UI 不显示了',而是从用户操作一路传播到模型请求、工具执行、子进程和资源清理。
async function withTimeout<T>(
task: (signal: AbortSignal) => Promise<T>,
ms: number
): Promise<T> {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), ms);
try {
return await task(controller.signal);
} finally {
clearTimeout(timer);
}
}
这段代码只是开始。上线后的 runtime 需要把 AbortSignal 传给 HTTP client、模型 SDK、工具 executor、子进程管理器。任何一层吞掉取消信号,都会让用户看到'已取消',机器上却还有命令在跑。
取消传播最好有统一约定:
| 层级 | 收到取消后 |
|---|

