这个项目能做什么

# Iris Iris 是一个以 LLM 为先、与来源无关的消息系统,旨在将来自多个平台(Telegram、SMS、Email、WhatsApp、Instagram 等)的消息统一为一个可查询的 API。它可自托管,采用 MIT 许可证,并使用 Rust 构建。 ## 主要特性 - **统一模型**:将所有消息规范化为一致的 `Message`、`Thread` 和 `Contact` 结构。 - **与来源无关的查询**:无需知道来源即可跨所有来源查询(例如“所有未读会话”)。 - **以 LLM 为先的设计**:针对智能体消费进行优化,支持 MCP、结构化 JSON 和能力通告。 - **代码生成**:CLI、HTTP 和 MCP 接口由单一 API 定义生成,确保一致性。 - **可自托管**:无云依赖;可在任何能运行 Rust 的地方运行。 - **可扩展**:添加新提供者只需实现一个 trait。 ## 快速开始 ```bash cargo build cargo run -- threads cargo run -- messages <thread-id> cargo run -- contacts cargo run -- serve ``` ## 使用 Docker 自托管 已发布的镜像位于 `ghcr.io/techgodhq/iris:<version>`(或 `:latest`)。对于可被互联网访问的部署,请将 `IRIS_API_TOKEN` 设置为高熵密钥;除 `GET /health` 外的所有 HTTP 端点都需要 Bearer token 认证。如果没有 token,服务器会拒绝公共或通配符绑定地址。 示例: ```bash docker run --rm \ --name iris \ --publish 127.0.0.1:9876:9876 \ --volume iris-data:/data \ --env IRIS_ENABLED_PROVIDERS=telegram \ --env IRIS_TELEGRAM_BOT_TOKEN="${IRIS_TELEGRAM_BOT_TOKEN}" \ ghcr.io/techgodhq/iris:latest ``` ## 配置 Iris 支持 TOML 文件、原生环境变量,或两者兼用。环境变量值会覆盖 TOML,TOML 会覆盖默认值。关键变量包括 `IRIS_ENABLED_PROVIDERS`、`IRIS_TELEGRAM_BOT_TOKEN` 以及各种 `IRIS_EMAIL_*` 设置。 支持同一提供者类型的多个实例(例如 `email.ops-codefold`),并具有独立的配置和环境变量命名约定。 ## 架构 Iris 以工作区形式组织,包含以下 crate: - `iris-core`:领域模型和 `MessageProvider` trait(零 I/O 依赖) - `iris-providers`:提供者实现(Telegram、SMS、Email 等) - `iris-server`:Axum HTTP 服务器(REST API) - `iris-cli`:命令行界面(clap) - `iris-mcp`:MCP 服务器接口 - `iris-codegen`:代码生成,用于保持 CLI/HTTP/MCP 同步 ## 添加提供者 1. 在 `iris-providers/src/` 中创建一个模块。 2. 实现 `MessageProvider` trait。 3. 在服务器/CLI 启动时注册它。 ## 开发 ```bash cargo build --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings cargo fmt --all -- --check ``` 预提交钩子通过 lefthook 配置。 ## 许可证 MIT