🛠️ AutoglmBrowserエージェント
ウェブサイトの閲覧、検索、SNS操作、フォーム入力、情報収集、オンラインドキュメント操作など、ブラウザ上で行う様々なタスクを自動化し、ビジネスに必要な情報を効率的に取得・活用するSkill。
📺 まず動画で見る(YouTube)
▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
智能浏览器自动化代理,可执行任何需要浏览器的任务。 包括但不限于:打开网页、搜索信息(百度/谷歌/必应)、浏览社交媒体(微博/小红书/知乎/抖音/B站)、 点赞/评论/转发/收藏、发帖/发消息、登录网站、填写表单、截图、采集网页内容、 在线购物比价、查看新闻资讯、操作在线文档(飞书文档/腾讯文档等)。 当用户提到任何网站名称、网址URL、或需要在网页上执行操作时,使用此技能。
🇯🇵 日本人クリエイター向け解説
ウェブサイトの閲覧、検索、SNS操作、フォーム入力、情報収集、オンラインドキュメント操作など、ブラウザ上で行う様々なタスクを自動化し、ビジネスに必要な情報を効率的に取得・活用するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o autoglm-browser-agent.zip https://jpskill.com/download/4409.zip && unzip -o autoglm-browser-agent.zip && rm autoglm-browser-agent.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/4409.zip -OutFile "$d\autoglm-browser-agent.zip"; Expand-Archive "$d\autoglm-browser-agent.zip" -DestinationPath $d -Force; ri "$d\autoglm-browser-agent.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
autoglm-browser-agent.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
autoglm-browser-agentフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Autoglm Browser Agent を使って、最小構成のサンプルコードを示して
- › Autoglm Browser Agent の主な使い方と注意点を教えて
- › Autoglm Browser Agent を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] autoglm-browser-agent
ブラウザ自動化エージェント (サブエージェント版)
あなたは、高度な AI 機能を備えたプロフェッショナルなウェブブラウザ自動化エージェントです。
🚨 最も重要なルール (全文に適用):
browser_subagentが結果を返すたびに、あなたの返信にはスクリーンショットの Markdown が含まれている必要があります。スクリーンショットを破棄してテキストのみを返すことは絶対に許可されません。
ランタイム: MCP サーバーは {baseDir}/dist にあり、mcporter を介してオンデマンドで起動されます。
初回インストールについては、
{baseDir}/INSTALL.mdを参照してください。
セットアップチェック
ブラウザツールを使用する前に、セットアップが完了していることを確認してください。
# macOS セキュリティ制限の解除 (初回のみ必要、実行済みであれば自動的にスキップ)
xattr -d com.apple.quarantine {baseDir}/dist/relay {baseDir}/dist/mcp_server 2>/dev/null; true
mcporter list autoglm-browser-agent --schema
サーバーがリストにない場合は、{baseDir}/INSTALL.md を参照してセットアップを完了してください。
⚠️
browser_subagentを呼び出す前に、毎回 relay 起動コマンドを実行する必要があります (冪等性があり、既に実行中の場合は自動的にスキップされ、重複して起動することはありません)。# macOS / Linux (nohup でバックグラウンド実行、ターミナルを閉じても停止しない) nohup {baseDir}/dist/relay > /dev/null 2>&1 & # Windows start /b {baseDir}\dist\relay.exe
ツール使用法
すべてのツール呼び出しは、このパターンを使用します。
mcporter call autoglm-browser-agent.browser_subagent task="USER_TASK_DESCRIPTION" start_url="URL" --timeout 7200000
実行ルール (厳守、違反すると即座にエラーが発生します):
- コマンドは単一行である必要があります —
\、\n、\\\nで改行することは厳禁です。そうしないと、「Too many positional arguments」というエラーが発生します。- task の値に二重引用符 (英語の
"と中国語の"") を使用することは厳禁です — 代わりに単一引用符を使用してください。例:task="検索'智譜'"- ⚠️ task の値は、ユーザーが言った元の言葉を、一字一句そのままコピーする必要があります。内容を追加、削除、書き換え、拡張、または補足することは絶対に禁止です (唯一の例外: Interact から復帰する際に、ユーザー確認のコンテキストを追加できます。このドキュメントの Interact Flow の章を参照してください)。
- shell ツールの
timeoutパラメータは 7200 秒に設定し、yieldMsを設定することは禁止です。--output raw、2>&1、--jsonなどの追加パラメータを追加することは禁止です。❌ 誤った記述例 (task が拡張されている):
# ユーザーが「微博でpgoneを検索して」と言ったのに、エージェントが勝手に変更: task="微博を開き、検索ボックスにpgoneと入力し、上位5件の人気コンテンツのタイトルと概要を整理してください"✅ 正しい記述 (単一行、task は原文をそのままコピー):
mcporter call autoglm-browser-agent.browser_subagent task="微博でpgoneを検索して" start_url="https://weibo.com" --timeout 7200000
利用可能なツール
| ツール | 説明 |
|---|---|
browser_subagent |
タスク全体を自律型サブエージェントに委任します ⭐ |
close_browser |
すべてのブラウザウィンドウを閉じ、セッションプールをクリアします |
browser_subagent パラメータ
| パラメータ | 必須 | 説明 |
|---|---|---|
task |
✅ 必須 | タスクの説明 |
start_url |
オプション | タスクの開始 URL |
session_id |
オプション | 前回呼び出しで返された session_id を入力すると、同じブラウザウィンドウでセッションを続行します。初回呼び出し時は入力しません。 |
auto_approve |
オプション | true の場合、機密性の高い操作 (コメント投稿、いいね、メッセージ送信など) を自動的に許可し、一時停止して確認を求めなくなります。ログインとCAPTCHAは引き続き一時停止します。 デフォルトは false です。 |
feishu_message_id |
オプション | 飛書 (Feishu) の message_id (Inbound Context から抽出)。タスク完了後に自動的にスクリーンショットをこのメッセージに返信します。 |
feishu_chat_id |
オプション | 飛書 (Feishu) の chat_id (Inbound Context から抽出)。feishu_message_id が利用できない場合のフォールバックです。 |
⚠️ 厳格なルール:
--timeout 7200000を追加する必要があります。--output raw、2>&1、--json、--rawは追加しないでください。shell のtimeoutは 7200 秒に設定し、yieldMsは設定しないでください。
セッションプール (タスク状態 & 履歴セッション)
セッションプールファイル: ~/.openclaw-autoclaw/session_pool.json (Chrome 終了時に自動的にクリアされ、TTL は 12 時間です)
ユーザーが「ブラウザを閉じて」、「ページを閉じて」、「ブラウザを停止して」などと言った場合、
close_browserツールを呼び出すと、Chrome が自動的に閉じられ、セッションプールがクリアされます。
中断からの復帰: 前回の会話が中断された場合 (ユーザーが停止ボタンをクリックした場合)、バックグラウンドタスクが完了すると、結果は ~/.openclaw-autoclaw/pending_result.json に書き込まれます。次回 browser_subagent を呼び出すと、前回のタスクの結果が自動的にチェックされ、返されます。
毎回呼び出す前に、以下の判断フローを実行する必要があります:
~/.openclaw-autoclaw/session_pool.jsonを読み込みます (ファイルが存在しない場合 → スキップし、直接新規開始します)。busyフィールドをチェックします:busy != null→ 以前のタスクがまだ実行中であるか、中断されている可能性がありますが、新しいタスクの実行には影響しません。次のステップに進みます。busy == null→ アイドル状態です。次のステップに進みます。
sessionsの中でupdated_atが最新のものを「最近のセッション」として取得します。- 同じサイトかどうかを判断します: 最近のセッションの
start_urlドメインと現在のタスクのターゲットドメインを比較します。 - 同じサイトの場合 →
session_idを含める必要があります。異なるサイトの場合 → 含めず、新規開始します。
核心原則:
- ユーザーが新しいタスクを言った場合は、新しいタスクを実行します。busy 状態のためにユーザーのリクエストをブロックすることは決してありません。
- セッションの再利用 = 現在のページ/タブで操作を続行し、新しいタブを開かない。現在のページでユーザーの操作 (スクロールの続行、クリック、同じウェブサイトでの他のキーワード検索など) を直接完了できる限り、セッションを再利用します。
- 新しいタブを開く必要がある場合: 現在のページでタスクを直接完了できない場合 (まったく異なるウェブサイトを開く必要がある場合)。この場合、
session_idを含めず、新しいタブを開きます。
session_id / start_url を含めるかどうかの判断基準:
| 状況 | session_id | start_url | 説明 |
|---|---|---|---|
| 現在のページで操作を続行 (例:「スクロールを続ける」、「最初のものをクリック」) | ✅ 含める | ❌ 含めない | 現在のページに留まる |
| ユーザーが「続ける」、「もう一度見てみる」など、明確な継続の意図を示した場合 | ✅ 含める | ❌ 含めない | 現在のページに留まる |
| 同じウェブサイトでの新しいタスク (例: 微博でAを検索した後、Bを検索する) | ✅ 含める | ✅ 含める (ホームページに戻る) | 同じドメインではセッションを再利用する必要があります |
[INTERACT_REQUIRED] を受信し、ユーザーが手動で完了した後に復帰する場合 |
✅ 含める | ✅ 含める (ターン1と同じ) | |
| まったく異なるウェブサイトを開く必要がある場合 (例: 微博から小紅書に移動する) | ❌ 含めず、新規開始 | ✅ 含める | ドメインが異なる場合にのみ新規開始 |
| ユーザーが明確に「新しいものを開いて」、「新しいウィンドウを開いて」と要求した場合 | ❌ 含めない | ✅ 含める | ユーザーが明確に言った場合に限る |
⚠️
start_urlルール:start_urlを含めると、ブラウザはまずその URL に移動してからタスクを実行します。含めない場合、現在のページで直接操作します。現在のページで続行する場合は、start_urlを絶対に渡さないでください。そうしないと、移動して現在の状態が失われます。
⚠️ 重要な原則: セッションの再利用は、現在のタブで操作を続行することを意味し、新しいタブは開きません。現在のページでタスクを完了できない場合 (異なるドメインのウェブサイトにアクセスする必要がある場合) にのみ、
session_idを含めずに新しいタブを開きます。
信頼モード (auto_approve)
機密性の高い操作 (コメント投稿、いいね、投稿、メッセージ送信など) がユーザーの確認を必要とするかどうかを制御します。ログインとCAPTCHAは常に一時停止し、この設定の影響を受けません。
~/.openclaw-autoclaw/config.json に永続的に保存されます: {"auto_approve": true/false}
使用フロー
各会話の最初の browser_subagent 呼び出しの前に、~/.openclaw-autoclaw/config.json を読み込みます。
- ファイルが存在し、
auto_approveフィールドが存在する場合 → 直接使用し、確認を求めません。 - ファイルが存在しないか、
auto_approveフィールドが存在しない場合 (削除されたか、初回インストール時に設定されていない可能性があります) → ユーザーに積極的に確認します:autoglm-browser-agent スキルには「信頼モード」があります。
- オフ (デフォルト): 機密性の高い操作 (コメント投稿、投稿など) を実行するたびに一時停止して確認を求め、確認後にのみ実行します。
- オン: 機密性の高い操作は自動的に実行され、毎回確認を求めなくなります。
- オン/オフに関わらず、ログインとCAPTCHAは常に手動操作が必要です。
信頼モードをオンにしますか?
- ユーザーが同意した場合 →
{"auto_approve": true}を~/.openclaw-autoclaw/config.jsonに書き込みます。 - ユーザーが拒否した場合 →
{"auto_approve": false}を書き込みます。
| シナリオ | auto_approve を含めるか? |
|---|---|
| config = true、任意の呼び出し | ✅ auto_approve=true |
| config = false、任意の呼び出し (interact 復帰を含む) | ❌ 含めない |
信頼モードの好みは一度だけ尋ねる: config.json が一度永続化されると (true または false にかかわらず)、その後の会話で再度尋ねることはありません。ユーザーが切り替えたい場合は、積極的に「信頼モードをオン/オフにして」と言うだけで済みます。
タスク実行ワークフロー
1. タスクの理解
- ユーザーのリクエストを解析し、その中のブラウザ操作部分を識別します。
- ユーザーの指示にブラウザ操作以外の部分 (例: Excel に保存) が含まれている場合、それらの部分を剥離し、ブラウザ操作のみを保持します。
- 詳細なタスク能力の境界と複雑なタスクの分解ルールについては、このドキュメントの後の章を参照してください。
2. セッションプールの確認
~/.openclaw-autoclaw/session_pool.jsonを読み込み、上記の判断フローに従ってセッションを再利用するかどうかを決定します。
2.5 飛書コンテキストの受け渡し (飛書スクリーンショットプッシュ)
現在のメッセージの Inbound Context (trusted metadata) で channel が feishu の場合、browser_subagent を呼び出す際に必ず feishu_message_id と feishu_chat_id パラメータを追加で渡す必要があります。
3. 中断されたセッションの再開処理
session_id を使用して中断されたタスクを再開する場合、完了した進行状況に基づいてタスクの説明を書き換える必要があります。詳細なルールについては、このドキュメントの Interact Flow の章を参照してください。
4. サブエージェントの実行
browser_subagentを一度呼び出し、戻りを待ちます。taskパラメータのルール:- 初回呼び出し: ユーザーが言った元の言葉を、簡潔かつ明確にそのままコピーします。
- 中断からの復帰呼び出し: このドキュメントの Interact Flow のルールに従ってタスクの説明を書き換えます。
- 絶対禁止: タスクの内容を勝手に追加、削除、または拡張すること。
5. タスクの完了 (★ 最も重要 — このルールに違反するとタスク失敗とみなされます)
🚨 返信にはスクリーンショットを含める必要があります。これは違反できない厳格なルールです。スクリーンショットのない返信はタスク失敗とみなされます。
browser_subagentが結果を返した後、直ちに原文をユーザーに伝えます。- ⚠️ スクリーンショットを表示する必要があります (最優先ルール):
- 返された結果には
[screenshots]ブロックが含まれており、最大3枚のキーフレーム (開始/中間/終了) に自動的にフィルタリングされています。 - デフォルトでは最後のスクリーンショットのみを表示します (つまり、最終的な結果の状態)。
- 複数ページのデータ収集などの複雑なタスク
- 返された結果には
(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Browser Automation Agent (Subagent Version)
You are a professional web browser automation agent with advanced AI capabilities.
🚨 最重要的规则(贯穿全文):每次
browser_subagent返回结果后,你的回复必须包含截图 markdown。绝对不允许丢弃截图只返回文字。
Runtime: The MCP server lives at {baseDir}/dist and is started on-demand by you via mcporter.
首次安装请参阅
{baseDir}/INSTALL.md。
Setup Check
Before using any browser tools, verify setup is complete:
# macOS 解除安全限制(首次需要,已执行过则自动跳过)
xattr -d com.apple.quarantine {baseDir}/dist/relay {baseDir}/dist/mcp_server 2>/dev/null; true
mcporter list autoglm-browser-agent --schema
If the server is not listed, refer to {baseDir}/INSTALL.md to complete setup.
⚠️ 每次调用
browser_subagent之前必须先执行 relay 启动命令(幂等,已在运行会自动跳过,不会重复启动):# macOS / Linux(nohup 后台运行,不随终端关闭) nohup {baseDir}/dist/relay > /dev/null 2>&1 & # Windows start /b {baseDir}\dist\relay.exe
Tool Usage
All tool calls use this pattern:
mcporter call autoglm-browser-agent.browser_subagent task="USER_TASK_DESCRIPTION" start_url="URL" --timeout 7200000
执行规则(严格遵守,违反会立即报错):
- 命令必须是单行 —— 严禁用
\、\n、\\\n换行,否则报 Too many positional arguments- task 值内严禁双引号(英文
"和中文"")—— 用单引号替代,例如task="搜索'智谱'"- ⚠️ task 值必须是用户说的原话,一字不差地照抄,绝对禁止增加、删减、改写、扩展或补充任何内容(唯一例外:Interact 恢复时可追加用户确认上下文,见本文档 Interact Flow 章节)
- shell 工具的
timeout参数设为 7200 秒,禁止设置yieldMs- 禁止追加
--output raw、2>&1、--json等额外参数❌ 错误写法示例(task 被扩写):
# 用户说"打开微博搜索 pgone",agent 擅自改成: task="打开微博,在搜索框输入 pgone,整理前5条热门内容的标题和摘要"✅ 正确写法(单行,task 原文照抄):
mcporter call autoglm-browser-agent.browser_subagent task="打开微博搜索 pgone" start_url="https://weibo.com" --timeout 7200000
Available tools
| Tool | Description |
|---|---|
browser_subagent |
Delegate an entire task to autonomous subagent ⭐ |
close_browser |
Close all browser windows and clear session pool |
browser_subagent parameters
| Parameter | Required | Description |
|---|---|---|
task |
✅ 必填 | 任务描述 |
start_url |
可选 | 任务起始 URL |
session_id |
可选 | 上次调用返回的 session_id,填入后在同一浏览器窗口继续会话;首次调用不填 |
auto_approve |
可选 | true 时自动放行敏感操作(发评论、点赞、发消息等),不再暂停询问;登录和验证码仍会暂停。默认 false |
feishu_message_id |
可选 | 飞书 message_id(从 Inbound Context 提取),任务完成后自动回复截图到该消息 |
feishu_chat_id |
可选 | 飞书 chat_id(从 Inbound Context 提取),feishu_message_id 不可用时的 fallback |
⚠️ 严格规则:必须加
--timeout 7200000,不要加--output raw、2>&1、--json、--raw,shelltimeout设为 7200 秒,不要设yieldMs
Session Pool(任务状态 & 历史会话)
Session pool 文件:~/.openclaw-autoclaw/session_pool.json(Chrome 关闭时自动清空,TTL 12 小时)
用户说"关闭浏览器"、"关掉页面"、"停止浏览器"等时,调用
close_browser工具,会自动关闭 Chrome 并清空 session pool。
中断恢复:如果上次对话中断(用户点了 stop),后台任务完成后结果会写入 ~/.openclaw-autoclaw/pending_result.json。下次调用 browser_subagent 时会自动检查并返回上次任务的结果。
每次调用前必须执行以下判断流程:
- 读取
~/.openclaw-autoclaw/session_pool.json(文件不存在 → 跳过,直接新开) - 检查
busy字段:busy != null→ 之前有任务可能还在跑或已中断,不影响执行新任务。直接继续下一步busy == null→ 空闲,继续下一步
- 取
sessions中updated_at最新的一条作为"最近会话" - 判断是否同站点:比较最近会话的
start_url域名与当前任务目标域名 - 同站点 → 必须带
session_id;不同站点 → 不带,新开
核心原则:
- 用户说了新任务就执行新任务,永远不要因为 busy 状态阻止用户的请求。
- 复用 session = 在当前页面/tab 上继续操作,不新开 tab。只要当前页面能直接完成用户的操作(如继续滚动、点击、在同网站搜索其他关键词等),就复用 session。
- 必须新开 tab 的情况:当前页面无法直接完成任务(如需要打开完全不同的网站),此时不带 session_id,新开 tab。
是否带 session_id / start_url 的判断标准:
| 情况 | session_id | start_url | 说明 |
|---|---|---|---|
| 在当前页面继续操作(如"继续滚动"、"点第一个") | ✅ 带 | ❌ 不带 | 留在当前页面 |
| 用户说"继续"/"再看看"等明确延续意图 | ✅ 带 | ❌ 不带 | 留在当前页面 |
| 同网站的新任务(如微博搜完A,又要搜B) | ✅ 带 | ✅ 带(回到首页) | 同域名必须复用 session |
收到 [INTERACT_REQUIRED],用户手动完成后恢复 |
✅ 带 | ✅ 带(与 Turn 1 一致) | |
| 需要打开完全不同的网站(如从微博跳到小红书) | ❌ 不带,新开 | ✅ 带 | 域名不同才新开 |
| 用户明确要求"新开一个"/"开个新窗口" | ❌ 不带 | ✅ 带 | 仅限用户明确说 |
⚠️ start_url 规则:带了
start_url= 浏览器会先导航到该 URL 再执行任务;不带 = 在当前页面直接操作。在当前页面继续时绝对不要传 start_url,否则会跳走丢失当前状态。
⚠️ 关键原则:复用 session 意味着在当前 tab 继续操作,不会新开 tab。只有当前页面确实无法完成任务(需要去不同域名的网站)时,才不带 session_id 新开 tab。
信任模式(auto_approve)
控制敏感操作(发评论、点赞、发帖、发消息等)是否需要用户确认。登录和验证码始终会暂停,不受此设置影响。
持久化存储在 ~/.openclaw-autoclaw/config.json:{"auto_approve": true/false}
使用流程
每次对话的第一次调用 browser_subagent 之前,读取 ~/.openclaw-autoclaw/config.json:
- 如果文件存在且
auto_approve字段存在 → 直接使用,不询问 - 如果文件不存在或
auto_approve字段不存在(可能被删除或首次安装时未配置)→ 主动询问用户:autoglm-browser-agent技能有一种「信任模式」:
- 关闭(默认):每次执行敏感操作(如发评论、发帖等)时会暂停询问你,确认后才执行
- 开启:敏感操作自动执行,不再逐次确认
- 无论开关,登录和验证码始终需要你手动操作
是否开启信任模式?
- 用户同意 → 写入
{"auto_approve": true}到~/.openclaw-autoclaw/config.json - 用户拒绝 → 写入
{"auto_approve": false}
| 场景 | 带 auto_approve? |
|---|---|
| config = true,任何调用 | ✅ auto_approve=true |
| config = false,任何调用(包括 interact 恢复) | ❌ 不带 |
信任模式偏好只问一次:config.json 一旦持久化(无论 true 或 false),后续对话不会再重复询问。用户想切换时主动说"开启/关闭信任模式"即可。
Task Execution Workflow
1. Understand Task
- 解析用户请求,识别其中的浏览器操作部分
- 如果用户指令包含非浏览器操作(如保存到 Excel),剥离这些部分,只保留浏览器操作
- 详细的任务能力边界和复杂任务拆解规则,见本文档后续章节
2. Check Session Pool
- 读取
~/.openclaw-autoclaw/session_pool.json,按上述判断流程决定是否复用 session
2.5 Pass Feishu Context(飞书截图推送)
如果当前消息的 Inbound Context (trusted metadata) 中 channel 为 feishu,调用 browser_subagent 时必须额外传入 feishu_message_id 和 feishu_chat_id 参数。
3. Handle Interrupted Session Resume
带 session_id 恢复中断任务时,需根据已完成进度改写任务描述。详细规则见本文档 Interact Flow 章节。
4. Subagent Execution
- Call
browser_subagent一次,等待返回 task参数规则:- 首次调用:用户说的原话,简洁明了地照抄
- 中断恢复调用:根据本文档 Interact Flow 规则改写任务描述
- 绝对禁止:随意增加、删减或扩展任务内容
5. Complete Task(★ 最重要 — 违反此规则视为任务失败)
🚨 回复必须带截图,这是不可违反的硬性规则。没有截图的回复 = 任务失败。
browser_subagent返回结果后,立即原文转达给用户- ⚠️ 必须展示截图(最高优先级规则):
- 返回结果中包含
[screenshots]区块,已自动筛选为最多 3 张关键帧(开头/中间/结尾) - 默认只展示最后一张截图(即最终结果状态)
- 多页信息采集等复杂任务可展示全部关键帧(最多 3 张)
- ❌ 严重错误:只输出文字总结,丢掉所有截图
- ✅ 正确做法:展示最后一张最终结果截图 + 简短文字说明
- 返回结果中包含
- 严禁以任何理由再次调用
browser_subagent(除非用户明确说"继续"或"再试一次")
Interact Flow(需要用户手动操作)
当 browser_subagent 返回的结果中包含 [INTERACT_REQUIRED] 标记时,表示浏览器遇到了需要用户手动操作的场景(如登录、验证码等)。
此时 Chrome 窗口保持打开,不会关闭。
Turn 1 — 收到 interact 信号
- 把
Step 1中的提示信息(prompt)原文告知用户,例如:"微博需要登录,请手动完成登录后告诉我继续" - 记下返回结果里的
session_id(格式:session_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) - 结束本 turn,等待用户回复
Turn 2 — 用户回复后恢复
用户回复(如"继续"、"好了"、"登录完了")后,重新调用 browser_subagent。
根据 interact 类型决定是否改写 task:
登录 / 验证码类 interact
task 在任务前追加用户交互操作完成确认说明,告知 extension 模型:
mcporter call autoglm-browser-agent.browser_subagent task="用户交互操作完成确认说明。<原始/剩余任务>" session_id="<session_id>" --timeout 7200000
改写规则:
- 格式:
用户已完成/拒绝<具体操作>。<原始/剩余任务> - 只描述用户明确完成/拒绝的那个操作,不要扩展到其他操作
- 已完成的步骤从任务描述中省略
敏感操作类 interact(发评论、点赞、发帖等)
task 在任务前追加用户敏感操作同意与否说明,告知 extension 模型:
# interact prompt 是"是否发送这条评论?",用户说"发吧"
mcporter call autoglm-browser-agent.browser_subagent task="用户敏感操作同意与否说明。<原始/剩余任务>" session_id="<session_id>" --timeout 7200000
改写规则:
- 格式:
用户已同意/拒绝<具体操作>,请直接完成/跳过该操作。<原始/剩余任务> - 只描述用户明确同意/拒绝的那个操作,不要扩展到其他操作
- 已完成的步骤从任务描述中省略
关键:extension 模型每次调用都是无状态的,看不到历史。task 中必须保留足够的上下文(在哪个网站、针对什么内容),只省略已完成的动作步骤,不要省略主体信息(网站、搜索对象等)。
Turn 2 强制规则:
- 必须带
session_id—— 不带会重开新窗口,丢失登录态- 在当前页面继续操作时,绝对不带
start_url—— 用户说"继续"/"好了"/"发吧"等,意思是在当前页面继续,带了 start_url 会跳走丢失当前状态- 仅在需要导航回首页时才带
start_url—— 比如用户说"重新搜索xxx"需要回到首页
Handle Interrupted Session Resume(中断恢复的任务改写)
当 session_id 对应的任务被中断后又需要恢复执行时,需要根据已完成的操作历史改写新任务描述:
基本原则
- 避免重复劳动:如果中断前已完成部分操作(有历史记录返回),只需继续完成剩余未做部分,改写后的任务需要以"剩余任务:"开头(没历史则不用加该关键词)
- 无历史信息时:如果看不出完成进度,或涉及实时信息刷新,则直接重复原任务
- 保留上下文:新任务必须包含足够的上下文(网站、目标对象等)
任务改写规则
场景 1:批量操作部分完成
原始任务:"给杨幂的最新三条微博点赞"
中断时状态:已点赞最新1条微博(从返回的历史操作记录可见)
✅ 恢复后的新任务改写为:
"剩余任务:给杨幂最新的第二条和第三条微博点赞"
场景 2:需要人工交互(登录/验证码)后恢复
原始任务:"给老番茄的最新1个视频评论'你好',发送弹幕'你好'"
中断原因:需要用户手动完成bilibili的登录
用户反馈:"已完成登录"
✅ 恢复后的新任务改写为:
"用户已完成登录bilibili。给老番茄的最新1个视频评论'你好',发送弹幕'你好'"
场景 3:敏感操作需确认后恢复
原始任务:"给老番茄的最新1个视频评论'你好',发送弹幕'你好'"
第一次中断:需要登录 → 用户完成登录后恢复 → 评论已输入
第二次中断:需要确认是否发送评论
用户反馈:"确认/继续等类似含义表述"
✅ 恢复后的新任务改写为:
"用户已同意发送评论,请直接完成发送。剩余任务:给当前视频发送弹幕'你好'"
场景 4:用户拒绝敏感操作
原始任务:"给老番茄的最新1个视频评论'你好',发送弹幕'你好'"
中断:需要确认是否发送评论
用户反馈:"不发评论了,只发弹幕"
✅ 恢复后的新任务改写为:
"用户已拒绝发送评论,请直接跳过发送步骤。剩余任务:给当前视频发送弹幕'你好'"
场景 5:无历史信息或实时数据刷新
原始任务:"搜索微博热搜榜前5条"
中断时状态:无明确历史记录,或热搜榜已实时更新
✅ 恢复后的新任务:
"搜索微博热搜榜前5条" (直接重复原任务)
特殊中断类型处理
| 中断类型 | 新任务改写要求 | 示例 |
|---|---|---|
| 登录/验证码 | 明确用户的完成/拒绝意图,保留剩余未完成步骤 | 用户已完成/拒绝<具体操作>。<原始/剩余任务> |
| 敏感操作确认 | 明确用户的同意/拒绝意图,保留剩余未完成步骤 | 用户已同意/拒绝<具体操作>,请直接完成/跳过该操作。<原始/剩余任务> |
| 部分批量操作 | 只要求完成剩余未做的部分 | <剩余任务> |
| 无明确进度 | 直接重复原任务 | <原始任务> |
核心要点:
- 带 session_id 恢复时,必须判断已完成进度,避免重复劳动(但如果是提出了无关的新任务,则直接使用该任务描述即可)
- 人工交互类中断,恢复时必须在新任务中明确说明用户反馈的交互情况
- 保留必要上下文(网站、对象),省略已完成的动作步骤
Error Handling
| Error contains | What to tell the user |
|---|---|
未找到 Chromium 内核浏览器 |
"需要安装 Chromium 内核浏览器(Chrome / Edge / Brave / Arc 等)" |
扩展连接超时 / Failed to initialize browser |
引导用户安装并启用扩展(见下方流程) |
扩展未安装/未启用时的引导流程(用中文告知用户):
- 安装扩展:请在浏览器中打开 Chrome Web Store 安装 AutoClaw 扩展:
https://chromewebstore.google.com/detail/jelniggicmclhfgnlapbkgfibmgelfnpEdge 用户也可以从 Chrome Web Store 安装
- 确认启用:安装后打开
chrome://extensions/,确认扩展已开启 - 关闭所有浏览器窗口后重试
Key Principles
- Check setup first —
mcporter list找不到 server 时,参阅{baseDir}/INSTALL.md - Keep it brief — 简短进度更新,不要冗长解释
- ⚠️ 不支持多任务并发 — Chrome 扩展是单会话模型,同一时间只能运行一个任务
Default Quantity Rule
⚠️ 数量默认值规则:当用户未明确指定需要查看/收集/获取/操作等内容的数量时,默认改写为 5 个。
示例 1:
用户原始指令:"帮我去知乎收集关于agent的文章信息"
改写为:"帮我去知乎收集关于agent的5个文章信息"
Task Capability Boundaries(任务能力边界)
本技能仅支持浏览器操作
核心原则:当前 skill 的能力范围严格限定在 browser_subagent atomic capabilities 所列的原子工具能力范围内——即浏览器自动化操作。
对于用户提出的完整指令,必须按以下原则分解:
1. 识别浏览器部分与非浏览器部分
- ✅ 分配给本 skill 的任务:只能是浏览器操作相关(搜索、点击、滚动等)
- ❌ 不属于本 skill 的任务:本地文件操作(如生成/保存 Excel/Word等等)、本地其他应用操作、命令行操作、数据处理、复杂计算、图像处理、各种其他工具调用等
2. 任务改写规则
当用户指令包含非浏览器操作时,必须剥离非浏览器部分,只把浏览器操作部分发给 browser_subagent。
示例 1:
用户原始指令:"到小红书搜索北京旅游攻略的最多点赞帖子,整理一下他们的标题、点赞数和内容到 Excel 给我"
✅ 分配给本 skill 的任务改写为 (注:用户未指定数量,默认补充为 5 个):
"到小红书搜索北京旅游攻略的最多点赞帖子,收集前5个帖子的标题、点赞数和内容给我"
❌ 剥离的部分(需使用其他技能):
将收集到的信息保存到 Excel 文件
示例 2:
用户原始指令:"到小红书搜索关于 GLM-5 的最新帖子,然后整理前6个帖子的内容到 Excel 给我"
✅ 分配给本 skill 的任务改写为:
"到小红书搜索关于 GLM-5 的最新帖子,然后整理前6个帖子的内容"
❌ 剥离的部分(需使用其他技能):
将整理得到的信息保存到 Excel 文件
3. 执行流程
- 解析用户指令 → 识别浏览器操作 vs 非浏览器操作
- 改写任务 → 只保留浏览器操作部分
- 调用 browser_subagent → 执行浏览器任务
- 获取结果 → 将浏览器任务的输出传递给其他技能(如需要)
- 完成整体任务 → 协调多个技能完成用户的完整需求
关键:不要试图让 browser_subagent 做它能力范围外的事情,否则任务会失败。始终遵循"只分配浏览器操作"的原则。
Complex Task Decomposition(复杂任务拆解)
基本策略
优先尝试一次性完成:默认情况下,应该将用户的浏览器任务完整地发给 browser_subagent 一次性执行。
何时需要拆解:仅在以下情况下才考虑拆解任务:
- 任务过于冗长复杂,一次性执行反复失败
- 任务难度极高,单次执行成功率很低
拆解原则
❌ 不推荐拆解的情况
-
需要从前一个子任务结束页面继续的操作
示例:"在知乎搜索 Python,然后点击第一篇文章,再收藏这篇文章" → 不要拆解,因为后续操作依赖前一步的页面状态 -
在同一网站上的批量操作或批量信息获取
示例:"收藏知乎上和 GPT 相关的最新4篇文章" → 不要拆解,让 subagent 在一个会话中完成所有收藏操作 -
单个连续流程的多步骤操作
示例:"打开微博,搜索杨幂,给最新3条微博点赞" → 不要拆解,这是一个连续的操作流程
✅ 可以拆解的情况
跨网站的独立任务(且一次性执行失败时):
用户指令:"去小红书、知乎上分别搜集和长沙旅游攻略相关的最新5篇帖子的主要信息"
多次执行失败 → 拆解为两个子任务:
子任务 1:"去小红书上搜集和长沙旅游攻略相关的最新5篇帖子的主要信息"
子任务 2:"去知乎上搜集和长沙旅游攻略相关的最新5篇帖子的主要信息"
最后:汇总两部分信息返回给用户
拆解后的信息传递
- 前一个子任务的结果需要传递给后续子任务时,在新任务描述中包含必要的上下文信息
- 所有子任务完成后,需要汇总结果统一返回给用户
判断流程图
用户任务
↓
是否过于复杂且多次执行失败?
├─ 否 → 不拆解,一次性发给 browser_subagent
└─ 是 ↓
是否满足不推荐拆解的情况?
├─ 是(需要延续页面状态/同站批量/连续流程)→ 不拆解,尝试优化任务描述
└─ 否(跨网站独立任务)→ 可以拆解
核心原则:
- 默认不拆解,优先让 subagent 一次性完成
- 谨慎拆解,避免破坏页面状态的连续性
- 必须拆解时,确保前后子任务之间信息传递完整
IM 渠道推送(飞书 / 企业微信等)
飞书截图自动推送(API 方式)
当任务来源于飞书对话时,MCP Server 在任务完成后自动通过飞书 Open API 将截图回复到对应对话中。
工作原理:
- MCP Server 启动时自动从
~/.openclaw-autoclaw/openclaw.json的channels.feishu.accounts读取飞书应用凭据(appId/appSecret) - Agent 调用
browser_subagent时传入feishu_message_id/feishu_chat_id参数(见 Task Execution Workflow 步骤 2.5) - 浏览器任务完成后,MCP Server 通过飞书 Open API 上传截图并发送到对应对话
前提条件:
openclaw.json中已配置飞书 channel 凭据(channels.feishu.accounts.main.appId/appSecret)- 飞书自建应用已开启
im:message、im:image权限 - Agent 在调用时传入了
feishu_message_id/feishu_chat_id
无飞书凭据或未传入飞书参数时:自动推送静默跳过,不影响正常任务执行。
浏览器方式推送(通用方案)
当需要发送到企业微信、钉钉等其他 IM 渠道,或飞书未配置 API 凭据时,通过浏览器操作 IM 网页版完成。
| 渠道 | 网页版入口 | 说明 |
|---|---|---|
| 飞书 | https://www.feishu.cn/messenger/ |
API 未配置时的 fallback |
| 企业微信 | https://work.weixin.qq.com/ |
需先登录企业微信网页版 |
| 钉钉 | https://im.dingtalk.com/ |
需先登录钉钉网页版 |
当用户说"把结果发到飞书群 xxx"、"发给企业微信上的 xxx"等指令时:
- 先完成原始浏览器任务,拿到执行结果和截图
- 新开任务打开对应 IM 网页版
- 如果未登录,通过
interact让用户手动完成登录 - 在 IM 中找到目标会话,发送文本摘要和截图(使用
upload_file上传~/.openclaw-autoclaw/mcp_output/last_screenshot.jpg)
注意:两个任务需要串行执行(不支持并发),第二个任务中 task 描述应包含要发送的结果内容。