第 22 章:bash 与外部世界的边界
命令执行、进程取消、输出收尾与上下文排除,区分执行成功和业务结果成功。
本文目录 3
来源:《pi 的设计艺术》第 22 章:bash 与外部世界的边界
阅读日期:2026-09-14。书中版本基线:基于 v0.66.0,书中称已对照 v0.82.1。 本条为原创阅读笔记,未独立核验 pi 源码。
设计问题与机制
bash 覆盖专用工具之外的任务,其简洁参数把许多执行细节留在命令字符串中。书中执行后端通过流式回调、退出码、取消信号和可选超时抽象;取消或超时需结束进程树并完成输出收尾。结果优先保留尾部,超长日志另存文件供续读。
产品可在执行前调整命令、目录和环境,但接口存在不等于已经实现隔离。会话级目录及环境注入避免沿用错误的全局状态。excludeFromContext 将执行、展示、持久化和发送给模型分开。
取舍与版本边界
通用执行能力带来命令解释和环境管理责任。书中 v0.76.0 后的 !! 表示排除模型上下文;v0.77.0 删除了提示词中强制优先专用工具的旧指引。v0.82.0 新增会话环境变量。mom 的容器执行属于另一个产品的实现,不是通用 bash 默认保证。
工程应用检查(独立推导)
分别验证启动失败、非零退出、取消、超时、尾部排空与子进程残留。退出码成功不等于业务结果正确。“不发给模型”也不等于“不落盘”;涉及日志保留时应明确这两个字段。传递会话身份前清理继承值,避免嵌套运行错误归属。
读到这里,有新的想法?
围绕本文聊聊