AI助手容器服务

一个自托管的Docker容器服务,提供基于Claude Code的网页聊天界面,支持工作流自动化、定时任务和AI工具集成。

  • by NickLewanowicz
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 NickLewanowicz/claude-agent

使用说明

克劳德代理人

一个自托管的Docker容器,为Claude Code提供web UI,支持基于聊天的AI辅助工作流程、Webhook、计划任务和MCP集成。

特性

  • 🐳 Docker化 -使用单个容器在任何地方运行
  • 💬 网络聊天界面 -与Claude聊天的漂亮终端风格UI
  • 📁 持久会话 -所有对话和设置都已保存
  • 🔧 Claude代码集成 -完全访问Claude Code CLI功能
  • 📂 可配置工作区 -挂载任何目录供Claude使用
  • 🔐 OIDC身份验证 -使用OpenID Connect(PocketID、Keycloak等)进行安全访问
  • 🔄 工作流 -由日程表、webhook或两者触发的自动化任务
  • 🔑 API令牌 -安全访问API以实现自动化和集成
  • 🤖 MCP 服务器 -AI工具集成的模型上下文协议支持

快速开始

先决条件

1.克隆和配置

git clone https://github.com/NickLewanowicz/claude-agent.git
cd claude-agent

# Copy the example environment file
cp env.example .env

# Edit .env and add your Anthropic API key
nano .env

2.使用Docker Compose运行

docker-compose up -d

3.访问用户界面

打开 http://localhost:3000 在您的浏览器中。

配置

环境变量

