乐于分享
好东西不私藏

macOS 已有 AI Agent 系统原生沙箱方案

macOS 已有 AI Agent 系统原生沙箱方案

大家好,我是老鹿。

我有一个习惯,就是定期会去 Apple 开发者官网上逛一逛。

看看 Apple 有什么新能力,新特性提供给开发者了,尤其是每年 WWDC 期间。

老鹿本人,是一位专注于 macOS 系统下的数据安全“老师傅”,自然对 Apple 提供和迭代的数据安全和终端安全能力,会比较关注。

今年,我在 Apple 的 EndpointSecurity Framework 的开发者文档中,发现了一个新 API:

es_new_descendants_client

它的官方描述是:

创建一个新的端点安全(ES)客户端,将其作用范围限定为仅监控后代进程。

我当时就有一个疑问:

为什么要自己监控自己,限制自己。

后来我想明白了,这不就是给 AI Agent 量身定制的基础能力嘛。

这不就是 macOS 系统原生,系统级,可靠的 AI Agent 沙箱方案嘛。

于是,带着这个疑问,我开始了对这个 API 的调研,今天和大家做一个分享。


macOS 27 的 EndpointSecurity 框架已经出现一类新的原生能力:

由普通用户态进程创建,只约束自身后代进程树,并且可以对后代进程的敏感行为做运行时授权决策的es_new_descendants_client

从系统安全抽象看,它不是传统意义上的完整容器或 App Sandbox,而是一种轻量级、动态、进程树级的授权控制边界。

这正好击中 AI Agent 时代最难处理的安全问题。

Agent 本身需要调用 shell、编译器、包管理器、浏览器自动化、文件系统和外部工具;但这些动作又可能被 prompt injection、恶意仓库、恶意日志、恶意网页或被污染的工具输出诱导。

静态沙箱太硬,纯应用层 wrapper 太软。descendants client 提供了一个新的中间层:由 Agent 宿主进程主动给自己将要启动的工具链设置内核参与的运行时边界。

这也意味着,macOS AI Agent 沙箱方案不必继续押注sandbox-execsandbox_init或自定义 SBPL profile 这类基于 Seatbelt 的“伪产品化沙箱”路线。

这里的“伪”不是说 Seatbelt 的内核隔离不存在,而是说 Apple 已经把公开 CLI/API 明确标为废弃,SBPL 也不是稳定、文档化、面向第三方产品的开发接口。

对 Agent 运行时来说,继续依赖它们会把架构建在 Apple 已经要求迁出的旧入口上。

需要把事实边界说清楚:

Apple 公开材料确认了es_new_descendants_client这一组系统能力,但尚未把它直接命名为 "AI Agent sandbox"。

macOS 27 SDK 和 Apple Developer Documentation 已经公开列出es_new_descendants_client,并且 SDK 头文件明确写出后代进程作用域、无需 root、无需 TCC、可延长 auth 事件 deadline 等关键约束。

本文的核心观点是基于这些官方事实得出的工程判断:macOS 已具备构建原生 AI Agent 沙箱的系统级基础。


一、为什么 AI Agent 需要一种新的 macOS 沙箱

过去的 macOS 应用安全模型主要围绕两个问题设计:

  1. 1. 应用能不能访问某类用户数据或硬件能力。
  2. 2. 系统级安全产品能不能观察和拦截全系统安全事件。

AI Agent 改变了问题形态。Agent 不是一个行为边界稳定的普通应用,它更像一个会临时生成执行计划的自动化主体:它可能读源码、写文件、执行脚本、调用git、运行测试、安装依赖、访问网络、启动浏览器,还可能把外部内容重新送回模型上下文。

风险不再只来自应用作者,也来自 Agent 在运行时读到的内容。

