核心概念
空间
空间是团队的共享工作区。Themis 中的一切都以空间为作用域:
- API 凭据(GitHub 令牌、Linear 密钥等)
- 功能开关(项目、自动化、技能)
- 智能体设置(模型、温度、身份)
- 对话、任务和自动化
用户通过角色归属于空间:所有者、经理或成员。标记为 default 的空间会在新用户注册时自动将其加入。
对话
主要的交互模型。用户通过 Web UI 与 Themis 对话,智能体通过工具辅助的回答、生成的代码、数据分析或工作流操作进行回复。
对话支持:
- 通过 Turbo Streams 实时 Token 流式传输
- 文件附件和图片分析
- 分叉(分支出去探索不同方向)
- 通过公开链接或特定用户共享
- 讨论评论(共享对话的线程式注释)
收件箱
位于 /inbox 的中央枢纽,汇聚所有活动。每个标签都有始终可见的子筛选器标签:
| 标签 | 子筛选器 |
|---|---|
| 对话 | 我的、共享的、API |
| 任务 | 进行中、待办、已完成 |
| 信号 | 自动、审查、提及、代码 |
| 已保存 | (无子筛选器) |
全文搜索由 PostgreSQL trigram 匹配驱动。
频道
频道将 Themis 连接到外部服务。每个频道按空间配置,拥有独立的凭据:
| 频道 | 功能 |
|---|---|
| GitHub | PR 审查、代码生成、CI 状态、工单跟踪 |
| Linear | 工单管理、Bug 报告、用户故事 |
| Sentry | 错误警报、问题分类 |
| Metabase | 数据查询、仪表盘洞察 |
| Google Drive | 文件搜索、文档访问 |
| Google Calendar | 日程、空闲时间、外出和专注时间 |
| Gmail | 读取、搜索、打标签、归档 |
| Google Analytics | GA4 报表、实时指标、自定义维度 |
| Google Maps | 地理编码、地点、路线、天气 |
| Flight Search | Google Flights 搜索(日期 + 价格) |
| Teams | 聊天机器人、群组消息 |
| Telegram | 聊天机器人、语音消息 |
频道通过 Webhook 接收事件并将其分发到智能体工作流。
双层智能体
Themis 使用双层智能体架构以实现最优速度和能力:
一级(快速) —— 通过 RubyLLM 的 LightweightAgentService。针对简单问题的单轮回复。如果问题需要更深入的推理或工具访问,会自动升级。
二级(完整) —— 配备 MCP 服务器、安全钩子和多轮对话的 Claude Agent SDK。用于代码审查、数据分析和复杂工作流。
升级是无缝的 —— 无论哪个层级处理,用户看到的都是一个连续的对话。
自动化
无需用户交互的定期或事件驱动智能体任务:
- 定时型:基于 cron(例如”每周一上午 9 点”)。使用 Fugit 进行 cron 解析,支持 IANA 时区。
- 事件触发型:响应活动(例如
github.pull_request.opened)。支持前缀匹配和冷却窗口。
结果投递到 Web 收件箱、Telegram 或 Teams —— 可按自动化配置。
技能
丰富智能体能力的可复用领域知识。详见技能优先架构。
- 基于文件(
.claude/skills/)—— 提交到代码库中,由 SDK 自动发现 - 数据库存储(
Skill模型)—— 通过 UI 或对话创建,范围为系统/空间/个人 - 可移植(
lib/skills/)—— 在代码生成期间复制到目标项目
任务
跨频道工作项,统一来自不同服务的活动。单个任务可以聚合一个 GitHub PR、一个 Linear 工单和一个 Sentry 警报(如果它们相关的话)。
TaskKeyResolver 计算任务键,TaskUnifier 合并共享引用的任务 —— 例如,将 GitHub 分支链接到其对应的 Linear 工单。