项目简介

Eon (时值永恒) 是一个强大的内部智能助手,旨在整合企业内部散落在Slack、GitHub、Linear等平台上的信息,帮助团队快速获取答案、做出决策。它通过部署Model Context Protocol (MCP) 服务器,以标准化的方式向大语言模型 (LLM) 客户端提供结构化的上下文信息和可调用的功能。Eon作为核心代理,协调这些MCP服务,并与LLM交互,最终在Slack等用户界面提供智能响应。

主要功能点

  • 信息聚合与问答: 汇总Slack对话、GitHub代码提交、Linear任务等信息,支持在Slack中直接提问并获得即时回答。
  • GitHub集成: 智能分析并总结GitHub拉取请求 (Pull Requests)、问题 (Issues) 和项目活动,帮助团队理解技术变更。
  • Slack历史查询: 支持查询公司Slack的历史对话和频道信息,而不仅仅是安装后的新消息,实现全面的内部知识回溯。
  • 可扩展性: 架构灵活,未来可轻松集成文档、Salesforce等更多企业数据源。
  • 自定义与配置: 允许自定义MCP服务器的配置(通过'mcp_config.json')和LLM交互的Prompt模板(通过Jinja2模板),以适应不同的业务需求。

安装步骤

  1. 环境准备: 确保您的系统已安装'git'和'Docker'。
  2. 克隆仓库: 打开终端,执行以下命令克隆Eon仓库并进入项目目录。
    git clone [email protected]:timescale/tiger-eon.git
    cd tiger-eon
  3. 交互式设置 (推荐): 运行提供的设置脚本,它将引导您完成所有必要的API密钥和Slack应用配置。
    ./setup-tiger-eon.sh
  4. 手动设置 (可选): 如果您偏好手动配置,请先复制'.env.sample'文件并重命名为'.env',然后按照以下步骤配置各项API密钥:
    • Anthropic API Key: 访问Anthropic控制台,创建并复制您的API密钥,将其填入'.env'文件的'ANTHROPIC_API_KEY'字段。
    • GitHub Token: 访问GitHub设置,创建一个具有'repo,read:org'权限的个人访问令牌,将其复制到'.env'文件的'GITHUB_TOKEN'字段。同时,将您的GitHub组织名称(例如'timescale')设置到'GITHUB_ORG'字段。
    • Slack Ingest/MCP 配置:
      1. 访问Slack API网站创建新应用,选择“From a manifest”并选择您的工作区。
      2. 粘贴本项目提供的'https://raw.githubusercontent.com/timescale/tiger-slack/refs/heads/main/slack-app-manifest.json'到JSON输入框中,根据需要修改应用名称。
      3. 生成应用级别令牌,授予'connections:write'权限,将其复制到'.env'文件的'SLACK_INGEST_APP_TOKEN'字段。
      4. 安装应用到工作区,并复制“Bot User OAuth Token”(以'xoxb-'开头)到'.env'文件的'SLACK_INGEST_BOT_TOKEN'字段。
    • Slack Agent 配置:
      1. 再次重复上述Slack应用创建流程,但这次使用'https://raw.githubusercontent.com/timescale/tiger-agents-for-work/refs/heads/main/slack-manifest.json'作为清单文件。
      2. 生成应用级别令牌,将其复制到'.env'文件的'SLACK_AGENT_APP_TOKEN'字段。
      3. 安装应用到工作区,并复制“Bot User OAuth Token”到'.env'文件的'SLACK_AGENT_BOT_TOKEN'字段。
  5. 启动服务: 完成配置后,您可以通过以下命令启动Eon服务:
    • 启动配置文件 ('mcp_config.json') 中指定的MCP服务:
      ./start.sh
    • 启动所有服务 (包括Eon Agent和所有依赖的MCP服务器):
      docker compose up -d --build

服务器配置

Eon系统内部包含多个MCP服务器实例,它们分别负责与不同的企业数据源(如GitHub、Slack)交互,并提供标准化的上下文和工具。MCP客户端(例如您自己开发或使用的LLM客户端)需要配置如何连接这些MCP服务器。以下是典型的MCP客户端配置示例,用于连接Eon系统提供的MCP服务。这些信息通常以JSON格式存储在MCP客户端的配置文件中:

  • GitHub MCP 服务器配置示例:

    {
        "server_name": "github_mcp_server",
        "command": "python",
        "args": ["-m", "tiger_gh_mcp_server.main"],
        "description": "提供GitHub仓库上下文信息和工具,例如总结Pull Requests、查询Issue。",
        "transport_protocol": "stdio"
    }

    说明:'command'和'args'字段指定了启动GitHub MCP服务器的程序和参数。MCP客户端可以根据这些信息在需要时启动并与之通信。

  • Slack MCP 服务器配置示例:

    {
        "server_name": "slack_mcp_server",
        "command": "python",
        "args": ["-m", "tiger_slack.main"],
        "description": "提供Slack对话历史和实时事件上下文,例如查询历史消息、总结频道内容。",
        "transport_protocol": "stdio"
    }

    说明:'command'和'args'字段指定了启动Slack MCP服务器的程序和参数。这些信息对于MCP客户端通过标准输入/输出(stdio)与服务器建立连接至关重要。

请注意,上述配置信息是MCP客户端与Eon系统中的MCP服务器通信时所需的示例。实际的'command'和'args'可能根据Eon内部的'docker-compose.yml'文件或各个MCP服务器项目的具体实现有所不同。

基本使用方法

一旦Eon服务成功启动并与您的Slack工作区连接,您便可以在Slack的任意频道或私聊中通过@提及Eon来提问。Eon会根据集成的Slack和GitHub数据,通过底层MCP服务器提供上下文,并由LLM生成即时回答。

例如,您可以尝试以下问题:

  • '@eon What did we ship last week?' (我们上周发布了什么?)
  • '@eon What's blocking the release?' (是什么阻碍了发布?)
  • '@eon Summarize the latest GitHub pull requests.' (总结最新的GitHub拉取请求。)

Eon将即时响应您的查询,提供集成的企业信息洞察。

信息

分类

生产力应用