典型威胁包括:

  • • Prompt injection 诱导 Agent 执行破坏性命令,例如删除工作区外文件。
  • • 恶意 README、日志、网页或测试输出诱导 Agent 读取~/.ssh~/.aws、浏览器 profile 等敏感目录。
  • • 恶意依赖安装脚本在 Agent 授权范围内执行任意代码。
  • • Agent 将用户敏感内容上传到非预期域名。
  • • 工具链逃逸,例如通过子进程、脚本解释器、XPC 服务或 launchd 间接完成宿主策略不允许的动作。

这类问题的关键不是“应用是否可信”,而是“应用启动的后代进程在某一次任务里是否还应该被信任”。因此,理想的 Agent 沙箱应该具备几个特征:

  • • 只约束单个 Agent 会话和它启动的工具链,而不是全系统。
  • • 能在执行、打开文件、创建文件、重命名、删除、IPC 等敏感动作发生前做授权。
  • • 策略可以按工作区、任务、命令、路径、签名、用户确认动态变化。
  • • 部署摩擦低,不能要求每个 Agent 都以 root 或系统扩展形态运行。
  • • 高风险动作可以等待用户确认,而不是被传统 ESF deadline 逼迫快速放行或快速拒绝。

这正是 descendants client 的意义所在:它把 EndpointSecurity 从“全系统安全产品的高权限观察者”推进到了“进程主动约束自己后代行为”的方向。


二、前史:macOS 安全边界的四条旧路线
1. App Sandbox:静态能力边界

Apple 官方 App Sandbox 文档将其定位为限制应用访问文件、网络连接和硬件能力的一种机制。它的价值很清楚:即便应用存在漏洞,也能降低攻击者滥用平台能力的范围。App Sandbox 也是 Mac App Store 分发的要求之一。

但 App Sandbox 的短板也同样明显:它主要是静态 entitlement 和容器化边界。对于 AI Agent 来说,很多合法任务必须跨越固定边界,比如读取用户指定项目、调用系统工具、运行构建脚本、访问临时网络端点。把 Agent 放进过硬的静态沙箱,容易让它失去可用性;把沙箱开得太大,又会让 prompt injection 获得同样大的权限。

2. Seatbelt /sandbox-exec:已经废弃的伪产品化路线

在 macOS 上谈沙箱,很容易绕到 Seatbelt、SBPL profile、sandbox-execsandbox_init这一套。它确实曾经提供过“给某个进程套一层 profile”的诱惑:看起来可以从外部启动一个命令,把文件、网络、系统服务能力都关进一个规则语言描述的边界里。

很多早期的命令行工具隔离、测试隔离、临时命令执行,都会自然想到这条路线。

但对 AI Agent 沙箱来说,这条路已经不能作为正式技术方案。Apple 官方材料给出的信号非常明确:

  • sandbox-exec(1)man page 的名称就是“execute within a sandbox (DEPRECATED)”,描述里直接写明该命令已废弃,并要求希望 sandbox app 的开发者改用 App Sandbox。
  • sandbox_init(3)man page 同样写明sandbox_initsandbox_free_error已废弃,并要求开发者采用 App Sandbox。
  • • macOS 27 SDK 的sandbox.h文件开头写明整个 header 已废弃,未来可能移除;sandbox_init标注为API_DEPRECATED("No longer supported", macos(10.5, 10.8))
  • • 同一个 SDK 的sandbox_init(3)man page 对内置 profile 给出更强硬的约束:这些 profile 在使用 macOS SDK >= 27.0 构建时不得使用,选择这些 profile 的进程会在尝试时被杀掉。

因此,基于 Seatbelt 的“伪沙箱方案”问题不在于它没有内核强制力,而在于它不是 Apple 面向第三方产品化延续的公开接口。

它缺少稳定的第三方开发契约,规则语言不可作为正式产品 API 依赖,公开入口又已被 Apple 标记为废弃。

对 Agent 沙箱而言,这种路线最多只能作为历史背景或实验工具,不能再作为 macOS 原生 Agent 安全方案的主轴。

3. System Extension + EndpointSecurity:系统级安全产品路线

