すぐに分かる概要
Zeeren はエージェント型の海外オペレーション・プラットフォームです。中心となる概念は Work — リソースツリーを保持し、エージェントノードを実行し、スケジュール、MiniApp、そしてデータアセットを所有する、永続的で共同作業可能なコンテキストです。エージェントが読み書きしたり、Work としてスケジュール投入したりできる、長寿命のプロジェクト用コンテナだと考えてください。
Zeeren の上に構築する場合、把握しておくとよい最近の変更が3つあります。
1. 統一 MiniApp 提供:14回ではなく1回の呼び出し
従来のフロー(pre-2026-04)では、MiniApp をスキャフォールドするために、14 個の個別な API 呼び出しを連鎖させる必要がありました。レコード作成、リソースツリー作成、Work のリンク、マイグレーション適用、開発コンテナの起動などです。途中で部分的に失敗すると、不整合な状態が残ってしまいました。
新しいエンドポイント POST /api/v1/miniapps/provision(MINIAPP_UNIFIED_PROVISION=true によって有効化)は、トランザクション全体をラップします。ボディは1つ、往復は1回だけ:
{
"slug": "project-tracker",
"name": "Project Tracker",
"work_id": 5821,
"stack": {
"frontend": "react",
"backend": "python-fastapi",
"runtime": "docker",
},
"data_mode": "tenant_db",
"schema": {
"tables": [
{
"name": "projects",
"columns": [
{ "name": "name", "type": "text", "nullable": false },
{ "name": "status", "type": "text", "default": "'open'" },
{ "name": "owner", "type": "text"}
]
}
]
},
"scope": "tenant",
"visibility": "private"
}
レスポンスには、開発コンテナの host_port、稼働中の preview_url、そしてマテリアライズされた workdir のパスが返ってきます。つまり、すぐにコード生成を開始するために必要なものがすべて揃っています。
知っておくとよい注意点がいくつかあります:
-
SLUG_CONFLICT(409):-Nを付けて、1回だけ再試行してください。プラットフォームはこれを自動では行いません。 -
provision_failed(500): トランザクションはきれいにロールバックされました。同じボディでの再試行は安全です。 -
WORK_ALREADY_AUTHORING(409): 再試行しないでください。すでにその Work には MiniApp があります。再開する場所を見つけるために/miniapps/{id}/statusを呼び出してください。 - プラットフォームは
id、created_at、updated_atを自動で追加します。宣言しないでください。宣言すると 422 が返ります。
従来の 14 アクションのための操作面は、2026年4月より前に provision された Work でも引き続き存在しますが、新しい Work は統一エンドポイントを使うべきです。
2. マルチトリガー対応の WorkSchedules
Zeeren におけるスケジューリングは WorkSchedule レコードで扱います。便利なのは trigger_type の選択肢の幅で、cron だけではありません:
| トリガー種別 | いつ使うか |
|---|---|
CRON |
固定されたカレンダー周期:「平日の9時に毎回」 |
INTERVAL |
一定間隔で繰り返し:「5分ごと」 |
WEBHOOK |
外部システムが生成されたエンドポイントへ POST する |
EVENT |
内部プラットフォームのイベント。例:log.error
|
CHAT |
ユーザーが特定のプレフィックス付きで Work に DM したとき |
MQ |
Kafka/メッセージキューのトピック・サブスクライバー |
execution_mode フィールドは、各トリガー発火で新しい Work を開くか(NEW_WORK)、既存の Work にノードを追記するか(APPEND_NODE)を制御します。後者の APPEND_NODE は、そのスケジュールの出力を、それを所有する Work と同じ会話コンテキストに保ちたいときの正しいデフォルトです。
最小限の CRON ボディ:
{
"owner_scope": "USER",
"owner_work_id": 653,
"name": "Daily standup digest",
"trigger_type": "CRON",
"trigger_config": { "cron": "0 9 * * 1-5" },
"execution_mode": "APPEND_NODE",
"payload_template": "Generate today's standup digest.",
"is_active": true
}
WEBHOOK トリガーの場合、201レスポンスには、後から取得できない hmac_secret_plaintext が含まれています。作成時に保存してください。
3. スキル層:構成可能・宣言的・スキルカード駆動
Work + MiniApp + Schedule をまとめているのが スキル層 です。スキルとは宣言的な単位(SKILL.md + 任意のスクリプト)で、入力、出力、見積りコスト、そしてエージェントが従う手順を定義します。スキルは合成できます。たとえば zeeren-overseas-retention のようなメタスキルは zeeren-goal-decomposer を呼び、そこからコンテンツ、懸念トリアージ、帰属(アトリビューション)のスキルへと扇状に分岐します。
開発者の観点では、スキルカードは次のように見えます:
inputs:
- name: brief
type: string
required: true
outputs:
- name: channel_drafts
output_type: draft_action
action_type: " publish_<channel>_post"
estimated_cost_usd: 0.12
estimated_duration_seconds: 45
スキルは、WORK_DOMAIN エージェント(柔軟な推論、ツールアクセス)または決定論的な SKILL ランナー(固定手順、LLM 呼び出しはスキル自身のプロンプト以外なし)を対象にします。スケジュールはどちらも呼び出せます。
スキルモデルにより、マイクロサービスを組み合わせて配線することなく、信頼できる自動ワークフローを構築しやすくなります。プラットフォームがルーティング、リトライ、そして出力の永続化を、Work のリソースツリーへ処理します。
始めるには
稼働する3つの部品 — Works、MiniApps、Schedules — これだけでほとんどの社内向けツールを構築できます。まずは統合プロビジョニング・エンドポイントでアプリの雛形を作成し、APPEND_NODE スケジュールを使って同じ Work コンテキスト内で反復タスクを実行し、スキルカードを使ってスケジュールが呼び出すエージェント手順を定義します。
古い Work を保守している場合、従来の14アクションの表面も引き続き利用できますが、新規開発はデフォルトで統合APIを使うべきです。




