Files
Arch1Panel/apps/craft-agents

Craft Agents

Craft Agents 是一个强大的 AI Agent 工作空间,支持多种 LLM 提供商和 MCP 集成。

功能特点

  • 多 LLM 提供商支持:支持 Anthropic、Google AI Studio、ChatGPT Plus、GitHub Copilot 等多种 AI 提供商
  • MCP 集成:支持连接 MCP 服务器、REST API 和本地文件系统
  • 多会话管理:具有收件箱/归档功能,支持会话标记和状态工作流
  • 权限模式:三级权限系统(探索、询问编辑、自动),可自定义规则
  • 动态状态系统:可自定义会话工作流状态(待办、进行中、完成等)
  • 自动化:支持事件驱动的自动化,可基于标签变化、计划任务、工具使用等触发
  • 无头服务器模式:可作为远程服务器运行,桌面应用作为瘦客户端连接
  • Web UI:内置 Web 界面,可通过浏览器访问和管理

使用说明

默认端口

  • Web 界面/RPC 端口: 9100

配置说明

必需参数

  • 服务器令牌 (CRAFT_SERVER_TOKEN):用于客户端认证的 Bearer 令牌,系统会自动生成格式为 Craft-Agents-<随机复杂密码> 的安全令牌,您也可以自定义

可选参数

  • Web 端口 (PANEL_APP_PORT_HTTP)Web界面访问端口默认为 9100

安全说明

⚠️ 重要提示:本应用默认使用 --allow-insecure-bind 参数启动,允许在内网环境下使用非加密的 ws:// 协议。这适用于以下场景:

  • 内网环境:应用运行在受信任的内网环境中
  • 反向代理:通过 Nginx/Caddy 等反向代理处理 TLS
  • 公网直接暴露:不推荐直接暴露到公网

生产环境建议

  • 使用反向代理(如 Nginx、Caddy处理 TLS 加密
  • 或在容器内配置 TLS 证书(设置环境变量 CRAFT_RPC_TLS_CERTCRAFT_RPC_TLS_KEY),并移除 --allow-insecure-bind 参数

数据存储应用数据存储在Docker命名卷中由Docker自动管理权限无需手动配置。

连接方式

通过 Web UI 访问

部署后,通过浏览器访问 http://<服务器IP>:9100,使用设置的服务器令牌登录。

通过桌面应用连接

在 Craft Agents 桌面应用中,配置远程工作空间:

  • URL: ws://<服务器IP>:9100wss://<服务器IP>:9100(启用 TLS 时)
  • Token: 部署时设置的服务器令牌

数据目录

应用数据存储在Docker命名卷 craft-agents-data 中,映射到容器内的 /home/craftagents/.craft-agent 目录,包括:

  • 配置文件
  • 会话数据
  • 工作空间设置
  • 技能和源配置

数据管理

  • 数据卷由Docker自动管理无需手动设置权限
  • 数据会持久化保存,即使容器删除也不会丢失
  • 可以通过 docker volume inspect craft-agents-data 查看数据位置

安全访问方式

根据官方文档,推荐以下几种安全访问方式:

方式1Tailscale推荐

Tailscale 创建设备间的私有网格网络,无需端口转发、证书或防火墙规则。

优势

  • 无需配置TLS证书
  • 端到端加密
  • 服务器只能从您的Tailscale网络访问

配置方法

environment:
  - CRAFT_RPC_HOST=100.x.y.z  # Tailscale IP

方式2反向代理nginx, Caddy

标准的生产部署方式反向代理处理TLS终止和访问控制。

Caddy 示例自动HTTPS

craft.example.com {
    reverse_proxy localhost:9100
}

Nginx 示例

server {
    listen 443 ssl;
    server_name craft.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:9100;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

使用反向代理时,应用绑定到 localhost

environment:
  - CRAFT_RPC_HOST=127.0.0.1

方式3Cloudflare Tunnel

无需开放端口或管理证书通过HTTPS暴露服务。

快速隧道即时HTTPS URL

cloudflared tunnel --url http://localhost:9100

会生成一个 https://<random>.trycloudflare.com URL。

永久自定义域名

# 一次性设置
cloudflared tunnel login
cloudflared tunnel create craft-agents
cloudflared tunnel route dns craft-agents agents.yourdomain.com

# 运行隧道
cloudflared tunnel run --url http://localhost:9100 craft-agents

方式4SSH隧道

快速临时访问,无需任何设置:

# 在客户端转发本地端口9100到远程服务器
ssh -L 9100:localhost:9100 user@your-server

然后从桌面应用或浏览器连接到 ws://localhost:9100

方式5直接配置TLS证书

如需直接在应用中启用TLS需要

  1. 生成证书(参考官方文档):

    # 使用官方脚本生成开发证书
    ./scripts/generate-dev-cert.sh
    
  2. 修改 docker-compose.yml

    volumes:
      - craft-agents-data:/home/craftagents/.craft-agent
      - ./certs:/certs:ro  # 挂载证书目录
    
    environment:
      - CRAFT_SERVER_TOKEN=${CRAFT_SERVER_TOKEN}
      - CRAFT_RPC_HOST=0.0.0.0
      - CRAFT_RPC_TLS_CERT=/certs/cert.pem
      - CRAFT_RPC_TLS_KEY=/certs/key.pem
    
  3. 移除 --allow-insecure-bind 参数

访问方式

  • 启用TLS后

    • Web UI: https://192.168.123.201:9100
    • 桌面客户端: wss://192.168.123.201:9100
  • 不启用TLS仅内网测试

    • Web UI: http://192.168.123.201:9100
    • 桌面客户端: 可能无法连接浏览器API限制

推荐顺序

  1. Tailscale最简单安全
  2. 反向代理(标准生产方案)
  3. Cloudflare Tunnel无需端口转发
  4. SSH隧道临时访问
  5. 直接TLS配置不推荐

支持的 LLM 提供商

直接连接

  • AnthropicAPI 密钥或 Claude Max/Pro OAuth
  • Google AI StudioAPI 密钥
  • ChatGPT Plus / ProCodex OAuth
  • GitHub CopilotOAuth设备代码

第三方提供商

通过自定义端点支持:

  • OpenRouter
  • Vercel AI Gateway
  • Ollama本地模型
  • 其他 OpenAI 兼容端点

相关链接

许可证

Apache License 2.0