Apple 在 WWDC 2022 的 "What's new in Endpoint Security" 中回顾了 ESF 的定位:EndpointSecurity 是给 macOS 安全产品使用的 C API,服务于 anti-virus、EDR、DLP 等场景。

Apple 也说明 ESF 最初在 macOS Catalina 引入,用来替代 KAuth KPI、MAC Kernel Framework 和 OpenBSM audit trail 这类旧机制,从而减少第三方开发 kernel extension 的需求。

这条路线解决的是“安全产品如何观察系统”:

  • • 安全产品以 System Extension 形态安装。
  • • EndpointSecurity client 订阅系统事件。
  • • 对 auth 事件可以允许或拒绝。
  • • 对 notify 事件可以审计已发生行为。
  • • 传统 ES client 需要 entitlement、Full Disk Access/TCC,并且通常以高权限部署。

这对 EDR/DLP 很合适,但对 AI Agent 沙箱太重。Agent 需要的是“我约束我自己启动的工具链”,而不是“我成为全系统安全产品”。

4. Network Extension:网络控制路线

Apple 的 NetworkExtension 文档把它定位为扩展系统核心网络能力。NEFilterDataProvider文档说明,过滤器以 flow 为单位接收应用打开的网络连接,并可选择 pass 或 block 网络数据。

这说明网络控制在 Apple 平台上有明确的官方路径。但它也进一步证明:EndpointSecurity descendants client 不应被误写成完整网络沙箱。除非 Apple 公开定义 ESF 网络事件并允许 descendants client 订阅,否则网络隔离仍应由 Network Extension、防火墙、代理或更高层策略承担。


三、转折:macOS 27 SDK 里的 descendants client

macOS 27 SDK 给出了最关键证据。ESClient.h中新增了:

es_new_client_result_t es_new_descendants_client(  es_client_t *_Nullable *_Nonnull client,  es_handler_block_t _Nonnull handler);

SDK 注释提供了五个决定性事实:

  1. 1. 这是一个只面向 descendant processes 的 ES client。
  2. 2. 调用进程本身只收到 notify 事件;后代进程收到 auth + notify 事件。
  3. 3. 覆盖范围包括创建后 fork 或 exec 出来的后代,递归生效。
  4. 4. 其他进程不可见。
  5. 5. 仍需要 Endpoint Security client entitlement,但不需要 root,也不需要 TCC approval。

这组约束非常不同于传统es_new_client。传统 client 的同一个头文件说明调用者需要com.apple.developer.endpoint-security.cliententitlement,并需要用户通过 TCC/Full Disk Access 授权;错误枚举里也有“缺 TCC”和“不是 root”的失败原因。macOS 27 的 descendants client 则把 root 与 TCC 这两个部署摩擦点从这个新入口上拿掉了。

这不是一个小改动,而是安全模型上的重新定位:

Apple 仍然要求 entitlement,因此这不是任意应用都能随便打开的监控能力;但一旦具备 entitlement,它不再必须作为全系统高权限观察者运行,而可以成为某个用户态宿主进程管理自己后代执行树的机制。


四、为什么这像是为 Agent 时代准备的“轻量沙箱内核”
1. 作用域正好是 Agent 的真实风险边界

AI Agent 的危险动作通常不是宿主应用直接完成的,而是通过它启动的工具完成:

  • • shell 执行rmcurlpythonnodebash
  • • 包管理器执行 postinstall 脚本。
  • • 测试框架启动子进程。
  • • 浏览器自动化启动浏览器或 helper。
  • • 编译器、链接器、代码生成器读写大量文件。

传统应用层 wrapper 只能拦住自己显式包装的命令。一旦脚本再启动脚本,或者工具链内部调用其他二进制,应用层策略就容易失明。

descendants client 的递归后代进程模型,正好覆盖这条执行树。

2. Auth 事件让策略发生在动作之前

EndpointSecurity 的关键价值不只是观察,而是 auth 事件可以在动作发生前等待授权结果。

