LiteFlow LiteFlow
首页
  • v2.16.3 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.16.2 Agent 升级说明
    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
AI Skill
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
首页
  • v2.16.3 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.16.2 Agent 升级说明
    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
AI Skill
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)
  • 🤖 LiteFlow Agent 简介
  • 快速开始

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
    • 🌊 流式输出
  • 🎬 演示项目
  • 🏪 模型配置
  • 📐 结构化输出
  • Jev 智能选择组件

    • Jev 模型与模块介绍
    • 依赖与配置
    • 编写选择组件
    • 置信度与异常处理
    • 客服演示与测试
  • Jev 布尔判断组件

    • Noul 与布尔判断组件
    • 编写布尔组件
  • 会话与记忆

    • 💬 会话标识
    • 🧠 会话存储
    • 🔄 多轮对话
    • 🗂️ 聊天历史
    • 📝 长对话与长期记忆
  • 工作空间与工具

    • 📂 工作区与执行环境
    • 📄 文件工具与产物
    • 🐚 Shell 工具
      • 开启命令工具
      • 本地模式
      • 命令白名单与超时
      • 关闭 Shell
    • 🐳 Docker 沙箱
    • 🔧 Java 业务工具
    • 🔌 MCP 工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
    • 🤝 多 Agent 协作
    • 🙋 工具调用前人工确认
    • 🧭 子代理与计划
    • 🌐 远程 A2A 调用
  • 运行机制与可观测

    • 🔁 迭代次数与超时
    • 📋 执行日志与事件
    • 🪝 中间件扩展
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 执行与访问边界
  • 🔍 故障排查
  • ⬆️ 升级到 2.16.2
  • AI Agent编排
  • 工作空间与工具
铂赛东
2026-09-19
目录

🐚 Shell 工具

命令工具 execute 供模型执行脚本和命令。只做对话或调用 Java/MCP 工具时,可以关闭它。

# 开启命令工具

需要执行命令时,将快速开始组件中的方法改为:

@Override
protected boolean enableShellTool() {
    return true;
}

随后配置本页的本地执行环境,或使用 Docker 沙箱。组件基类默认开启 Shell;快速开始为了只做对话,显式关闭了它。

# 本地模式

在 Java 应用所在环境安装所需的 Python、Node.js 等工具,然后添加:

liteflow.agent.harness.filesystem-backend=GUARDED_LOCAL
liteflow.agent.harness.local.workspace-root=./data/agent-execution

应用名为 agent-demo、会话 ID 为 chat-001 时,命令在以下目录执行:

./data/agent-execution/agent-demo/chat-001/

目录由框架创建。模型可调用 execute 运行命令,例如 python3 scripts/report.py;脚本路径相对于该会话工作区。

文件工具和 Shell 使用同一份业务文件:执行命令前从存储恢复到命令目录,执行后把变更保存回存储。因此,文件工具写出的脚本可以继续用 Shell 执行。本地命令目录是执行副本,备份时要保留会话存储中配置的持久存储。

本地命令使用 Java 进程的系统权限和环境变量。工作目录不限制脚本只能访问这个目录;需要容器隔离时使用 Docker 沙箱。长时间运行的后台服务不适合本地命令工具。

# 命令白名单与超时

内置 execute 使用命令白名单,默认包含 Python、Node.js、Git、常见文件命令等。需要指定允许的命令时配置:

liteflow.agent.harness.shell.whitelist=sh,python3,node,ls,cat,mkdir,pwd
liteflow.agent.harness.shell.timeout=60s

这份列表会替换默认白名单。命令被允许后,仍需在本机或镜像中安装对应程序。复杂操作可以先写入脚本,再执行 python3 scripts/report.py,避免使用被校验器拒绝的管道或链式命令。

模型调用 execute 时,command 为必填;working_directory 为可选的工作区相对目录;timeout 为可选的秒数,只能缩短服务端命令时限。关闭命令工具应覆写 enableShellTool() 返回 false。

# 关闭 Shell

@Override
protected boolean enableShellTool() {
    return false;
}

这个方法同时控制本地和 Docker 的内置命令工具。不要仅设置 harness.shell.mode=DISABLED 而保留组件开关为 true,这会形成配置冲突。

默认白名单包含脚本解释器及常见系统命令,完整列表见配置速查。白名单不限制脚本内部行为,本地模式也不提供容器隔离;隔离执行环境见 Docker 沙箱。

帮助我们改善此文档 (opens new window)
上次更新: 2026/09/20, 11:49:27
📄 文件工具与产物
🐳 Docker 沙箱

← 📄 文件工具与产物 🐳 Docker 沙箱→

Theme by Vdoing | Copyright © 2020-2026 铂赛东 | MIT License
沪ICP备18012955号-2