用途:shell 是 agent 接触操作系统的统一入口,把执行命令、调用 CLI、读写文件、列目录等操作集中到 shell::* 与 shell::fs::* 之下,便于统一实施拒绝列表、超时、输出上限与可选的主机根目录限制。
主要能力:shell::exec 前台执行命令并返回 stdout、stderr、退出码与耗时;shell::exec_bg 后台启动任务并返回 job_id,配合 shell::status、shell::list、shell::kill 查询或终止任务。文件系统侧提供 ls、stat、read、write、mkdir、rm、chmod、mv、grep、sed 等结构化操作。此外还提供 coder::* 代码文件接口,如 coder::info、coder::read-file、coder::search、coder::list-folder、coder::tree 及 create-file、update-file、delete-file、move,用于替代用 exec 编辑文件。
使用方式:exec 与 fs 接口都接受可选 target 字段,可转发到 iii-sandbox 微虚拟机;沙箱转发需额外安装 iii-sandbox worker,安装 shell 不会自动带入。要让 LLM agent 调用 shell::*,需配合 skills worker。
限制:主机上的 shell::exec 不是隔离边界,拒绝列表只是对 argv.join(" ") 的正则拦截,任何解释器都可在运行时构造违规 token 绕过,不可信输入应使用 target 指定 sandbox。shell::fs::* 仅在配置 fs.host_roots 时形成限制,默认为空即不限制,路径须为绝对路径且不跟随符号链接。沙箱后台任务无法硬杀,shell::kill 只改记录,进程仍运行至超时。该 worker 不是包管理器、编辑器或迁移工具,单路径操作无批量或通配形式。