本示例演示在 Docker 容器工作区中执行 skill_run,并通过 host://、workspace://、skill:// 等输入方案演示 stage_inputs 与挂载目录的配合。
create_container_workspace_runtime:技能目录与可选inputs_host以只读 bind mount 注入容器agent/tools.py中build_container_skill_run_payload生成固定形态的skill_run负载供模型调用- 与宿主机
/tmp/skillrun-inputs等路径联动(run_agent.py会准备示例sales.csv)
- 根节点:
LlmAgent,挂载SkillToolSet(容器运行时 + 技能仓库) - 无子 Agent
agent/tools.py:_create_workspace_runtime配置Binds(技能目录、inputs_host),create_skill_tool_set创建仓库与SkillToolSetrun_agent.py:组装含inputs数组的 JSON 提示词,驱动单次skill_run演示run_agent.py末尾清理/tmp/skillrun-inputs等临时文件
- Python 3.12;已安装 Docker;仓库根目录
pip install -e . - 配置
TRPC_AGENT_API_KEY、TRPC_AGENT_BASE_URL、TRPC_AGENT_MODEL_NAME - 可选:
SKILLS_ROOT、SKILLS_INPUTS_HOST(默认/tmp/skillrun-inputs)
cd examples/skills_with_container
python3 run_agent.py[START] skills_with_container
...
Docker client initialized successfully
Container bind mounts enabled: [... 'skills:...:ro', '/tmp/skillrun-inputs:/opt/trpc-agent/inputs:ro']
...
🔧 [Invoke Tool:: skill_run({... 'inputs': [
'host:///tmp/skillrun-inputs/sales.csv',
'workspace://skills/python-math/SKILL.md',
'skill://python-math/scripts/fib.py',
], ...})
📊 [Tool Result: {
'stdout': '', 'stderr': '', 'exit_code': 0,
'output_files': [
{'name': 'out/fib.txt', 'content': '0\n1\n1\n2\n3\n5\n8\n13\n21\n34\n', ...},
{'name': 'out/staged_inputs_tree.txt', 'content':
'work/inputs:\nsales.csv\n---\nwork/staged_inputs:\nfib.py\npython-math_skill.md\n', ...},
],
...
}]
...符合本示例测试要求:容器成功启动并完成一次 skill_run 调用链;host:// / workspace:// / skill:// 三种 input scheme 都成功落入工作区,输出文件 out/fib.txt 和 out/staged_inputs_tree.txt 正常产出,进程以 exit_code=0 结束。
- 需要在隔离容器内执行技能、并显式控制宿主机数据注入路径时参考本示例
- 调试
workspace://时应确保源文件已存在于当前 workspace,再复制或链接到目标路径