コンテンツにスキップ

チャットからタスクを任せる

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(繁体字中国語・英語・日本語)に従います。

送信者 任せられる相手
dashboard 管理者 稼働中のすべてのスタッフ
dashboard アカウント(WebChat にログイン中、または検証済みのチャネル ID でアカウントに連携したメッセージアプリの送信者) アカウントに Owner か Operator で紐付いたスタッフ。マネージャーは、部下経由の権限が Operator に達するチームのスタッフにも任せられます
同じアカウントで、相手が Viewer で紐付いたスタッフ・会話の既定スタッフ・外部連絡先に公開されたスタッフの場合 任せられません。会話はでき、bot はタスクを任せる権限がないと答えます
それ以外(LINE の友だち、Telegram のユーザー、Web ウィジェットの訪問者) 任せられません。どの名前を書いても、まず dashboard でメッセージアカウントを連携するよう案内します(個人設定 → チャネル ID)。返信からスタッフの有無はわかりません

dashboard アカウントがまったく届かないスタッフを指定した場合は、@ 呼び出しの拒否と同じ返信になります。LINE と Telegram では、同じ会話の同じ送信者への拒否は 10 秒に 1 回までで、その間に繰り返したコマンドには返信しません。権限はコマンドごとにその場で読み取り、/交辦 @名前 のあとで待っていたメッセージが届いたときにも再確認するので、紐付けやマネージャーの変更はすぐ反映されます。

タスクは gateway が直接書き込み、AI モデルは介在しません。個人版には他のアカウントがないため、オーナー(管理者)は通常どおり /交辦 を使えます。

項目 値
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

未設定や範囲外の値は既定値になります。

仕事は後で、または繰り返し任せることもできます。設定した時点ではタスクは作られず、時刻になるたびにゲートウェイがあなたの名義でタスク(または目標)を作ります。その時刻に自分で任せたのと同じ扱いです。

チャットでは、時間: または 排程: の区切りを加えます(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..200
assign_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 だけです。
  • 部下経由でしかスタッフに届かないマネージャーは、「自分が任せた」一覧と /交辦 狀態 ではタスクの内容を見られますが、タスク詳細ページでは見られません。