メインコンテンツまでスキップ

ネットワークと運用

HTTPS / LAN アクセス

同じネットワークの他デバイス(スマホ、タブレット、PC)からアクセスできます。HTTPS は、 非ローカルホストのオリジンで音声入力やクリップボードに必要なブラウザの Secure Context を有効にします。

APP_HOST=0.0.0.0
APP_SSL_CERTFILE=.certs/cert.pem
APP_SSL_KEYFILE=.certs/key.pem

mkcert を使う手順:

  1. mkcert をインストールし mkcert -install を実行
  2. 証明書を発行: mkcert -cert-file .certs/cert.pem -key-file .certs/key.pem <your-ip> localhost 127.0.0.1
  3. 上記の環境変数を .env に設定
  4. ファイアウォールでポートを許可(本番 8000、開発 5173)
  5. 各クライアント端末に CA 証明書(rootCA.pem)をインストール

LAN からは https://<your-ip>:8000 でアクセス。SSL 未設定なら従来どおり HTTP モードで 動作します(破壊的変更なし)。

社内ネットワーク(TLS 傍受プロキシ)

社内プロキシ(Zscaler, Netskope, オンプレ機器)配下では、Python 同梱の certifi が 社内ルート CA を知らないため、最初の外向き HTTPS 通信が失敗することがあります:

httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed: self-signed certificate in certificate chain

推奨対処は、TLS 検証を OS の証明書ストア経由にする任意の corp extras です:

pip install "chatwalaau[corp]"

ソース変更も環境変数変更も不要で、非社内環境への影響もありません。あるいは明示的な CA バンドルを指定します:

export SSL_CERT_FILE=/path/to/corp-root-ca.pem
export REQUESTS_CA_BUNDLE=/path/to/corp-root-ca.pem

DevUI

デバッグ用に Microsoft Agent Framework の DevUI を有効化します:

DEVUI_ENABLED=true
DEVUI_PORT=8080
# DEVUI_DISABLE_MCP=true # 既定で除外(クロスループ安全性)
# DEVUI_DISABLE_RAG=true # 既定で除外

http://localhost:8080 でアクセス。DevUI はメインエージェント の関数ツール・Skills・モデルクライアントを再利用する専用 Agent インスタンスを受け取り ますが、既定で MCP ツールと rag_search を除外し、DevUI デーモンスレッドとメインの FastAPI イベントループ間のクロスループ呼び出しを回避します。

プロンプトダンプ(モデルが実際に受け取った内容)

回答がおかしいのに設定は正しく見える、というとき、本当に知りたいのは「モデルに実際 何が送られたか」です。プロンプトダンプを有効にします:

PROMPT_DUMP_ENABLED=true
# PROMPT_DUMP_DIR=.prompts # 既定値

run ごとにタイムスタンプ付き Markdown ファイルが書かれ、組み立て済みシステムプロンプト (初回ターンのみ。セッション中は凍結されるため)、流れる会話、そして ツールサーフェス が記録されます。プロンプト内容はファイルにのみ出力され、ログにはメタデータのみが残ります。

システムプロンプト内では、各ツールの使い方ガイダンスがツールごとに <tool-guide name="weather"><tool-guide name="rag"> … のラベル付きブロックに まとめられるため、どの指示がどのツールに属するか一目で分かります。

用が済んだら無効化してください。ファイルは蓄積し、会話内容を含みます。

ツールサーフェス

ツールサーフェスのセクションは、組み込み関数・MCP サーバとツール・Skills を、 そこに無いものも理由付きですべて列挙します:

### Built-in functions (4 active / 13 excluded)

- file_write ACTIVE approval: always_require
- bash_execute EXCLUDED allowlist
- rag_search EXCLUDED settings (CHROMA_DIR unset or no embeddings offering)
- manage_cron EXCLUDED settings (CRON_ENABLED=false)

### MCP (1 active server / 1 excluded / 1 warning)

- github ACTIVE 2/14 tools
- create_issue ACTIVE
- delete_repo EXCLUDED mcp override
- filesystem EXCLUDED allowlist (server not selected)
- slack WARNING not connected; allow-list not applied

理由は、そのゲートを所有している画面を指しています:

理由どこで直すか
settings.env。行に変数名または不足しているモデル offering が示されます
allowlistDeclarative Agent エディタのツール選択
mcp overrideMCP ツールマネージャ
skills overrideSkills マネージャ
not connectedMCP サーバが未接続。接続後に Reload してください

MISMATCH の行は、ビルドされたエージェントと設定が説明のつかない形で食い違っている ことを示します(あるはずのツールが無い、または逆)。これは設定の問題ではなく不具合です。 ダンプを保存して報告してください。

WARNING not connected の行は別の意味で重要です。サーバが未接続の間はツール名が不明 なため、ツール単位の許可リストを適用できず、接続された時点でそのサーバの全ツールが 公開されます。

このセクションはシステムプロンプトと異なり毎ターン書かれます。MCP マネージャ、Skills マネージャ、Declarative Agent の切り替えによって、セッション途中でもツール構成が変わり うるためです。digest 行を見れば、どのターンで変化したかが一目で分かります。