变量 描述 默认值
ANTHROPIC_API_KEY 您的Anthropic API密钥(必需) -
CLAUDE_MODEL 要使用的Claude模型 claude-sonnet-4-20250514
OIDC_ENABLED 启用OIDC身份验证 false
OIDC_ISSUER_URL OIDC提供商URL(例如。, https://id.example.com) -
OIDC_CLIENT_ID OIDC客户端ID -
OIDC_CLIENT_SECRET OIDC客户端机密 -
OIDC_REDIRECT_URI OAuth回调URL http://localhost:4000/auth/callback
FRONTEND_URL 重定向的前端URL http://localhost:5173
SESSION_SECRET 会话Cookie的秘密 (随机)

卷装载

容器使用两个体积:

路径 目的
/data 会话、工作流、令牌和Claude配置的持久存储
/workspace Claude可以访问和修改的工作目录

工作流

工作流是自动化的Claude任务,可以通过以下方式触发:

  • 日程 -按照cron时间表运行(例如,每天上午9点)
  • 网络钩子 -由具有API令牌身份验证的HTTP请求触发
  • 两者 -支持日程表和webhook触发器

创建工作流

  1. 打开Claude Agent用户界面
  2. 点击 工作流 在侧边栏中
  3. 点击 创建工作流
  4. 配置:
    • 名称和说明
    • 提示执行
    • 触发器类型(计划、webhook或两者)
    • Cron表达式(用于计划工作流)

Cron表达式示例

表达式 描述
0 9 * * * 每天上午9:00
*/15 * * * * 每15分钟
0 0 * * 1 每周一午夜
0 0 1 * * 每月的第一天

通过Webhook触发

curl -X POST "https://agent.example.com/webhook/{workflow-id}" \
  -H "Authorization: Bearer clag_your-api-token" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

答复:

{
  "success": true,
  "runId": "abc123",
  "sessionId": "xyz789",
  "message": "Workflow triggered successfully"
}

API令牌

API令牌允许对Claude Agent功能进行编程访问。

创建令牌

  1. 打开Claude Agent用户界面
  2. 点击 设置 在侧边栏中
  3. 去 API令牌 标签
  4. 点击 创建API令牌
  5. 选择所需的范围
  6. 复制令牌(它只显示一次!)

令牌范围

范围 描述
workflows:read 读取工作流及其运行历史记录
workflows:write 创建、更新和删除工作流
workflows:trigger 通过webhook触发工作流
sessions:read 阅读聊天会话
sessions:write 创建和管理聊天会话
resources:read 阅读技能、代理和命令
mcp:access 访问MCP服务器

使用代币

将令牌包含在 Authorization 头球

curl -X POST "https://agent.example.com/webhook/abc123" \
  -H "Authorization: Bearer clag_your-api-token" \
  -H "Content-Type: application/json" \
  -d '{}'

认证

OIDC设置

Claude Agent支持OIDC身份验证以实现安全访问。兼容:

  • 口袋 ID
  • 钥匙锁
  • 身份验证0
  • 任何标准OIDC提供商

PocketID的示例配置:

OIDC_ENABLED=true
OIDC_ISSUER_URL=https://id.example.com
OIDC_CLIENT_ID=your-client-id
OIDC_CLIENT_SECRET=your-client-secret
OIDC_REDIRECT_URI=https://agent.example.com/auth/callback
FRONTEND_URL=https://agent.example.com

MCP服务器(模型上下文协议)

Claude Agent包含一个MCP服务器,该服务器公开了用于管理工作流、会话和资源的工具。这允许AI代理(如Claude Desktop)与您的Claude Agent实例进行交互。

可用工具

工作流管理

  • list_workflows -列出所有工作流
  • get_workflow -获取工作流详细信息
  • create_workflow -创建新工作流
  • update_workflow -更新工作流
  • delete_workflow -删除工作流
  • toggle_workflow -启用/禁用工作流
  • toggle_schedule_trigger -启用/禁用计划触发器
  • toggle_webhook_trigger -启用/禁用webhook触发器
  • run_workflow -立即运行工作流
  • get_workflow_runs -获取跑步历史记录
  • get_cron_presets -获取常用的cron预设

会话管理

  • list_sessions -列出所有聊天会话
  • get_session -获取包含消息的会话
  • create_session -创建新会话

资源

  • list_resources -列出所有技能、代理、命令
  • list_skills -列出可用技能
  • list_agents -列出可用代理
  • list_commands -列出可用命令

执行

  • run_prompt -直接执行Claude提示符

运行MCP服务器

cd backend
bun run src/mcp.ts

或在Claude Desktop中配置(~/.config/claude/mcp.json):

{
  "mcpServers": {
    "claude-agent": {
      "command": "bun",
      "args": ["run", "/path/to/my-agent/backend/src/mcp.ts"],
      "env": {
        "CLAUDE_DATA_DIR": "/path/to/data",
        "ANTHROPIC_API_KEY": "your-api-key"
      }
    }
  }
}

MCP资源

URI 描述
claude-agent://workflows 所有工作流列表
claude-agent://sessions 所有聊天会话列表
claude-agent://resources 所有技能、代理、命令列表

发展

先决条件

设置

# Install dependencies
pnpm install

# Start development servers
pnpm dev

这运行:

  • 后端(Bun)打开 http://localhost:4000
  • 前端(Vite)打开 http://localhost:5173

项目结构

my-agent/
├── backend/           # Bun backend server
│   └── src/
│       ├── index.ts   # Main server entry
│       ├── claude.ts  # Claude Code CLI integration
│       ├── sessions.ts # Session management
│       ├── workflows.ts # Workflow management
│       ├── scheduler.ts # Cron job runner
│       ├── tokens.ts  # API token management
│       ├── mcp.ts     # MCP server
│       └── auth.ts    # OIDC authentication
├── frontend/          # React + Vite frontend
│   └── src/
│       ├── App.tsx    # Main app component
│       ├── store.ts   # Zustand state management
│       └── components/
│           ├── ChatView.tsx
│           ├── Sidebar.tsx
│           ├── WorkflowsPanel.tsx
│           └── SettingsPanel.tsx
├── Dockerfile         # Production container
├── docker-compose.yml # Docker Compose config
└── README.md

建筑

# Build for production
pnpm build

# Build Docker image
docker build -t claude-agent .

运行测试

cd backend
pnpm test

api参考

身份验证端点

方法 路径 描述
得到 /auth/status 检查身份验证状态
得到 /auth/login 启动OIDC登录
得到 /auth/callback OIDC回叫
职位 /auth/logout 注销

会话端点

方法 路径 描述
得到 /api/sessions 列出会话
职位 /api/sessions 创建会话
得到 /api/sessions/:id 获取会话
删除 /api/sessions/:id 删除会话
职位 /api/sessions/:id/chat 发送消息(SSE)

工作流端点

方法 路径 描述
得到 /api/workflows 列出工作流
职位 /api/workflows 创建工作流
得到 /api/workflows/:id 获取工作流
补丁 /api/workflows/:id 更新工作流程
删除 /api/workflows/:id 删除工作流
职位 /api/workflows/:id/toggle 启用切换
职位 /api/workflows/:id/toggle-schedule 切换计划触发器
职位 /api/workflows/:id/toggle-webhook 切换webhook触发器
职位 /api/workflows/:id/regenerate-secret 重新生成webhook密钥
职位 /api/workflows/:id/run 马上跑
得到 /api/workflows/:id/runs 获取跑步历史记录
职位 /api/workflows/validate-cron 验证cron表达式
得到 /api/workflows/presets 获取cron预设
职位 /webhook/:id 触发工作流 (需要API令牌)

令牌端点

方法 路径 描述
得到 /api/tokens 列出令牌
职位 /api/tokens 创建令牌
得到 /api/tokens/:id 获取令牌
补丁 /api/tokens/:id 更新令牌
删除 /api/tokens/:id 删除令牌
得到 /api/tokens/scopes 获取可用范围

资源端点

方法 路径 描述
得到 /api/resources 获取所有资源
得到 /api/resources/skills 列出技能
得到 /api/resources/agents 列出代理
得到 /api/resources/commands 列出命令

建筑

┌─────────────────────────────────────────────────────────────────┐
│                       Docker Container                           │
├─────────────────────────────────────────────────────────────────┤
│  ┌─────────────┐    ┌─────────────────────────────────────┐     │
│  │   React     │───▶│          Bun Server                 │     │
│  │  Frontend   │◀───│    (REST API + SSE + Scheduler)     │     │
│  └─────────────┘    └──────────────┬──────────────────────┘     │
│                                    │                             │
│                     ┌──────────────┼──────────────┐              │
│                     │              │              │              │
│              ┌──────▼──────┐ ┌─────▼─────┐ ┌─────▼─────┐        │
│              │ Claude Code │ │ Scheduler │ │ MCP Server│        │
│              │    CLI      │ │  (Cron)   │ │  (stdio)  │        │
│              └─────────────┘ └───────────┘ └───────────┘        │
├─────────────────────────────────────────────────────────────────┤
│  Volumes:                                                        │
│  /data      - Sessions, workflows, tokens, .claude              │
│  /workspace - Working directory for Claude                      │
└─────────────────────────────────────────────────────────────────┘
         │                                           │
         ▼                                           ▼
  ┌─────────────┐                           ┌─────────────┐
  │  Webhooks   │                           │ MCP Clients │
  │  (External) │                           │ (AI Agents) │
  └─────────────┘                           └─────────────┘

路线图

  • [x] 基本聊天界面
  • [x] 会话管理
  • [x] Claude Code CLI集成
  • [x] OIDC身份验证
  • [x] 统一工作流(日程+webhook)
  • [x] API令牌管理
  • [x] MCP服务器
  • []技能系统(可重复使用的提示/动作)
  • []代理人(专业助理)
  • []电子邮件/通知集成
  • []多型号支持
  • []工作流负载模板
  • []重试策略

许可证

麻省理工学院