Universal File Opener CLI について
Universal File Opener CLIは、AIエージェントのワークフロー向けにファイルを検査、読み取り、編集、クリーニングするローカル・オフラインツールです。ハッシュ検証で編集を保護し、未変更部分を維持して、各操作のレシートを作成します。
主な機能
- 01隠しコンテンツや不審なテキストの検査
- 02出所情報付きのファイル内容抽出
- 03ハッシュと内容条件による編集保護
- 04隠しコンテンツを除いたコピーの作成
- 05各操作のJSONレシート生成
活用シーン
- 01受領した文書の隠れた指示の確認
- 02指定した段落、セル、スライドの抽出
- 03元ファイルを上書きせずに文書を編集
- 04ファイルのクリーニング後に除去記録を確認
MCP 対応
ローカルMCPサーバーを備え、MCPクライアントからファイルを検査・処理できます。CLIはクライアント設定テンプレートを出力できますが、出力だけではサーバーは登録されません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
UFO CLI
AI エージェントが扱うすべてのファイルに使える、ローカルツールです。 受け取ったファイルに隠れているものやリスクのある内容を見つけます。AI への指示として書かれたテキストも含めて読み取り、ファイルを壊さずに変更し、クリーンなコピーを返します。Linux 向けのオフライン CLI とローカル MCP サーバーが一体となっており、各ステップで JSON のレシートを出力します。
- 検出。
ufo inspect --deepは、対応形式のコメント、変更履歴、隠しテキスト、非表示のシート・行・スライド、発表者ノート、ドキュメントのプロパティ、マクロ、埋め込みファイルを報告します。テキストスキャンでは、AI アシスタントへの指示として読める行、個人データや認証情報のパターン、紛らわしい文字体系が混在した単語にフラグを立てます。また、ドキュメントの名前を装って持ち込まれたプログラムも特定します。ufo inspect --humanは、同じ検出結果を読みやすく表示します。 - 読み取り。
ufo textは出典情報付きでコンテンツを抽出し、--format structureを指定するとアドレスとハッシュも追加されます。ufo capabilities --fileを使うと、エージェントは特定のファイルに対して可能な操作を確認できます。範囲を限定した読み取り、候補となる編集とその正確なヘルプ、または処理を中止すべき理由が示されます。 - 変更。 Word、Excel、PowerPoint、PDF、JSON、CSV、テキストファイルへの保護付き編集では、元ファイルのハッシュと想定される内容を確認し、新しいコピーを書き出します。元ファイルが上書きされることはありません。変更していないパッケージ部分と対象外の値は、正確なバイト列を保持します。また、
ufo text --format structure --targetsは、選んだ変更に必要な正確なガードテンプレートを生成します。 - 返却。
ufo cleanは検査で見つかった削除可能な隠しコンテンツを含まないコピーを書き出します。レシートには、削除したものと削除しなかったものが記載されます。
検査結果には、カバー範囲の不足も報告されます。不明なファイルについて基本情報が得られても、その形式に専用のリーダー、エディター、セキュリティ検査機能があるとは限りません。また、検出結果は参考情報であり、UFO はウイルス対策ソフトではなく、コンテンツの安全性を保証するものでもありません。ファイルとリソースには制限が適用されます。
個人および小規模チームは無料で利用できます。 すべてのコマンドと対応ファイル形式を、登録やウォーターマークなしで利用できます。資金調達分を含む年間収益が 100 万米ドル未満で、従業員が 10 人未満の組織が対象です。どの組織も無料で評価できます。利用資格の詳細をご覧ください。
ウェブサイトおよび他のエージェントツールとの比較:https://universalfileopener.com/cli/
インストール
Linux x86_64 にネイティブインストールするには、glibc 2.35 以降が必要です(Ubuntu 24.04 および Debian 12 でテスト済み)。Alpine/musl へのネイティブインストールはサポートされていません。Java ランタイムは同梱されています。以下のコンテナーオプションでは、コンテナー独自のランタイムを使用します。
curl -fsSL https://universalfileopener.com/install.sh | sh
ufo doctor
ufo skill install --agent claude-code --dir "$PWD"
install.sh は最新のリリースからアプリケーションイメージをダウンロードし、リリースの SHA256SUMS と照合して検証したうえで、sudo を使わずに ~/.local にインストールします。同じリリースには Debian パッケージ(sudo apt install ./universal-file-opener_1.10.2_amd64.deb)と、オフライン転送用のコンテナーイメージアーカイブ ufo-cli-1.10.2-docker.tar もあります。
コンテナー
report.docx があるディレクトリで、公開イメージをダウンロードして実行します。
docker run --rm --network none --read-only --cap-drop ALL \
--user "$(id -u):$(id -g)" --security-opt no-new-privileges \
--pids-limit 128 --cpus 2 --memory 1g \
--tmpfs /tmp:rw,nosuid,nodev,size=256m \
--mount type=bind,src="$PWD",dst=/input,readonly \
ghcr.io/krauqllc/ufo-cli:1.10.2 text /input/report.docx
GitHub へのログインは不要です。一時マウントは必須です。編集する場合は、書き込み可能な別の出力フォルダーを /output にマウントし、そこに新しいファイルを指定してください。コンテナーはテキストの読み取り、編集、認識を行います。ページのレンダリングと Office から PDF への変換には、アプリケーションパッケージが必要です。変更不可能なイメージに固定したデプロイには、リリースノートに記載されているダイジェストを使用してください。
エージェントを接続する
プロジェクトフォルダーで実行します。Cursor の場合は
ufo skill install --agent cursor --dir "$PWD" を使用します。Codex の場合は
ufo skill install --agent codex --dir "$PWD" --replace を使用します。プロジェクトの
AGENTS.md のうち、マークされた UFO セクションのみを追加または更新し、それ以外は保持します。
ガイドをインストールした後、新しいセッションを開始してください。
スキルではなく MCP クライアントを使う場合は、ufo mcp print-config --client claude-code
でテンプレートを出力できます。実行ファイルとフォルダーのプレースホルダーを置き換えてから、
クライアントの設定に統合してください。出力してもサーバーは登録されません。
完全なセットアップ手順に従ってください。
最初に役立つ結果を得る
このリポジトリをクローンし、Python 3.10+ と jsonschema をインストールした状態で、次を実行します。
python3 tools/cli/first_run_demo.py --ufo "$(command -v ufo)" \
--expect-version 1.10.2 --output first-look --mcp
短いサンプルでは、架空の入力ファイルを2つ生成します。見慣れないファイルの基本情報を収集し、
対応している DOCX のドキュメントプロパティ、レビュー担当者のコメント、非表示のテキストを見つけ、
クリーンなコピーを書き出します。保存された ZIP/XML のバイト列、元のハッシュ、完全なレシートスキーマ、
既存の出力を置き換えないことをそれぞれ独立して確認します。first-look/START_HERE.txt を開いて結果を確認してください。
すべての notInspected の欠落と、スキップされたクリーンアップカテゴリは証跡に残ります。
任意の MCP チェックではツールを検出し、ローカル stdio 経由で検査を呼び出します。
インストール済みのアシスタントが正常に接続されていることを確認するものではありません。
複数形式のファイルを扱う編集ワークフロー全体を見る
64秒の動画を見る。続いて ワークフローを検査して再生することができます。 架空の変更依頼に基づき、スプレッドシートのモデル、ネイティブの変更履歴を含む Word のメモ、 およびボード資料のスライド2枚を更新します。
動画では、ダウンロード可能なファイルを実際に Microsoft Office からエクスポートしたものを使用しています。 再生に必要なのは Python 3 と UFO のみで、エージェントやモデル API は必要ありません。 再計算された保存結果20件すべて、既存の数式、以前の期間、ネイティブな Word の変更履歴、 元のハッシュ、変更されていないパッケージの各要素を確認します。すべての編集がドライランの出力ハッシュと一致します。 意図的に古くしたソースハッシュは拒否されます。これは編集済みスクリプトのデモであり、 エージェントの記録でも、処理時間のベンチマークでもありません。
効率的な作業
必要な操作のヘルプを読んでください:ufo edit paragraphs --help。ufo find --text 'budget' --compact report.docx で
テキストを検索し、ufo text --format structure --compact で選択した段落、セル、スライドを読み取ります。
同じファイルへの独立した変更はまとめて実行し、次の編集には出力レシートのハッシュを再利用してください。
監査記録が必要な場合は、完全なレシートを保存してください。
--compact は text、find、inspect --deep、edit で使用できます。intake、
convert、unpack では使用できません。MCP の場合は tools/list のスキーマを確認してください:
find はファイルを1つ受け取り、report には出力パスが必要です。
すべての編集操作では --expect-sha256(MCP では options.expectedSha256)を受け付けるため、
ソースが古くなっている場合は編集せずに拒否されます。他の操作のフラグを流用するのではなく、
各操作のヘルプでその他のフラグを確認してください。見慣れないファイルの場合は、
ufo capabilities --file FILE から始めてください。レシートでスキップされた項目を必ず確認し、
引き渡す前に出力を検査してください。
このリポジトリの内容
バイナリはリリースページにあります。このリポジトリには、 バイナリを確認するために必要なものが含まれています。
| パス | 内容 |
|---|---|
docs/cli/schemas/ | CLI が出力するすべてのレシートとレポートの JSON スキーマ |
tools/cli/first_run_demo.py | 見慣れないファイルの確認と検査/クリーンコピーの短い例。独立した検証付き |
tools/cli/own_file_evaluation.py | 独自のファイルで UFO を実行します。読み取り、元に戻せる編集、および各出力の独立した検証を行います |
tools/cli/evaluate_sample.py | 生成されたサンプルファイルを使ったエンドツーエンドの評価 |
tools/corpus/compare_agent_tools.py | 同じタスクと検証による、他のエージェント向けファイルツールとの比較 |
tools/corpus/realworld_corpus_manifest.tsv | 比較で使用する公開ファイルと、その出典および SHA-256 |
tools/corpus/download_realworld_corpus.py | それらのファイルをダウンロードし、1 つずつ検証します |
tools/ 以下のその他のファイルは、これらからインポートされるヘルパーです。Python
3.10 以降、レシートの検証に使う jsonschema、およびインストール済みの UFO ビルドが必要です。
レビュー済みの配布ソースは、packaging/npm/、
packaging/linux-cli/registry/、packaging/homebrew/ にもあります。これらのラッパーと
記述ファイルは、同じ Linux x86_64 リリースを対象としています。
Homebrew tap は公開されています。Homebrew 7
では、信頼するよう設定した後にのみ、他の tap から formula を読み込みます。
brew trust --formula krauqllc/ufo/ufo を実行してから、brew install krauqllc/ufo/ufo を実行してください。
このリリースでは、互換性のある Linux クライアント向けに、完全なローカル
MCPB バンドルも提供しています。これは
公式 MCP Registry
に掲載されています。
ディレクトリリビジョン 1.10.2-1 は、対応する 1.10.2 エンジンとバンドルを提供します。
バンドルのインストール時に選択できるのは、既存のタスクフォルダーのみです。デフォルトでは
どのディレクトリにもアクセス権は付与されません。npm パッケージ
@krauq/ufo-cli は、
同じ検証済みランタイムをインストールします。バージョン 1.10.2 は、公開者が 2FA で
承認すると掲載されます。承認状況は npm view @krauq/ufo-cli versions で確認できます。npm 12 では、
npm install --global @krauq/[email protected] --allow-scripts=@krauq/ufo-cli を実行してください。
npm 11 以前では、--allow-scripts を省略し、インストールスクリプトを有効にしたままにしてください。
このラッパーは、この Linux ランタイムを検証してインストールします。Smithery と Glama
へのアカウント申請は、それぞれ別途対応が必要です。
ご自身で確認する
UFO=$(command -v ufo)
python3 tools/cli/evaluate_sample.py --ufo "$UFO" --expect-version 1.10.2 --output sample-result
python3 tools/cli/own_file_evaluation.py --files ~/my-files --ufo "$UFO" --expect-version 1.10.2 --output my-files-report
python3 tools/corpus/download_realworld_corpus.py --download --output corpus
python3 tools/corpus/compare_agent_tools.py --download --corpus tools/corpus/realworld_corpus_manifest.tsv --corpus-root corpus --ufo "$UFO"
--download は、他のツールの固定バージョンのリリースを取得します。また、
--setup-libraries は、比較で使用する Python ライブラリ環境を作成します。
どちらも初回のみネットワーク接続が必要ですが、実行時には必要ありません。
ライセンス
このリポジトリ内のファイルは Apache 2.0(LICENSE、NOTICE)でライセンスされています。バイナリは
ENGINE-LICENSE.txt に基づいてライセンスされています。個人、評価、教育、非商用での利用に加え、
従業員が 10 人未満で、資金調達を含む年間収益が 100 万米ドル未満の組織は無料で利用できます。
それより規模の大きい組織には、
ライセンスが必要です。
提供されたファイルを ufo license install ./license.json でインストールし、その後
ufo license status を実行してください。支払い期間ごとに新しいファイルが届きます。更新分は
ufo license install ./license.json --replace でインストールしてください。検証はオフラインで行われます。
納品または復旧に関するサポートが必要な場合は、注文番号を添えて [email protected] までお問い合わせください。
セキュリティ
セキュリティ上の問題は、件名に「Security」と記載して [email protected] までご報告ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。