对于 Agent 沙箱,这意味着策略可以在危险动作落地前生效:

  • • 进程执行前评估二进制路径、签名、参数、工作目录。
  • • 文件打开前判定目标是否在工作区内、是否命中敏感路径。
  • • 文件创建、删除、重命名前判定是否越权。
  • • macOS 27 新增的 XPC/bootstrap 相关 auth 事件可以帮助观察和限制后代进程接触系统服务的边界。

这与“事后审计日志”不同。Agent 安全最需要的是在模型犯错、被注入或被工具链带偏时,仍有一个不依赖模型判断的执行前闸门。

3. Deadline 机制允许交互式确认

传统 EndpointSecurity client 面临一个系统稳定性约束:auth 事件必须及时响应,否则会造成卡顿、超时甚至 client 被杀。ESF 过去服务的是全系统安全产品,因此不能允许任意 client 长时间卡住系统关键路径。

macOS 27 新增的es_set_deadline_min_milliseconds改变了 descendants client 的体验。

SDK 注释说明,deadline minimum 只适用于 descendants client。原因也很直接:descendants client 本来就可以直接杀掉或暂停自己的 child processes,并且系统 daemon 不会是 ES client 的 child,所以严格 deadline enforcement 没有传统场景那么必要。

SDK 还说明 minimum 可以高于系统默认值,从而实际延长 deadline。

这对 Agent 沙箱非常关键。很多高风险动作不能靠毫秒级策略自动决定,需要弹窗、CLI prompt、IDE UI 或企业策略服务确认。例如:

  • • “Agent 想读取~/.ssh/id_rsa,是否允许一次?”
  • • “测试脚本想向未知域名发起连接,是否继续?”
  • • “安装脚本想在工作区外写入 LaunchAgent,是否拒绝?”

没有可延长的 deadline,交互式授权很难成立;有了 deadline floor,Agent 的子进程可以等待人类或策略服务作出决定,而不会把系统级 daemon 拖下水。

4. Deadline miss mode 让失败语义可配置

macOS 27 SDK 还新增了 deadline miss mode:默认 kill client,也可以配置为 fail closed 或 fail open。

对 Agent 沙箱而言,合理默认应是 fail closed:策略引擎超时或崩溃时,宁可拒绝后代进程的敏感动作,也不悄悄放行。

这让沙箱不只是一组回调,而是一套可产品化的运行时策略执行机制:正常时精细决策,异常时有明确降级语义。


五、依据地图

这一节只做一件事:把前面的判断和公开证据对齐,避免把工程推论写成 Apple 官方命名。

1. EndpointSecurity 的定位
  • EndpointSecurity 是 Apple 官方的系统事件监控与授权 API。公开依据是 Apple Developer Documentation: Endpoint Security,以及 WWDC 2022 "What's new in Endpoint Security"。可信度:高。
  • ESF 最初服务于 AV/EDR/DLP,并替代旧内核/审计机制。WWDC 2022 transcript 明确回顾 Catalina 引入 ESF,替代 KAuth、MAC Kernel Framework、OpenBSM。可信度:高。
  • 传统 ES client 需要 entitlement 和 TCC/FDA。公开依据是ESClient.hes_new_client注释,以及 entitlement 官方文档。可信度:高。
2. Seatbelt 旧路线的状态
  • sandbox-exec是废弃方案。Applesandbox-exec(1)man page 的 name 与 description 均标注 DEPRECATED。可信度:高。
  • sandbox_init/sandbox.h是废弃方案。公开依据是 macOS 27 SDKsandbox.h:7-9sandbox.h:46-49,以及sandbox_init(3)man page。可信度:高。
  • 内置 Seatbelt profile 在 macOS SDK >= 27.0 下不得继续使用。macOS 27 SDKsandbox_init(3)man page 明确写明进程会在尝试 opt in 时被杀。可信度:高。
