コアコンセプト

スペース

スペースはチームのための共有ワークスペースです。Themisのすべてはスペースにスコープされています:

  • API認証情報(GitHubトークン、Linearキーなど)
  • 機能トグル(プロジェクト、自動化、スキル)
  • エージェント設定(モデル、Temperature、アイデンティティ)
  • 会話、タスク、自動化

ユーザーはオーナーマネージャー、またはメンバーのロールでスペースに所属します。defaultとしてマークされたスペースには、サインアップ時に新規ユーザーが自動的に追加されます。

会話

主要なインタラクションモデルです。ユーザーはWeb UIを通じてThemisとチャットし、エージェントがツールを使った回答、生成コード、データ分析、ワークフローアクションで応答します。

会話は以下をサポートしています:

  • Turbo Streamsによるリアルタイムトークンストリーミング
  • ファイル添付と画像分析
  • フォーク(別の方向を探索するための分岐)
  • パブリックリンクまたは特定ユーザーへの共有
  • ディスカッションコメント(共有された会話のスレッド型注釈)

受信トレイ

すべてのアクティビティを集約する/inboxの中央ハブです。各タブには常時表示のサブフィルターチップがあります:

タブサブフィルター
チャット自分のもの、共有、API
タスク進行中、未着手、完了
シグナル自動、レビュー、メンション、コード
保存済み(サブフィルターなし)

全文検索はPostgreSQLのトライグラムマッチングで実現されています。

チャネル

チャネルはThemisを外部サービスに接続します。各チャネルはスペースごとに独自の認証情報で設定されます:

チャネル機能
GitHubPRレビュー、コード生成、CIステータス、イシュー追跡
Linearイシュー管理、バグレポート、ユーザーストーリー
Sentryエラーアラート、イシュートリアージ
Metabaseデータクエリ、ダッシュボードインサイト
Google Driveファイル検索、ドキュメントアクセス
Google Calendarイベント、空き時間、不在通知+フォーカスタイム
Gmail読み取り、検索、ラベル付け、アーカイブ
Google AnalyticsGA4レポート、リアルタイム指標、カスタムディメンション
Google Mapsジオコーディング、場所、経路、天気
Flight SearchGoogle Flights検索(日付+価格)
Teamsチャットボット、グループメッセージ
Telegramチャットボット、音声メッセージ

チャネルはwebhookを通じてイベントを受信し、エージェントワークフローにディスパッチします。

2層エージェント

Themisは最適な速度と機能のために2層エージェントアーキテクチャを使用しています:

Tier 1(高速) — RubyLLMを使用したLightweightAgentService。簡単な質問に対するシングルターン応答。質問がより深い推論やツールアクセスを必要とする場合、自動的にエスカレーションします。

Tier 2(フル) — MCPサーバー、セキュリティフック、マルチターン会話を備えたClaude Agent SDK。コードレビュー、データ分析、複雑なワークフローに使用されます。

エスカレーションはシームレスです。どちらのTierが処理しても、ユーザーには単一の会話として表示されます。

自動化

ユーザーの操作なしに実行される定期的またはイベント駆動型のエージェントタスクです:

  • スケジュール:cronベース(例:「毎週月曜日の午前9時」)。IANAタイムゾーンサポート付きのFugitを使用したcron解析。
  • イベントトリガー:アクティビティに応答(例:github.pull_request.opened)。プレフィックスマッチングとクールダウンウィンドウをサポート。

結果はWeb受信トレイ、Telegram、またはTeamsに配信されます。自動化ごとに設定可能です。

スキル

エージェントの能力を豊かにする再利用可能なドメイン知識です。詳細はスキルファーストアーキテクチャを参照してください。

  • ファイルベース.claude/skills/) — リポジトリにチェックインされ、SDKによって自動検出
  • DBバックSkillモデル) — UIまたはチャットで作成、システム/スペース/個人にスコープ
  • ポータブルlib/skills/) — コード生成時にターゲットプロジェクトにコピー

タスク

異なるサービスからのアクティビティを統合するクロスチャネルの作業項目です。単一のタスクに、関連するGitHub PR、Linearイシュー、Sentryアラートを集約できます。

TaskKeyResolverがタスクキーを計算し、TaskUnifierが参照を共有するタスクをマージします。例えば、GitHubブランチをそのLinearイシューにリンクします。