🐙

WSL環境でのOpenManus実行時のブラウザ問題と解決策

に公開

先日OpenManusという無料でローカル環境のLLmを使えば、外部にログが残らないというエージェントを知りました。
最初は、Windows11でリポジトリのクローンを作り試していたのですが、ブラウザが起動しないことや、回答を得られずエラーが出るなど大変な思いをしました。
ネットで調べているとWindowsでは、WSLを使うと良いということを知りました。
またAnacondaを使うと良いことも、知りました。
WSLにAnacondaをインストールして、仮想環境を作り直して試行錯誤しました。
cursorを活用して、なんとか使えるようにできました。
ブラウザが起動して、地図にもアクセスできるようになりました。

今回の体験は、こちらにイシューで投稿しました。
https://github.com/mannaandpoem/OpenManus/issues/747
修正した内容は、イシューに投稿した記事で確認してください。

このように、活用できています。

Chromeも起動できるようになりましたので、自動でウェブページにアクセスしている様子を確認できます。

OpenManusのリポジトリが増えてきたので、私が使ったリポジトリをご紹介します。
https://github.com/mannaandpoem/OpenManus/

config/config.toml

設定ファイルの内容は、このようになっています。
最初LMStudioを使って試したので、その情報も含まれています。
今は、GeminiのAPIを使う設定になっています。

#Global LLM configuration
[llm]
model = "gemini-2.0-flash"
base_url = "https://generativelanguage.googleapis.com/v1beta/"
api_key = "*************"
max_tokens = 8000
temperature = 0.0

# [llm] #LLMStudio:
# api_type = 'LM-Studio'
# model = "phi-4-mini"
# base_url = "http://*****:1234/v1"
# api_key = "LM-Studio"
# max_tokens = 4096
# temperature = 0.0

# Optional configuration for specific LLM models
[llm.vision]
model = "claude-3-7-sonnet"            # The vision model to use
base_url = "https://api.openai.com/v1" # API endpoint URL for vision model
api_key = "sk-..."                     # Your API key for vision model
max_tokens = 8192                      # Maximum number of tokens in the response
temperature = 0.0                      # Controls randomness for vision model

# [llm.vision] #OLLAMA VISION:
# api_type = 'ollama'
# model = "llama3.2-vision"
# base_url = "http://localhost:11434/v1"
# api_key = "ollama"
# max_tokens = 4096
# temperature = 0.0

# Optional configuration for specific browser configuration
[browser]
# Run browser in headless mode for WSL
headless = false # GUIを表示
# Disable browser security features for WSL compatibility
disable_security = true
# Extra arguments for WSL browser
extra_chromium_args = [
    "--no-sandbox",
    "--disable-gpu",
    "--disable-dev-shm-usage",
    "--disable-setuid-sandbox",
    "--remote-debugging-port=9222",
    "--remote-debugging-address=0.0.0.0",
]
# Connect to a browser instance via CDP
cdp_url = "http://localhost:9222"

# Optional browser instance path (comment out if not needed)
# chrome_instance_path = "/usr/bin/google-chrome"

# Optional configuration, Proxy settings for the browser
# [browser.proxy]
# server = "http://proxy-server:port"
# username = "proxy-username"
# password = "proxy-password"

# Optional configuration, Search settings.
# [search]
# Search engine for agent to use. Default is "Google", can be set to "Baidu" or "DuckDuckGo".
#engine = "Google"

ChatGPT GPT-4oが作ってくれたファイル

最終的なデバッグと修正は、cursorを使いました。
このファイルを起動してから、main.pyを実行すると良いです。

#launch_browser.py

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    print("Launching Playwright browser...")
    browser = p.chromium.launch(
        headless=False,  # GUIを表示
        args=[
            "--remote-debugging-port=9222",
            "--remote-debugging-address=0.0.0.0",
            "--disable-gpu",
            "--disable-software-rasterizer",
            "--disable-setuid-sandbox",
            "--disable-dev-shm-usage",
            "--no-sandbox",
            "--no-zygote",
        ],
    )

    # 新しいコンテキストとページを作成
    context = browser.new_context()
    page = context.new_page()

    # OpenManusの初期ページを表示
    page.goto("about:blank")  # 空白ページを表示
    page.set_content(
        """
    <html>
        <head>
            <title>OpenManus Browser</title>
            <style>
                body {
                    font-family: Arial, sans-serif;
                    margin: 40px;
                    background-color: #f5f5f5;
                }
                .container {
                    background-color: white;
                    padding: 20px;
                    border-radius: 8px;
                    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
                }
                h1 {
                    color: #333;
                    margin-bottom: 20px;
                }
                .status {
                    color: #4CAF50;
                    font-size: 18px;
                }
                .info {
                    margin-top: 20px;
                    color: #666;
                }
            </style>
        </head>
        <body>
            <div class="container">
                <h1>🤖 OpenManus Browser</h1>
                <div class="status">✅ ブラウザが正常に起動しました</div>
                <div class="info">
                    <p>デバッグポート: <code>http://localhost:9222</code></p>
                    <p>このウィンドウは開いたままにしてください。</p>
                    <p>OpenManusがこのブラウザを使用して操作を行います。</p>
                </div>
            </div>
        </body>
    </html>
    """
    )

    print("Browser is running with remote debugging at: http://localhost:9222")
    print("Playwright browser launched successfully. Keep this process running.")

    try:
        input("Press Enter to exit...")
    finally:
        context.close()
        browser.close()


イシューのコメント日本語にしたのが良くないと言われたので

イシューのコメントで、英語や中国語で開発しているので、日本語でメッセージが表示されるのは良くないという内容のコメントがありました。
それで、多言語化できるように、コードを作りました。
こちらのイシューも、ご確認いただけますと嬉しいです。
https://github.com/mannaandpoem/OpenManus/issues/755

今後取り組みたいこと

現在エージェントの回答が、ターミナルに表示されます。
その中でエージェントが確認を求めても、そのまま進んでしまうことや、メッセージが分かりやすくできないか改善できたらと思いました。
WebUIを付けることができたら、良いかもしれないです。

Discussion