3. descendants client 的关键事实
  • macOS 27 新增 descendants client。Apple Developer Documentation 的 EndpointSecurity 函数索引列出es_new_descendants_clientlibEndpointSecurity.tbd导出_es_new_descendants_client。可信度:高。
  • descendants client 只监控调用进程及后代进程树。公开依据是ESClient.h:747-769。可信度:高。
  • descendants client 不需要 root/TCC。公开依据是ESClient.h:761-763。可信度:高。
  • descendants client 可设置 deadline minimum。公开依据是ESClient.h:841-869。可信度:高。
  • deadline 可以被延长到系统默认值以上。公开依据是ESClient.h:857-863。可信度:高。
  • macOS 27 新增 XPC/bootstrap auth/notify 事件。公开依据是ESTypes.h:300-307。可信度:高。
4. 需要保留的边界
  • macOS 26.x SDK 有 reserved event slots。公开依据是ESTypes.h:279-298。可信度:中,只能证明保留枚举存在,不能证明语义。
  • “AI Agent 沙箱”命名不是 Apple 官方说法。公开文档尚未直接使用该命名;本文将其作为 descendants client 在 Agent 威胁模型下的工程归纳。可信度:边界明确。

六、一个原生 Agent 沙箱的参考架构

下面是基于 descendants client 的 Agent 运行时架构。重点不是替代所有隔离机制,而是把“后代进程运行时授权”作为核心层。

关键组件如下。

1. Agent 宿主进程

宿主进程在会话启动时创建 descendants client,然后只通过受控启动器创建工具子进程。宿主自身的 UI、模型调用、会话数据库等逻辑不应被同一个 client 的 auth 事件反向卡住。

2. 事件订阅层

优先订阅对 Agent 威胁模型最有价值的事件:

  • AUTH_EXEC:执行二进制、脚本解释器、包管理器、shell。
  • • 文件相关 auth 事件:打开、创建、删除、重命名等。
  • • 进程生命周期 notify:fork、exec、exit,用于还原进程树。
  • • XPC/bootstrap 相关事件:限制后代进程接触高风险服务。
3. 策略引擎

策略不应只有“命令黑名单”,而应组合多维度信号:

  • • 路径:是否在工作区内,是否命中敏感目录,是否写入持久化位置。
  • • 命令:是否系统工具,是否解释器,参数是否危险。
  • • 签名:Team ID、signing ID、平台二进制、临时下载二进制。
  • • 任务上下文:用户是否授权本任务访问这个路径或执行这类动作。
  • • 数据流线索:最近是否读取过敏感文件,是否随后尝试外联。
  • • 用户策略:一次允许、会话允许、项目允许、永久拒绝。
4. 用户确认层

deadline minimum 让交互式确认成为现实。UI 不应展示底层噪音,而要把事件翻译成可判断的问题:

  • • “这个测试脚本正在尝试删除工作区外的文件。”
  • • “这个包安装脚本想执行未签名的/tmp/install.sh。”
  • • “这个进程想读取 SSH 私钥目录。”
5. 审计与回放

Agent 安全不是只看实时阻断,也需要事后解释。每次 allow/deny/ask 都应记录:

  • • 进程链:父子关系、可执行路径、签名信息。
  • • 操作:事件类型、目标路径、参数摘要。
  • • 决策:命中的规则、用户选择、deadline 情况。
  • • 会话:对应任务、模型轮次、工具调用 ID。

这能让“模型为什么做了这个动作”和“系统为什么放行/拒绝”在事后对齐。


七、威胁覆盖分析
1. 能直接覆盖的高频风险
  • Prompt injection 诱导破坏性命令:descendants client 可以通过 exec 与文件 auth 事件阻断;仍需策略理解参数和目标路径。
  • 越权读取敏感文件:可以在 open 前判定路径与任务授权;TCC/App Sandbox 仍可作为更底层保护。
  • 执行临时恶意脚本:可以在 exec 前评估来源、签名、路径;下载阶段和脚本内容分析还能继续增强。
  • 工作区外写入持久化文件:create/rename/unlink 等事件可阻断;需要维护持久化位置知识库。
  • 通过子进程链绕过 wrapper:递归 descendants 作用域天然覆盖;launchd/NSWorkspace 这类非后代启动方式仍需架构规避。
