X

コマンドの文字数制限をファイル読み込みで回避する設定

環境構築・初期設定

コマンドラインに長い文章を渡すときの不安

親フォルダの共通システムを使って、
コマンドラインからAIの会議機能を呼び出す運用を少しずつ進めています。
ただ、実際に使っているうちに、
ひとつ気になることが出てきました。

短いテーマを一行で相談するだけなら今のままでも問題ないのですが、
これから長い仕様書やプログラムのコードをまとめて渡したくなったとき、
コマンドプロンプトの文字数上限に引っかかるのではないかという疑問です。

パソコンの黒い画面に直接何千文字もの文章を貼り付けるのは、
見るからに無理がありそうですし、
途中で文字が切れたりエラーで止まったりしたら作業になりません。
そこで、いったんテキストファイルやマークダウンファイルに内容を書き出し、
そのファイルを読み込ませるように指定すれば、
文字数制限に苦しまずに済むのではないかと思いAIに聞いてみました。

機能はあったのにルールに書き忘れていたこと

相談してみたところ、
やはりWindowsのコマンドラインには厳格な文字数の上限があるとのことでした。
コマンドプロンプトでは約8,000文字、
PowerShellなどでも約32,000文字を超えると、
コマンドが長すぎるというエラーが出てその場で止まってしまうそうです。

素朴な疑問があながち間違いではなかったことに少し安心したのですが、ここからが少し予想外の話でした。
実は、親フォルダで動かしている実行スクリプトの内部には、
最初から文字数制限を回避するための仕組みが組み込まれていたのです。

すでに用意されていた2つの仕組み

AIの説明によると、プログラム側には以下の2つの対策が最初から入っていました。

・コマンド引数ではなく標準入力(`stdin`)のパイプを使って内部で文章を流し込む処理
・`--file` オプションを使ってマークダウンやJSONファイルを直接読み込む機能

つまり、システム自体は最初からファイル読み込みに対応していたわけです。
それなのになぜ使えていなかったかというと、
エージェント自身が参照するルール指示書ファイルの中に、
その `--file` オプションを使う手順が書かれていなかったからでした。

短い文章を直接コマンドに書く方法しかルールに載せていなかったため、
せっかく用意されていたファイル読み込み機能が誰にも使われないまま眠っていたことになります。
道具箱に道具は入っていたのに、
説明書に書き忘れたせいで存在を忘れていたようなもので、
なんとも抜けた話だなと思いました。

ルールファイルの修正と初期設定への組み込み

原因がはっきりしたので、さっそくルールファイルの中身を書き直してもらうことにしました。
短いテーマのときはそのままコマンドに文字を書き、
長文やコードを含むときは作業用の一時ファイルに書き出してから、
`--file` オプションを付けて実行するように手順を分けて記載してもらいます。

# 長文やコードを含む場合の実行手順
python [親フォルダの実行スクリプト] --workspace . council --file [一時ファイルのパス]

あわせて、今後新しく作るプロジェクトで毎回同じ追記をしなくて済むように、
親フォルダにある初期設定の展開用スクリプトにもこのルールを組み込んでもらいました。
親側のテンプレートを直しておけば、
次に別の作業フォルダを作ったときも、
最初から文字数制限の対策が入った状態でスタートできます。

新しいプロジェクトフォルダへの適用と今日の学び

ちょうどこの日は、資産計画を整理するための新しいプロジェクトを、
別フォルダとして立ち上げようとしていたタイミングでした。
そこで、更新したばかりの初期設定システムを使って、
さっそく新しいフォルダにも共通環境を適用してもらいました。

コマンドを実行すると、以下のファイルが一括で配置されました。

・親データベースへの接続設定ファイル
・ファイル入力の手順が追加されたルール定義書
・危険なコマンドを防ぎつつ会話ログを記録するフック設定ファイル

親データベースとの疎通テストも問題なく通り、
最初から長文の相談にも対応できる状態で新しい作業フォルダの準備が整いました。

今回のやり取りを通じて、
プログラムに便利な機能を作るだけでなく、
それをどういう手順で使うかというルール側の記述も揃えておかないと、
せっかくの仕組みが活かされないということを学びました。
「文字数が溢れたりしないのかな」という小さな疑問をそのまま放置せず、
早めに確認してみてよかったです。

関連記事