SlackでCentaurを使用してチームAIエージェントを実行する

開発者たちはClaude Code、Codex、AmpなどのCLIエージェントを急速に採用しています。モジュールのリファクタリング、テストの実行、ログ内のバグ発見などを依頼します。しかし、この作業の結果は通常、特定のエンジニアのターミナル内に留まります。ビルド失敗に関する質問がチャットで出た場合、誰かがコンソールに移動してニューラルネットワークに手動でデータを入力する必要があります。
ベンチャーキャピタルのParadigmはCentaurをオープンソースとして公開しました。これは、ローカルの自律型エージェントをSlackやTeamsで直接利用可能な共有チームアシスタントに変えるプラットフォームです。
Centaurが必要な理由
チーム全体にAIエージェントをデプロイする主な課題はセキュリティです。金曜日の夜にインターンを本番環境に入れることよりも、LLMに本番キーが含まれる環境への直接アクセスを許可する方が危険です。Centaurは分離されたサンドボックスによってこの問題を解決します。
プラットフォームは独自のインフラにデプロイします。チームメンバーがSlackスレッドでタスクと一緒に@centaurにメンションすると、システムは分離されたコンテキストを作成して動作を開始します。
# Пример взаимодействия в Slack
@centaur можешь разобраться, почему падают тесты биллинга?
その後、Centaurはタスク用に別のコンテナを割り当て、その中でエージェントを実行し、コードとツールへのアクセス権を付与して、中間結果と最終結果をスレッドに返します。
セキュリティとアーキテクチャ
Paradigmのエンジニアたちは自律的なコード実行のための安全な境界を設計しました。システムはいくつかのコンポーネントで構成されています:
- Rustコントロールプレーン — Postgres経由でキュー、会話状態、認証、ワークフロー実行を処理します。
- Kubernetesサンドボックス — 各会話でコンテナベースの隔離環境が起動します。Git、Python、Node.js、Bun、基本的なCLIユーティリティがプリインストールされています。
- iron-proxyネットワークプロキシ — シークレットの管理を処理します。
ここで最も興味深い部分は、リアルタイムの認証情報置換です。デフォルトでは、エージェントを含むポッドはNetworkPolicyでブロックされています。エージェントは内部サービスから実際のAPIキーやトークンを一切受け取らず、代わりに偽のプレースホルダ文字列が環境に含まれています。
エージェントがサードパーティAPIにHTTPリクエストを送信すると、トラフィックはプロキシレイヤーを通過します。プロキシは宛先ドメインをチェックし、対応するヘッダーを 찾아、1Passwordから実際のキーを外部ネットワークにパケットを送信する直前に置換します。モデルが侵害されたりや、すべての env を含む出力を生成したりしても、実際のシークレットは漏れません。
Slack / API
│
▼
Centaur API (Rust + Postgres)
│
▼
Kubernetes Sandbox (Agent + Workspace + Shell)
│
▼
iron-proxy (Проверка доменов и инъекция реальных секретов)
│
▼
Внешний интернет / Внутренние сервисы
エージェントの機能を拡張する方法
Centaurには2つの拡張フォーマットがあります:ツールと長時間実行ワークフローです。
ツール
ツールは通常のPythonパッケージとしてパッケージ化されます。会社の内部API、データベース、CLIユーティリティをラップできます。
コンテナが起動すると、プラットフォームはこれらのスクリプトをコマンドラインラッパーとしてマウントします。エージェントは起動時に centaur-tools list コマンドでそれらを検出し、 --help から引数の指示を読み取ります。
ツール構造は馴染み深いものに見えます:
tools/my_tool/
├── __init__.py
├── client.py
├── cli.py
├── .env.example
└── pyproject.toml
ワークフロー
タスクが2分以上かかる、外部イベントを待つ必要がある、またはサービスの再起動を伴う場合は、ワークフローを使用します。これらは永続的な実行ステップを持つPython関数です。
WORKFLOW_NAME = "daily_digest"
async def handler(inp, ctx):
# Данные сохранятся, даже если сервис перезагрузится во время выполнения
data = await ctx.step("collect", lambda: collect_digest_data(inp))
summary = await ctx.run_agent("summarize", text=f"Сделай краткую выжимку: {data}")
return {"summary": summary}
このアプローチは、エージェントが長いテストスイートを実行する必要がある、外部システムからの応答を待つ必要がある、または複雑なタスクを独立したサブタスクのチェーンに分解する必要がある場合に活躍します。
Centaurに委任できるもの
プロジェクトのREADMEで、作者たちはシステムが当初設計されたいくつかのユースケースを強調しています:
- CI/CDパイプラインの障害調査。
- デイリーダイジェストとオンコールレポートの生成。
- カスタムプラグインで社内ナレッジベースの答えをすぐに見つける。
- Slackの長いスレッドのコンテキスト分析と要約。
- エージェントを分離されたテスト環境に接続してコードデバッグ。
デプロイメントと起動
プロジェクトに触れるためだけに本格的な重いKubernetesクラスタを立ち上げる必要はありません。ローカル開発や小型Mac Mini / VPSへのデプロイメントには、轻量の k3s で十分です。
プロジェクト管理は just ユーティリティに紐付いています。起動プロセスは数ステップで完了します:
# Клонируем репозиторий
git clone https://github.com/paradigmxyz/centaur
cd centaur
# Устанавливаем раннер команд
brew install just
# Настраиваем переменные для Slack и 1Password в bash-сессии
export OP_SERVICE_ACCOUNT_TOKEN=...
export SLACK_BOT_TOKEN=...
export SLACK_SIGNING_SECRET=...
# Создаём секреты в локальном K8s и запускаем стек
just bootstrap-secrets
just up
ビルドが完了すると、ボットはSlackまたはREST API経由でコマンドを受け取り始めます。
まとめ
Paradigmは、適切なセキュリティフォーカスを持つ洗練されたツールを提供しました。別の分離されたWebインターフェースを作成するのではなく、開発者は既存のチームチャットとの統合と分離されたサンドボックスでのコード実行に焦点を当てました。
チームで既にコンソールAIエージェントを積極的に使用している場合、従業員間でその機能を安全に共有する方法を探しているなら、Centaurはぜひ試す価値があります。このプロジェクトはオープンライセンスで公開されており、Rustベースのコントロールプレーンはリソース使用量の点で好印象を与えます。
関連プロジェクト