2. 需要继续验证和补强的风险
  • XPC/服务访问逃逸:macOS 27 新增 XPC/bootstrap auth 事件提供新抓手;仍需要确认具体事件字段和策略粒度。
  • 网络数据外泄:不能仅凭公开 ESF 证据确认完整覆盖;需要 Network Extension、代理、防火墙、DNS 策略配合。
  • CPU/内存/进程数耗尽:ESF 不是资源限制器;需要setrlimit、launchd limits、job object 风格管理。
  • 内存窃取或同用户进程注入:ESF 不是内存隔离机制;需要 App Sandbox、Hardened Runtime、进程隔离。

这张表的结论是:descendants client 能覆盖 Agent 最常见的“工具执行”和“文件越权”风险,但不能单独承担完整沙箱职责。它是轻量沙箱核心,不是所有隔离层的总和。


八、网络事件:最需要克制的部分

macOS 26.4 开始出现ES_EVENT_TYPE_RESERVED_5ES_EVENT_TYPE_RESERVED_6,Apple Developer Documentation 的 EndpointSecurity 索引也列出了这两个 reserved symbol。它们常被推测可能对应网络连接事件,但公开文档尚未给出语义、字段结构或订阅行为。

Endpoint Security 竟然能做防火墙?

但“reserved event 存在”和“它就是可用的网络连接 auth/notify 事件”之间还有证据缺口。公开 Apple 文档没有给出这两个枚举的语义、结构体字段或订阅行为。因此,文章中不能把“无需 root 的 Agent 网络防火墙”写成已确认能力。

更稳妥的表述是:

  • • Apple 官方证据确认 ESF 在 26.x/27.x 有 reserved event 扩展迹象。
  • • Apple 官方 Network Extension 文档确认网络 flow 的 pass/block 有正式框架路径。
  • • 如果未来 Apple 公开 ESF 网络 auth 事件,并且 descendants client 可订阅,那么 Agent 沙箱将获得更完整的单框架控制面。
  • • 在此之前,Agent 网络控制应走 Network Extension、代理、防火墙或应用层 egress policy。

这并不削弱 descendants client 的价值,反而让定位更清楚:它首先是进程树与文件/执行/IPC 行为控制,不是已经公开完成的网络沙箱。


九、和现有方案的关系
1. Apple 原生安全机制
  • App Sandbox:优势是系统原生、强静态边界、适合 App Store;问题是动态策略弱,Agent 可用性受限;descendants client 可以提供运行时补充。
  • System Extension + 传统 ES client:优势是全系统安全产品能力强;问题是 root/TCC/FDA/部署重,不适合每个 Agent;descendants client 更像它的轻量化分支。
  • Network Extension:优势是正式网络控制路径;问题是专注网络,不处理文件/exec;适合与 descendants client 组合。
2. 旧沙箱与通用隔离方案
  • Seatbelt /sandbox-exec/sandbox_init:优势是曾经看起来能给命令套 profile,规则表达力强;问题是 Apple 已明确废弃公开 CLI/API,SDK >= 27.0 内置 profile 不得使用,SBPL 不是稳定第三方产品接口;不应再作为 Agent 沙箱主方案。
  • shell wrapper:优势是简单、跨平台;问题是容易被子进程和解释器绕过;可被内核事件层替代。
  • Docker/VM:优势是隔离强;问题是 macOS 文件/GUI/性能/集成成本高;适合高风险任务,不适合所有 Agent 交互。
  • setrlimit/launchd limits:优势是资源控制明确;问题是不理解文件和执行语义;适合作为资源层补充。

