HomeAgents 代理Agent Workspace

Agent Workspace

安全隔离的 AI 代理执行环境

概述

Agent Workspace 是每个 Agent 任务的隔离执行环境。 它提供了一个安全的沙箱,让 AI 代理可以读写文件、执行代码、运行命令, 而不会影响到系统的其他部分。

隔离环境

每个任务独立的工作空间

安全边界

限制访问敏感系统资源

持久存储

文件可以跨会话保留

目录结构

默认工作空间

~/.clawdbot/workspace/
├── default/              # 默认工作空间
│   ├── files/           # 用户文件
│   ├── temp/            # 临时文件
│   └── output/          # 输出结果
├── task-abc123/         # 任务特定工作空间
│   ├── files/
│   ├── code/
│   └── logs/
└── shared/              # 共享资源
    ├── templates/
    └── data/

任务工作空间

每个 Agent 任务可以有自己的独立工作空间:

# 创建新的工作空间
clawdbot workspace create my-project

# 使用特定工作空间启动任务
clawdbot agent --workspace my-project "分析这个项目"

查看工作空间

# 列出所有工作空间
clawdbot workspace list

# 查看工作空间内容
clawdbot workspace show my-project

# 查看磁盘使用
clawdbot workspace usage

隔离机制

文件系统隔离

  • Agent 默认只能访问工作空间目录
  • 需要显式授权才能访问其他目录
  • 系统目录(/etc, /usr 等)默认禁止访问

网络隔离

workspace:
  network:
    # 允许的域名
    allowed_hosts:
      - "api.github.com"
      - "*.googleapis.com"

    # 禁止的端口
    blocked_ports:
      - 22
      - 3306

进程隔离

  • 使用容器或沙箱运行命令
  • 限制 CPU 和内存使用
  • 设置执行超时

权限边界

操作默认权限可配置
读取工作空间文件✅ 允许-
写入工作空间文件✅ 允许-
读取用户目录⚠️ 需确认
执行 shell 命令⚠️ 需确认
网络请求⚠️ 受限
安装软件❌ 禁止

文件访问

工作空间内操作

# Agent 可以自由操作工作空间内的文件
workspace/
└── my-task/
    ├── input.txt      # ✅ 可读写
    ├── output.json    # ✅ 可读写
    └── temp/          # ✅ 可读写

授权外部访问

# 配置允许访问的外部目录
workspace:
  external_access:
    read:
      - "~/documents"
      - "~/projects"
    write:
      - "~/projects/output"

临时授权

# 在对话中临时授权
/workspace allow-read ~/downloads

# 或在启动时指定
clawdbot agent --allow-path ~/downloads "处理下载的文件"

文件导入导出

# 导入文件到工作空间
clawdbot workspace import ~/documents/report.pdf

# 导出文件
clawdbot workspace export output.json ~/desktop/

# 或在对话中
/workspace import ~/photos/vacation.jpg
/workspace export result.pdf

代码执行

支持的运行时

  • Python - 默认支持
  • Node.js - 默认支持
  • Shell - bash/zsh
  • 其他 - 可配置添加

执行配置

workspace:
  execution:
    # Python 配置
    python:
      version: "3.11"
      packages:
        - pandas
        - numpy
        - requests

    # Node.js 配置
    node:
      version: "20"
      packages:
        - axios
        - lodash

    # Shell 配置
    shell:
      default: bash
      allowed_commands:
        - ls
        - cat
        - grep
        - find

安全限制

workspace:
  execution:
    # 超时设置
    timeout: 300  # 5 分钟

    # 资源限制
    limits:
      memory: "1GB"
      cpu: 2
      disk: "5GB"

    # 禁止的操作
    blocked:
      - network_listen
      - subprocess_shell
      - file_system_root

配置选项

完整配置示例

# ~/.clawdbot/config.yaml

workspace:
  # 默认工作空间路径
  base_path: "~/.clawdbot/workspace"

  # 自动清理
  auto_cleanup:
    enabled: true
    max_age: "7d"        # 7 天后清理
    max_size: "10GB"     # 超过 10GB 时清理

  # 持久化设置
  persistence:
    enabled: true
    compress: true       # 压缩存储

  # 隔离级别
  isolation: medium  # low, medium, high

  # 默认权限
  default_permissions:
    read_external: false
    write_external: false
    execute_shell: true
    network_access: true

隔离级别说明

级别说明适用场景
low最小限制,可访问用户目录信任的本地任务
medium平衡安全和功能日常使用(默认)
high严格隔离,容器运行不信任的代码

管理操作

创建和删除

# 创建工作空间
clawdbot workspace create project-analysis

# 从模板创建
clawdbot workspace create --template python-data my-analysis

# 删除工作空间
clawdbot workspace delete project-analysis

# 清理临时文件
clawdbot workspace clean

备份和恢复

# 备份工作空间
clawdbot workspace backup project-analysis

# 恢复工作空间
clawdbot workspace restore project-analysis-backup.tar.gz

# 克隆工作空间
clawdbot workspace clone project-analysis project-analysis-v2

查看使用情况

# 磁盘使用
clawdbot workspace usage

# 输出示例:
# Workspace Usage:
# ├── default: 234 MB
# ├── project-analysis: 1.2 GB
# ├── temp: 56 MB
# └── Total: 1.5 GB / 10 GB

共享工作空间

# 导出工作空间
clawdbot workspace export project-analysis --output project.zip

# 导入工作空间
clawdbot workspace import project.zip --name imported-project