OpenSource-Hub

page-agent

ライブラリ

alibaba/page-agent

自然言語でWebページのインターフェースを制御するJavaScriptライブラリ。

概要

Page Agent は、ウェブページに組み込まれた GUI エージェントで、テキストによる DOM 操作を通じてインターフェースを制御します。スクリーンショット、マルチモーダルモデル、ブラウザ拡張機能は不要で、カスタム LLM をサポートしています。script タグまたは npm パッケージを使って、任意のウェブページに簡単に統合できます。

README プレビュー

# Page Agent\n\n\n  \n  \n\n\n[](https://opensource.org/licenses/MIT) [](http://www.typescriptlang.org/) [](https://bundlephobia.com/package/page-agent) [](https://www.npmjs.com/package/page-agent) [](https://github.com/alibaba/page-agent)\n\nThe GUI Agent Living in Your Webpage. Control web interfaces with natural language.\n\n🌐 **English** | [中文](./docs/README-zh.md)\n\n🚀 Demo | 📖 Docs | 📢 HN Discussion | 𝕏 Follow on X\n\n\n\nhttps://github.com/user-attachments/assets/a1f2eae2-13fb-4aae-98cf-a3fc1620a6c2\n\n---\n\n## ✨ Features\n\n- **🎯 Easy integration**\n    - No need for `browser extension` / `python` / `headless browser`.\n    - Just in-page javascript. Everything happens in your web page.\n- **📖 Text-based DOM manipulation**\n    - No screenshots. No multi-modal LLMs or special permissions needed.\n- **🧠 Bring your own LLMs**\n- **🐙 Optional [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension) for multi-page tasks.**\n    - And an [MCP Server (Beta)](https://alibaba.github.io/page-agent/docs/features/mcp-server) to control it from outside\n\n## 💡 Use Cases\n\n- **SaaS AI Copilot** — Ship an AI copilot in your product in lines of code. No backend rewrite.\n- **Smart Form Filling** — Turn 20-click workflows into one sentence. Perfect for ERP, CRM, and admin systems.\n- **Accessibility** — Make any web app accessible through natural language. Voice commands, screen readers, zero barrier.\n- **Multi-page Agent** — Extend your own web agent's reach across browser tabs [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension).\n- **MCP** - Allow your agent clients to control your browser.\n\n## 🚀 Quick Start\n\n### One-line integration\n\nFastest way to try PageAgent with our free Demo LLM:\n\n```html\n\n```\n\n> **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you ag

FAQ (5)

トラブル対応
Viteのプロダクションビルドでesbuildのdrop consoleを使用した場合に発生する'TypeError: debug is not a function'を修正する方法

これは page-agent / @page-agent/llms 1.12.1 に影響します。このパッケージは、var debug = console.debug.bind(...) でローカルロガーをバインドしています。esbuild が drop: ['console'] を使用すると、その式は var debug = void 0 に書き換えられるため、本番環境で後続の debug(...) 呼び出しが失敗します。debug はモジュールローカルであるため、globalThis.debug を設定しても機能しません。

恒久的な修正: issue #621 の修正を含むリリースに page-agent と @page-agent/llms をアップグレードしてください。この修正では、バインドされた console.debug を直接保存する代わりに、ロガーが関数でラップされています。

一時的な回避策(利用者側): バンドルで console の削除を無効にします。vite.config.ts で:

export default defineConfig({
  esbuild: {
    drop: []
  }
})

このオプションが VitePress や他のプリセットによって注入されている場合は、Vite プラグインで強制的に上書きします:

function keepConsole() {
  return {
    name: 'keep-console',
    configResolved(config: any) {
      if (config.esbuild && typeof config.esbuild === 'object') {
        config.esbuild.drop = []
      }
    }
  }
}

export default defineConfig({
  plugins: [keepConsole()]
})

あるいは、dist/lib/page-agent-llms.js に安全なラッパーでパッチを適用します:

var debug = (...args) => {
  if (typeof console !== 'undefined' && typeof console.debug === 'function') {
    console.debug(chalk.gray('[LLM]'), ...args)
  }
}

ビルド出力に debug=void 0 が含まれていないことを確認します:

grep -n "debug=void 0" dist/assets/*.js

参照 Issue #621
トラブル対応
なぜPage Agentが検索ボックスに入力すると、Bingの検索候補が失敗するのですか?

Chrome 152/macOS 上の Page Agent 1.12.2 では、inputTextElement() が weather tomorrow などのテキストを入力した後に入力フィールドを強制的にブラーさせるため、Bing がサジェストを表示しません。この問題は PR fix(page-controller): preserve input focus で修正されています。Page Agent をその PR を含むリリースにアップグレードするか、page-controller のフォーカス修正がマージされた状態でソースからビルドしてください。inputTextElement() の実行後も入力フィールドはフォーカスを維持し、Bing のサジェストが表示されるようになります。一時的な回避策として、自動テキスト入力の後に検索ボックスを明示的に再フォーカスし、input イベントをトリガーしてください。

参照 Issue #711
トラブル対応
MV3 service workerが非アクティブであるためにブラウザ拡張機能が応答しなくなり、メッセージを無視する問題を修正するには?

この問題は v1.7.1 で発生し、拡張機能の更新後に Manifest V3 service worker がストールした場合に起こります。Chrome/Brave は更新時に登録済みの alarm をクリアすることがあり、その結果バックグラウンドワーカーが正しく再起動できなくなります。回避策として、brave://extensions(または chrome://extensions)を開き、該当する拡張機能を見つけ、Reload ボタンをクリックしてから、agent chat を開き直してください。それでも固まったままの場合は、拡張機能をオフ/オンに切り替えるか、ブラウザを再起動してください。恒久的な修正は、ストールしたワーカーのヘルスチェックと service worker の alarm/更新の修正を含むリリースへ拡張機能をアップグレードすることです。

参照 Issue #452
トラブル対応
v1.10.0でカスタムMiniMax M3モデルが動作しない問題を修正する方法

refactor(llms): rewrite model patching and deprecate temperature の修正を含むリリースにアップグレードするか、最新の main ブランチからビルドしてください。この障害は、MiniMax M3 がパラメータスキーマを変更したことが原因で発生しました。更新されたモデルパッチは、現在のスキーマに一致するパラメータを送信します。アップグレード後、temperature は非推奨となったため、手動で設定している temperature の設定はすべて削除してください。OpenRouter 経由で M3 を使用している場合、モデルが無効な int/string 形式を返すことがあるため、ツール呼び出しが引き続き失敗する可能性があります。この問題はモデル/プロバイダー側で修正される必要があるため、回避策としてサポート対象のモデルを使用するか、MiniMax への直接アクセスを利用してください。

参照 Issue #564
トラブル対応
なぜ wait ツールは AbortSignal が abort されても、すぐに reject しないのですか?

これは、issue #553をクローズするコアPR fix(core): make wait honor abort during setup によって修正されています。以前は、wait はタイマーが開始される前にページ更新タイミングを読み取る間、abortを無視することがありました。この修正を含むリリースにコアパッケージをアップグレードしてください。アップグレード後は、シグナルをabortすると、タイマーの開始を待つのではなく、セットアップ中に wait が直ちに中断されます。すでにabortされた AbortController.signal を wait に渡して確認してください。

参照 Issue #553