descendants client 的独特位置是:它比 wrapper 更难绕过,比完整虚拟化更轻,比传统 ES client 更低摩擦,又比 App Sandbox 更动态;同时,它绕开了sandbox-exec/sandbox_init这条 Apple 已经明确标记为 deprecated 的旧路线。


十、产品化路线
阶段 1:最小可行性评估

目标是确认 macOS 27 beta 上 descendants client 的真实行为:

  • • 非 root 用户进程是否能创建 client。
  • • 无 Full Disk Access 时是否可用。
  • • 宿主进程是否只收到 notify。
  • • fork/exec 后代是否递归纳入 auth + notify。
  • • 工作区内外文件策略是否能稳定阻断。
  • • deadline minimum 是否能支撑交互式确认。
  • • client 崩溃、超时、fail closed 时后代进程表现如何。
阶段 2:Agent 沙箱原型

实现一个会话级 supervisor:

  • • 创建 descendants client。
  • • 启动受控 shell。
  • • 限制工作区外读写。
  • • 禁止执行未签名临时二进制。
  • • 对敏感路径读取弹窗确认。
  • • 记录完整审计日志。

这个阶段的验收标准不是“拦截所有攻击”,而是证明 prompt injection 诱导的典型 shell/file 操作会被内核事件层拦住。

阶段 3:和 Agent 运行时集成

把策略和 Agent loop 对齐:

  • • 每个工具调用有 task ID。
  • • 每个子进程继承 task context。
  • • 每个 ES 事件能关联到模型轮次、工具调用和用户授权。
  • • 用户可以对项目、命令、路径建立持久策略。
阶段 4:企业策略

企业版本可以把端侧策略接入集中管理:

  • • 敏感路径基线。
  • • 允许/拒绝命令列表。
  • • 允许网络域名或代理策略。
  • • 审计上报。
  • • 红队规则包。

这时 descendants client 不只是“开发者工具”,也可以成为 DLP/EDR 产品里专门面向 Agent 风险的一层。


十一、结论:Apple 没有公开命名,但系统能力已经到位

如果严格使用 Apple 已公开证据,最准确的结论是:

macOS 27 的 EndpointSecurity 正在引入一种原生的、轻量级的、后代进程树作用域的运行时授权控制能力。

这组能力的关键点是:

  • • 它仍受 entitlement 管理,但不再要求 root 或 TCC。
  • • 它看不见全系统,只看见调用进程和后代。
  • • 它允许 descendants client 延长 auth 事件 deadline。
  • • 它把原来属于系统级安全产品的部分能力,下放成了应用/Agent 可以围绕自身执行树使用的安全边界。

这就是 AI Agent 沙箱需要的核心原语,也解释了为什么新方案不必再调用一个基于 Seatbelt profile 的伪沙箱。

Apple 已经把sandbox-execsandbox_initsandbox.h这条公开路径标为 deprecated / no longer supported;macOS 27 SDK 甚至明确约束内置 profile 不得继续使用。

Agent 沙箱真正需要的不是把一个命令塞进废弃 profile,而是对 Agent 后代进程树持续、动态、可审计地做授权控制。

它不是完整沙箱,不隔离内存,不限制 CPU,不天然完成网络阻断,也不替代 App Sandbox 或 Network Extension。但它补上了最关键的一块:Agent 启动的工具链在做危险动作之前,可以被一个系统原生、内核参与、动态可编程的策略层拦住。

所以,这篇文章的标题可以大胆写成:

macOS 已经有了原生 AI Agent 沙箱的底座。

但正文必须保持工程严谨:

Apple 官方确认的是 descendants client 这一组能力;“AI Agent 沙箱”是这些能力在 Agent 威胁模型下的自然落点。


