チャットからタスクを任せる
LINE、Telegram、Discord、Slack、dashboard の WebChat の会話で /交辦 @AIスタッフ 内容(/assign、全角の /交辦 も可)と送ると、gateway があなたの代わりにその AI スタッフの目標タスクを作成します。進捗と結果は同じ会話に届きます。v1.76.0 から。
@名前 内容 でスタッフを呼ぶのはこれまでどおり通常の会話です(@ で AI スタッフを呼び出す)。タスクを作るのはこのコマンドだけです。
| 送る内容 | 結果 |
|---|---|
/交辦 @業務專員 整理報價單 |
そのスタッフの目標タスクを作成し、返信にタスク番号が入ります。 |
/交辦 @業務專員 整理報價單 || 含三家比價 || 時限:24h |
/goal と同じ || 区切り:受け入れ基準、時限:/duration:(1〜720 時間、24h、3天 など)、邊界:/risk:(してはいけないこと。設定できるのは管理者だけで、他の人が書いた場合は外して一言添え、デプロイの既定の境界を使います)、想一想/plan(先に計画を作り、dashboard での承認を待つ)。基準を書かない場合はタスク内容がそのまま基準になります。 |
/交辦 |
タスクを任せられるスタッフの一覧。LINE ではクイックリプライのボタンになり、押すと /交辦 @名前 が送られます。 |
/交辦 @業務專員 |
bot が内容を尋ねます。その会話でのあなたの次のメッセージだけがタスクになります(10 分以内)。その次からは通常の会話です。次のメッセージで @ を使って別の人を呼ぶと待機は取り消されます。 |
/交辦 狀態(/assign status) |
任せた未完了のタスク(最大 20 件、新しい順)を、スタッフ・状態・タイトル付きで表示します。 |
/交辦 @名前の一部 … |
名前が途中まで、または複数に一致するときは、該当して任せられるスタッフを表示します。 |
Telegram のグループでは /assign@あなたのBot … が使えます。Slack のスラッシュコマンドは /duduclaw assign … で、返信は本人にだけ表示されます。
確認メッセージの例:
📌 已交辦給【業務專員】,任務 #1a2b3c4d內容:整理報價單(依組織關係交辦:王小明的 AI 員工)進度和結果會回到這個對話。輸入「/交辦 狀態」查看你交辦的任務。かっこの行は、任せる権限が組織関係から来ている場合だけ表示されます。メッセージアプリ側の文言は [general] default_language(繁体字中国語・英語・日本語)に従います。
誰が誰に任せられるか
Section titled “誰が誰に任せられるか”| 送信者 | 任せられる相手 |
|---|---|
| dashboard 管理者 | 稼働中のすべてのスタッフ |
| dashboard アカウント(WebChat にログイン中、または検証済みのチャネル ID でアカウントに連携したメッセージアプリの送信者) | アカウントに Owner か Operator で紐付いたスタッフ。マネージャーは、部下経由の権限が Operator に達するチームのスタッフにも任せられます |
| 同じアカウントで、相手が Viewer で紐付いたスタッフ・会話の既定スタッフ・外部連絡先に公開されたスタッフの場合 | 任せられません。会話はでき、bot はタスクを任せる権限がないと答えます |
| それ以外(LINE の友だち、Telegram のユーザー、Web ウィジェットの訪問者) | 任せられません。どの名前を書いても、まず dashboard でメッセージアカウントを連携するよう案内します(個人設定 → チャネル ID)。返信からスタッフの有無はわかりません |
dashboard アカウントがまったく届かないスタッフを指定した場合は、@ 呼び出しの拒否と同じ返信になります。LINE と Telegram では、同じ会話の同じ送信者への拒否は 10 秒に 1 回までで、その間に繰り返したコマンドには返信しません。権限はコマンドごとにその場で読み取り、/交辦 @名前 のあとで待っていたメッセージが届いたときにも再確認するので、紐付けやマネージャーの変更はすぐ反映されます。
タスクは gateway が直接書き込み、AI モデルは介在しません。個人版には他のアカウントがないため、オーナー(管理者)は通常どおり /交辦 を使えます。
タスクに記録される内容
Section titled “タスクに記録される内容”| 項目 | 値 |
|---|---|
assigned_to |
スタッフ |
on_behalf_of |
user:<あなたの dashboard アカウント ID>。検証済みの ID から取り、メッセージ本文からは取りません |
created_via |
チャネル(line、telegram、webchat など) |
created_by |
assign:<チャネル> |
source_channel、source_chat_id |
この会話。目標タスクの進捗(開始、各ラウンド、判断待ち、完了)がここに届きます |
kind |
goal |
以前のタスクには on_behalf_of がなく、後から埋めることもしません。dashboard で作成したタスク(tasks.create、目標の依頼)も created_via = dashboard で記録され、連携済みアカウントがチャットで送った /goal もアカウントを記録します(権限のルールは変わりません)。
スタッフが作業するとき、作業プロンプトには依頼者の表示名と部署だけが入り(例:交辦人: 王小明(業務部))、アカウント ID は入りません。
プラットフォームが安定したメッセージ ID を持つ場合、タスク ID はそこから決まります。LINE は webhook のイベント ID、Telegram はメッセージ ID、WebChat は送信ごとに作るクライアント ID です。webhook や update の再送、LINE の永続受信による再実行、同じ WebChat フレームの二重送信でも、タスクが二重にできることはありません。Discord、Slack、webhook チャネルにはまだこの ID がありません。
dashboard の目標フォームのリスク境界欄は管理者にだけ表示され、他の人が tasks.goal_create に空でない risk_boundary を渡すと拒否されます。タスク自身の境界は [goal_defaults] baseline_boundary を置き換えるためです。
- メッセージアプリでは進捗が会話に届き、
/交辦 狀態で未完了のタスクを確認できます。 - WebChat では返信にタスクカードが付き、進捗を見る で「目標」ページの「自分が任せた」が開きます。WebChat には進捗の通知は届きません。
- 「目標 → 自分が任せた」(
tasks.list_pageにon_behalf_of: "me")は、スタッフを問わず任せたタスクをすべて表示します。部下経由でしか届かないスタッフでも、タスクの内容(説明・基準・結果)を見られます。「me」はサーバーがログイン中の ID から決め、ここに他のアカウント ID を入れても無視されます。タスク詳細ページは引き続きそのスタッフへの直接の紐付けが必要です。
チャットからは、1 人あたり 10 分ごとに最大 10 件、未完了は最大 30 件まで任せられます。超えた場合は返信でそう伝え、タスクは作りません(「想一想」のタスクも同じく数えます)。dashboard で作ったタスクは数えません。上限は config.toml で変えられます。
[goal_defaults]chat_assign_per_window = 10 # 10 分あたり、0〜1000。0 でチャットからの依頼を停止chat_assign_max_open = 30 # チャットから任せた未完了タスク、0〜1000未設定や範囲外の値は既定値になります。
予約して任せる
Section titled “予約して任せる”仕事は後で、または繰り返し任せることもできます。設定した時点ではタスクは作られず、時刻になるたびにゲートウェイがあなたの名義でタスク(または目標)を作ります。その時刻に自分で任せたのと同じ扱いです。
チャットでは、時間: または 排程: の区切りを加えます(schedule:、at:、when: も可):
| 送る内容 | 予約 |
|---|---|
/交辦 @業務專員 寫週報 || 時間:每週一 9:00 |
毎週月曜 09:00 |
… || 排程:平日 早上9點 |
月〜金 09:00 |
… || 排程:每週一、三、五 下午2點半 |
月・水・金 14:30 |
… || 排程:每天 18:00 / daily 18:00 |
毎日 |
… || 排程:每小時 / hourly |
毎時 0 分 |
… || 時間:明天 15:00 / 10/25 14:00 / 2026-10-25 14:00 / tomorrow 15:00 |
1 回 |
… || 排程:cron 0 9 * * 1 |
cron 式(管理者のみ) |
繰り返しで時刻を書かなければ 09:00、年のない日付が今年すでに過ぎていれば来年です。チャットの時刻はゲートウェイのホストのタイムゾーンで読み、確認メッセージに読み取った予約と次回の実行時刻を表示します。ほかの || 区切り(受け入れ基準、時限:、想一想)は毎回の実行に適用されます。
/交辦 排程(/assign schedules)で自分の予約を一覧します(番号、AI スタッフ、時刻、状態)。/交辦 排程 暫停 <番号>、恢復 <番号>、刪除 <番号>(pause、resume、remove)で自分の予約を操作します。番号は一覧の 8 文字の#…です。
dashboard では、依頼パネルに「いつ実行するか」があります:今すぐ(既定)、日時を指定して 1 回、毎日、平日、毎週(曜日指定)、毎時、管理者はカスタム cron。時刻はブラウザのタイムゾーンで読みます。目標 → 自分が任せた に「予約」欄があり、次回と前回の実行、一時停止/再開/削除 があります。管理者は全員分に切り替えられます。RPC では tasks.goal_create と tasks.create が schedule({kind:"once", at}、{kind:"daily"|"weekdays", time}、{kind:"weekly", days:[1..7], time}、{kind:"hourly", minute}、{kind:"cron", expr}、または "每週一 9:00" のような文)と schedule_timezone(IANA)を受け付け、assign_schedules.list(scope: "mine" | "all")、.pause、.resume、.remove(id)で管理します。
毎回の実行前に権限を確認し直します。 予約の作成には今すぐ任せるのと同じ権限が必要です。実行のたびにゲートウェイはアカウントを読み直し、停止・退職、紐付けの解除、部下経由で届いていたスタッフがチームから外れた場合(または cron や境界を設定した管理者が管理者でなくなった場合)は、その回を実行せず、理由付きで予約を一時停止し、連携済みのチャネルに通知します。AI スタッフが停止・削除された場合も同様に一時停止します。再開時は作成者の権限を確認します(管理者が他人の予約を再開しても、自分の権限を貸すことにはなりません)。予約を見たり操作したりできるのは作成者と管理者だけで、他人の番号は「見つかりません」になります。
各回のタスクには on_behalf_of = user:<あなた>、created_via(dashboard またはチャットのチャネル)、チャットの予約なら会話も記録され、進捗はそこに戻ります。目標の created_by は goal:schedule、ボードのタスクは created_by にアカウント ID を残します。
一覧は最大 200 件で、有効・一時停止中の予約を先に、その後に最近完了した履歴を表示します。履歴で操作が必要な予約が隠れないようにしています。
上限:
- 1 人あたり有効または一時停止中の予約は 20 件まで。
- 管理者以外は最短 1 時間に 1 回、管理者は最短 5 分。
- 最短間隔の引き上げは既存の予約にも次回の実行・再開時に適用されます。適合しない予約は一時停止するため、間隔を長くした予約を作成してください。
- タスクの保存より先に一時停止・削除が確定すれば、その回のタスクは作成されません。すでに保存されたタスクはタスク画面で別途停止してください。
- 同じ予約の前回のタスクが未完了なら、その回はスキップします(
previous_open)。積み上がりません。 - 24 時間以上前に逃した回(ゲートウェイ停止中)はスキップし、追いかけて実行しません。短い停止なら逃した回を 1 回だけ実行します。
- 1 回だけの予約は 1 分以上先、1 年以内。
- 予約による実行は上のチャットの上限に数えません。ほかの任せたタスクと同じく 自分が任せた と
/交辦 狀態に表示されます。
[goal_defaults]assign_schedule_max_active = 20 # 1 人あたり、0..200assign_schedule_min_interval_minutes = 60 # 管理者以外。引き上げのみ(60..10080)既存の設定ファイルが読めない、形式が壊れている、予約の上限値の型が違う場合、緩い既定値へは戻しません。作成・再開を拒否し、期限の来た予約は設定の修正後に再確認します。表示・一時停止・削除は可能で、ダッシュボードに管理者への確認を促すメッセージが出ます。
予約は cron スケジューラーの 30 秒ごとのチェックで処理され、データディレクトリのロックを持つゲートウェイだけが実行します。各回のタスク ID は予約と時刻から導くため、再起動や再試行で同じ回が二重に作られることはありません。
監査イベント:assign_schedule_created、assign_schedule_paused/_resumed/_removed(人による操作)、assign_schedule_fired(タスク ID 付き)、assign_schedule_skipped(理由付き:access_lost、agent_unavailable、schedule_restricted、previous_open、missed、create_failed)、assign_schedule_auto_paused。
グループでも任せられますが、連携済みアカウントに限られます。またコマンド、確認メッセージ(タスク内容を含む)、すべての進捗通知、/交辦 狀態 が表示するタイトルがグループの全員に見えます(公開範囲にこのチャネルを含まないタスクは番号だけを表示)。LINE グループで「メンションのみ」がオンのとき、/交辦 と /assign は bot への呼びかけとして扱われ(他のコマンドは引き続きメンションが必要)、/交辦 @名前 のあとで待っている 1 件のメッセージも同様です。
human_assign(Info):タスクを作成するたびに、チャネル、送信者(user:<アカウント ID>)、タスク ID、権限の出どころ(via:binding、team:<部下のアカウント ID>:<階層>、admin)を記録。human_assign_refused(Warning):拒否のたびに理由(needs_identity、call_only、denied、rate_limited)を記録。未連携の送信者はプラットフォーム ID の HMAC で記録します。同じ送信者・同じスタッフ・同じ理由の繰り返しは 1 分に 1 回だけ記録します。- タスクの
goal_loop.createdアクティビティの metadata にon_behalf_of、created_via、viaが入ります。
/交辦 @名前のあとの待機はメモリ上だけにあり、gateway を再起動すると消えます。LINE で次のメッセージを受け付けてから処理するまでの間に再起動した場合、そのメッセージは通常の会話として既定スタッフに渡ります(どのチャネルでも、再起動後にもう一度処理されたメッセージは通常の会話として扱います)。- 失敗したときは決まった一文だけを返し、原因は gateway のログにだけ書きます。
- WebChat で任せたタスクの進捗はチャットに届きません。「目標」ページで確認してください。
- Discord、Slack、webhook チャネル(WhatsApp、Feishu、Teams、WeCom、Google Chat、DingTalk)はテキストのみで返します。エンドツーエンドで確認したのは LINE と WebChat だけです。
- 部下経由でしかスタッフに届かないマネージャーは、「自分が任せた」一覧と
/交辦 狀態ではタスクの内容を見られますが、タスク詳細ページでは見られません。