这个项目能做什么
# 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
评论
0 评分人数达到10人后显示
登录后参与讨论。