依据与参考
Apple 官方网页
  • • Apple Developer Documentation: Endpoint Securityhttps://developer.apple.com/documentation/endpointsecurity
  • • Apple Developer Documentation: Endpoint Security entitlementhttps://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.endpoint-security.client
  • • Apple Developer Documentation: Protecting user data with App Sandboxhttps://developer.apple.com/documentation/security/protecting-user-data-with-app-sandbox
  • • Apple Developer Documentation: System Extensionshttps://developer.apple.com/documentation/systemextensions
  • • Apple Developer Documentation: Network Extensionhttps://developer.apple.com/documentation/networkextension
  • • Apple Developer Documentation: NEFilterDataProviderhttps://developer.apple.com/documentation/networkextension/nefilterdataprovider
  • • WWDC 2022: What's new in Endpoint Securityhttps://developer.apple.com/videos/play/wwdc2022/110345/
  • • Apple Developer Forums: Endpoint Security tag pagehttps://developer.apple.com/forums/tags/endpointsecurity
  • • Apple Developer Forums thread 832204:es_new_descendants_clienttutorial questionhttps://developer.apple.com/forums/thread/832204
Apple SDK 依据
  • ESClient.h:685-719:传统es_new_client需要 Endpoint Security entitlement,并需要 TCC/Full Disk Access;默认 mute set 用于避免 deadlock、hang 和 watchdog timeout。
  • ESClient.h:747-769es_new_descendants_client的声明、macOS 27.0 可用性、后代进程作用域、无需 root、无需 TCC。
  • ESClient.h:841-869es_set_deadline_min_milliseconds仅面向 descendants client,允许设置 deadline floor。
  • ESTypes.h:365-379es_new_client_result_t包含 not entitled、not permitted、not privileged 等错误。
  • ESTypes.h:279-307:macOS 26.x reserved events,以及 macOS 27.0 新增 XPC/bootstrap 相关事件。
  • ESTypes.h:843-856:deadline miss mode 包含 kill、fail closed、fail open。
  • libEndpointSecurity.tbd:8-25:导出_es_new_descendants_client、deadline max/min/miss mode 等新符号。
  • /usr/share/man/man1/sandbox-exec.1:7-23sandbox-exec被 Apple man page 标注为 DEPRECATED,并建议改用 App Sandbox。
  • MacOSX.sdk/usr/include/sandbox.h:7-9sandbox.h:46-49:macOS 27 SDK 中sandbox.h已废弃,sandbox_init标注为No longer supported
  • MacOSX.sdk/usr/share/man/man3/sandbox_init.3:48-55sandbox_init/sandbox_free_error被标注为 DEPRECATED,并建议改用 App Sandbox。
  • MacOSX.sdk/usr/share/man/man3/sandbox_init.3:122-123:内置 profile 在 macOS SDK >= 27.0 下不得使用,进程尝试 opt in 会被杀。
边界说明
  • • Apple 公开文档尚未直接将es_new_descendants_client命名为 AI Agent 沙箱。
  • • Apple Developer Forums 中已有关于es_new_descendants_client用途的讨论;该论坛线索只能作为社区背景,不作为本文核心论据。
  • ES_EVENT_TYPE_RESERVED_5/6的网络语义不能仅凭 reserved 名称确认。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-12 03:17:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/855029.html
  2. 运行时间 : 0.109088s [ 吞吐率:9.17req/s ] 内存消耗:4,726.29kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=25cf2a2b8b094ee58c9b78bf72af9427
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000556s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000884s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000362s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000278s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000557s ]
  6. SELECT * FROM `set` [ RunTime:0.000207s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000553s ]
  8. SELECT * FROM `article` WHERE `id` = 855029 LIMIT 1 [ RunTime:0.000511s ]
  9. UPDATE `article` SET `lasttime` = 1783797433 WHERE `id` = 855029 [ RunTime:0.005284s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000334s ]
  11. SELECT * FROM `article` WHERE `id` < 855029 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000445s ]
  12. SELECT * FROM `article` WHERE `id` > 855029 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000863s ]
  13. SELECT * FROM `article` WHERE `id` < 855029 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007636s ]
  14. SELECT * FROM `article` WHERE `id` < 855029 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003512s ]
  15. SELECT * FROM `article` WHERE `id` < 855029 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004900s ]
0.110745s