DingTalk Workspace (DWS)
DWS チャネルは、DingTalk Workspace CLI で既に認証されたアカウントを使用します。1対1チャットとグループメッセージを受信し、DingTalk ドキュメントメンションの通知カードを認識し、エージェントの応答を発信元のメッセージまたはドキュメントコメントに返信します。
これは DingTalk ボットチャネルとは別物です。専用アプリケーションボットには type: "dingtalk" を引き続き使用してください。Qwen Code が既存の DWS ログインを通じて動作する場合は type: "dws" を使用します。
前提条件
Qwen Code を実行するホストに DWS CLI 1.0.57 以降をインストールし、そのプロセスの PATH から dws が解決できることを確認してください。
dws version --format json同じホストで認証を行います。
dws auth login
dws profile list --format json
dws auth status --format jsonヘッドレスサーバーでは dws auth login --device を使用してください。チャネルは起動時に正確に 1 つの既存プロファイルに固定します。profile を正確なプロファイル名または corpId に設定するか、省略すると isCurrent とマークされたエントリに固定します。チャネルはすべての DWS ログインを同等に扱い、user_id メタデータに依存しません。
設定
~/.qwen/settings.json にチャネルを追加します。
{
"channels": {
"dws-work": {
"type": "dws",
"profile": "profile-name-or-corp-id",
"senderPolicy": "pairing",
"groupPolicy": "pairing",
"watchTodos": true,
"groups": {
"*": { "requireMention": true }
},
"sessionScope": "chat_thread",
"cwd": "/path/to/your/project"
}
}
}インタラクティブな確認なしにツール呼び出しを実行する回答ボットには、YOLO 承認モードが利用可能です。
{
"channels": {
"dws-answers": {
"type": "dws",
"senderPolicy": "pairing",
"groupPolicy": "pairing",
"approvalMode": "yolo",
"cwd": "/path/to/answer-bot"
}
}
}YOLO モードはすべてのツール呼び出しを自動承認します。信頼されたボットアカウントとワークスペースでのみ使用してください。
senderPolicy と groupPolicy は、新しく管理される DWS チャネルのデフォルトは pairing です。チャネルが返したコードを使用して、ユーザーまたはグループを承認します。
qwen channel pairing approve dws-work CODEsenderPolicy は、ダイレクトメッセージの送信者、ドキュメント通知の作成者、ネイティブ Todo の作成者、および open または allowlist グループ内の送信者を制御します。groupPolicy はグループ会話を制御します。承認されたペアリンググループは共有チャネルの動作に従い、そのメンバーを承認します。open と allowlist グループは senderPolicy も通過する必要があります。
groups はメンションの動作を制御します。具体的なグループ ID は "*" をオーバーライドします。requireMention: true の場合、@ メッセージのみがチャネルを起動します。requireMention: false の場合、グループと送信者のポリシーを通過した後に通常メッセージも受信されます。
グループメンションはリアルタイムの個人イベントストリームを最初に使用します。チャネルは 5 秒ごとに最近の @ メッセージ履歴もチェックするため、DingTalk が個人イベントストリームからメンションを省略した場合でも、外部グループからのメンションが回復されます。メッセージは両方のパスで会話とメッセージ ID によって重複排除されます。
メッセージが別の DingTalk メッセージを引用している場合、引用テキストはリアルタイムパスと履歴フォールバックパスの両方でエージェントへの返信コンテキストとして含まれます。
ドキュメントメンション
ドキュメントやナレッジベースのウォッチリストはありません。ドキュメントタスクを開始するには:
- 認証されたアカウントを @メンションする DingTalk ドキュメントコメントを追加します。
- そのアカウントに DingTalk 通知を送信するオプションを有効にします。
- DWS はそのアカウントのダイレクトメッセージ履歴を通じて通知カードを配信します。
チャネルはその通知からドキュメント ID、コメントキー、およびリクエストを抽出します。参照されているドキュメントを読んでコンテキストとし、タスクの実行中に DingTalk の「暗中观察」 eyes リアクションを追加し、元のドキュメントコメントに返信します。リアルタイムの DWS イベントストリームがカードを含んでいる場合に使用され、5 秒ごとの増分履歴チェックは現在のイベントストリームで省略されたカードをカバーします。
通知を生成しないコメントは設計上無視されます。同じドキュメントコメントに対する重複した通知メッセージは 1 回のみ実行されます。ドキュメントタスクは senderPolicy に従い、approvalMode は default、plan、または yolo をサポートします。省略時は default が使用されます。
ネイティブ Todo の変更
watchTodos: true を設定すると、選択された DWS プロファイルの保留中のネイティブ Todo で、アカウントが実行者であるものをポーリングします。このオプションのデフォルトは false で、DWS チャネルを追加しても既存の Todo が暗黙的に実行されることはありません。
初回の成功したスキャンでベースラインが確立され、過去の Todo は開始されません。以降のスキャンは、Todo が新規に割り当てられた場合、再開された場合、またはタイトル、優先度、期限、担当者など実行可能なフィールドが変更された場合にタスクを実行します。最終応答は発信元の Todo にコメントとして追加されます。コメントのみのメタデータと変更タイムスタンプは変更検出から除外されるため、チャネル自身の応答がループをトリガーすることはありません。完了または削除すると Todo は保留セットから削除されます。再開すると新しいトリガーが作成されます。
ネイティブ Todo は Todo 作成者の ID を使用して senderPolicy に従います。pairing の下では、チャネルは 1 つのペアリングコードコメントを追加し、Todo を保留状態にします。作成者がローカルで承認された後、後続のポーリングで未変更の Todo を処理できます。ポーリングは 30 秒ごとに実行され、固定プロファイルの現在の組織にスコープされたままです。
起動と検証
チャネルを直接実行します。
qwen channel start dws-workまたはデーモンに管理させます。
qwen serve --workspace /path/to/your/project --channel dws-workチャネルサービスのリースを共有するため、両方の形式を同時に実行しないでください。
ローカル検証では、別のアカウントからダイレクトメッセージを送信し、必要に応じてペアリングを承認し、タスク実行中に eyes リアクションが表示されることを確認します。次に、@メンション通知を有効にしてドキュメントコメントを追加します。チャネルは通知メッセージにリアクションし、ドキュメントを読み、最終回答を元のコメントの下に投稿します。通知が無効なコメントではタスクは発生しません。
チャネルは、DWS が認証されたアカウントとして識別する送信者 ID からのイベントを無視し、メッセージテキストから ID を推論することなく、返信ループとペアリングループを防ぎます。IM ソースの起動には、この信頼できる自己 ID が必要です。認証されたアカウントが openDingTalkId を公開しておらず、同じプロファイルの以前のセッションが 1 つも記録されていない場合、チャネルは接続を拒否します。一時的に ID を失う再接続でも、以前に記録された自己送信者 ID でのフィルタリングを継続します。