项目简介
Etienne旨在将Anthropic的Claude Code 2.0 Agent转化为一个功能完备的AI助手平台,支持非交互模式运行。它通过一个Node.js/Nest.js后端和React/Vite前端,提供会话管理、长期记忆、预算控制、调度、子Agent、安全防护等多种高级功能。同时,它内嵌了一个Model Context Protocol (MCP) 服务器,用于向AI Agent客户端提供自定义工具。
主要功能点
- 无头Claude Agent: 在非交互模式下运行Claude Code,支持多租户场景下的虚拟协作。
- 上下文与工具管理: 托管和管理资源、定义和渲染Prompt模板,并注册和执行自定义工具。
- 会话与记忆: 提供多会话管理、自动总结,并利用GPT模型实现长期记忆的提取与检索。
- 任务调度: 基于cron表达式自动触发Claude Code执行预定义任务。
- 安全与控制: 包含输入/输出安全防护(Guardrails)、权限控制,以及对Agent运行轮次和成本的预算监控。
- 可观测性: 实时跟踪和记录Agent的工具调用、事件和输出。
- MCP服务器内嵌: 提供符合Model Context Protocol (MCP) 标准的API接口,允许外部LLM客户端调用其托管的自定义工具。
安装步骤
- 克隆仓库:
git clone https://github.com/BulloRosso/etienne.git cd etienne - 配置环境变量:
在 'backend' 目录下创建 '.env' 文件,并根据您的AI提供商(如Anthropic或OpenAI)配置API Key。例如:
# Anthropic API Key (用于直接调用Claude API) ANTHROPIC_API_KEY=sk-ant-api03-...AA # OpenAI 配置 (当aiModel=openai时通过自定义代理使用) # Claude Code 调用我们的代理在端口6060,代理再转发到OpenAI API ANTHROPIC_MODEL=gpt-4o-mini ANTHROPIC_BASE_URL=http://host.docker.internal:6060/api/modelproxy ANTHROPIC_AUTH_TOKEN=sk-ant-api03-...AA # 可与ANTHROPIC_API_KEY相同,或设为OPENAI_API_KEY # OpenAI API 设置 (代理服务调用OpenAI时使用) OPENAI_API_KEY=sk-proj-...MsA OPENAI_BASE_URL=https://api.openai.com/v1 # 记忆管理配置 MEMORY_MANAGEMENT_URL=http://localhost:6060/api/memories MEMORY_DECAY_DAYS=6 WORKSPACE_ROOT=C:/Data/GitHub/claude-multitenant/workspace # 您的项目工作区根目录 # 预算控制配置 COSTS_CURRENCY_UNIT=EUR COSTS_PER_MIO_INPUT_TOKENS=3.0 COSTS_PER_MIO_OUTPUT_TOKENS=15.0 - 安装Claude Code 2.0 Docker容器: 确保名为 'claude-code' 的Docker容器正在运行,其中已安装Python和Claude Code 2.0。仓库中包含Dockerfile(位于 'docs/images/Dockerfile' 附近,但在仓库根目录的 'docs' 文件夹中通常不会放置Dockerfile,可能需要您自行构建或查找正确的Dockerfile位置)可供参考。容器应在您启动Etienne服务时保持运行。
- 启动后端服务:
后端服务将运行在 'http://localhost:6060'。cd backend npm i npm run dev - 启动前端服务:
前端服务将运行在 'http://localhost:5000'。cd frontend npm i npm run dev - 访问应用: 在浏览器中打开 'http://localhost:5000'。
MCP服务器配置(供MCP客户端使用)
Etienne内嵌了一个MCP服务器功能,允许其他符合MCP标准的客户端发现和调用Etienne提供的自定义工具。MCP客户端需要以下信息才能连接到Etienne的MCP服务器:
- 服务器名称 (Server Name): petstore-mcp-server
- 传输协议 (Transport Protocol):
- HTTP/SSE: 推荐使用此方式。
- URL: 'http://localhost:6060/mcp' (适用于支持'mcp-session-id'头的HTTP/SSE流式传输)
- 替代URL: 'http://localhost:6060/sse' (兼容旧版本SSE客户端)
- 认证信息 (Authentication):
- 类型: Bearer Token
- Token: 'test123'
- 可用工具 (Available Tools) 示例:
Etienne当前托管的工具包括:
- 'get_current_week_promotions': 用于获取宠物店本周促销产品信息。
- 描述: 从合法的宠物店库存系统获取本周促销的宠物产品。可以按宠物类别(猫、狗、鸟)和价格范围进行筛选。
- 输入参数:
- 'category' (字符串, 必填): 宠物产品类别,可选值:'cats', 'dogs', 'birds'。
- 'max_price' (整数, 可选): 最高价格(欧元),用于筛选结果。
- 'get_current_week_promotions': 用于获取宠物店本周促销产品信息。
- MCP客户端请求示例(获取工具列表):
MCP客户端可以向 '/mcp' 或 '/sse' 端点发送JSON-RPC请求来获取服务器上所有可用的工具列表。客户端需在 'Authorization' 请求头中包含 'Bearer test123' 进行认证。
客户端也可以直接调用工具,例如:{ "jsonrpc": "2.0", "id": "1", "method": "tools/list", "params": {} }{ "jsonrpc": "2.0", "id": "2", "method": "tools/call", "params": { "name": "get_current_week_promotions", "arguments": { "category": "dogs", "max_price": 50 } } }
基本使用方法
- 项目管理: 在Etienne的Web界面中,您可以选择或创建一个项目。每个项目都拥有独立的工作区和配置。
- 定义策略: 在“策略”区域(通常是项目根目录下的 'CLAUDE.md' 文件),您可以定义AI Agent的角色、行为和任务指令。
- 与Agent交互: 通过聊天界面输入您的Prompt。Agent将根据您的指令、定义的策略和可用的工具进行思考和操作。
- 文件与代码操作: Agent可以读取、写入和编辑项目工作区内的文件。您可以在“文件系统”界面查看和管理这些文件,甚至可以实时预览HTML文件。
- 高级功能:
- 记忆: Agent会自动提取对话中的事实并存储为长期记忆,以便在后续会话中参考。
- 调度: 在“调度”功能中设置定时任务,让Agent在指定时间自动执行某些Prompt。
- 预算监控: 跟踪Agent运行的成本。
- Guardrails: 配置输入和输出安全防护,检测和处理敏感信息或不当内容。
信息
分类
AI与计算