BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

【Snowflake】Cortex Code CLI(CoCo CLI)に矛盾する複数のインストラクションを渡すとどうなる?

はじめに

こんにちは。エンタープライズソリューション本部データインテリジェンス部の安倍です。
みなさんはAIコーディングエージェントを活用していますか?

活用している場合、AGENTS.mdやCLAUDE.mdなどの共通コンテキストを渡すためのインストラクションを用意している方も多いと思います。
今回はCortex Code CLIで、複数のインストラクションを渡された場合、どのような挙動をするのか検証してみようと思います。

追記:Snowflake Summit 26でCortex CodeはCoCoに名称変更されています。

前提

Cortex Code CLIは、AGENTS.mdを用意することでセッション開始時にコンテキストを読み込ませることができます。
共通で守ってほしいルール、自身の環境やバックグラウンドなどを記載しておくと、都度入力しなくても読み込んでくれるようになります。

また、Cortex Code CLIは、Claude Codeとの互換性も兼ね備えており、CLAUDE.mdの読み込みや、エージェント用の設定ファイルなども自動で読み込んでくれる特性があります。

今回検証する内容

  • AGENTS.mdとCLAUDE.mdを同一プロジェクト配下に配置
  • それぞれのインストラクションで矛盾した内容を記載


実際にやってみる

まず二つのファイルを用意しておきます。

  • AGENTS.md

    • 日本語で回答するように指示
    • Web検索を用いて最新情報を取得するように指示
    • Windows環境で作業していることを認識させる
  • CLAUDE.md

    • 英語で回答するように指示
    • Web検索は禁止
    • Mac環境で作業していることを認識させる

上記のように、矛盾した指示を埋め込みました。
Cortex Code CLIを起動して、挙動を確認してみます。

AGENTS.mdとCLAUDE.mdの2つのファイルが読み込まれていることがわかります。

ルールを表示させると矛盾していることを認識しているようですが、日本語で回答してきました。
ルールの中で実際の環境と合致する方を優先しているようです。

もう少し深堀をしてみると、現在はこのような制約が課されている状態のようです。

内容が競合している場合、ユーザーの環境や変数などを含む設定をもとに優先される内容が変わるようです。また、キャプチャを見る限り、禁止する行為のほうが優先されているように見えました。
ただ、英語で会話を始めたあとに日本語で話しかけたり、同セッション内でいろいろなシチュエーションを試してみると動作が不安定になったりすることもありました。

もう少し別の方向性で深堀してみます。
色々とルールを設定してどちらのルールをもとに回答しているのかを明示的に出力するようにしてみます。

日本語で話しかけてみるとCLAUDE.mdが優先されたようです。

次は、ほぼ同じ内容だけど中身が少しだけ違う指示をしてみます。

そうするとAGENTS.mdが優先されました。
回答上、AGENTS.mdが優先されると返してきてはいますが、公式ドキュメントには記載されておらず、何とも言えない結果になってしまいました。

矛盾を起こさないために

矛盾を起こさないためには、どちらかのインストラクションを読み込まないようにしてあげることが重要です。
矛盾ではなくても、若干のニュアンスの違いによってエージェントの動作が不安定になるためどちらかに統一してあげた方がよさそうです。
Claude Codeユーザの場合は、AGENTS.mdを読み込まないようにしてCLAUDE.mdに集約してあげた方がよいですし、Claude Code以外のAIコーディングエージェントユーザの場合はCLAUDE.mdを読み込まないようにしてAGENTS.mdに集約してあげた方がよさそうです。
実際の手順は以下です。 Cortex Code CLIを起動後、/settingsで設定画面を開きます。
Instruction Filesの画面でファイル名を編集して保存します。
(削除ができなかったので適当なファイル名に編集しました。)

再度起動してみるとCLAUDE.mdが読み込まれなくなっていました。
他には、setting.jsonを直接編集することでも読み込み対象のファイルを選択することができます。
先ほどの/settingsで編集した内容は自動的にこちらのsettings.jsonにも反映されます。
(キャプチャは一度きれいな状態に戻しました)

次はAGENTS.mdを削除してみます。

起動すると無事、CLAUDE.mdだけが読み込まれました。

まとめ

複数のインストラクションファイルを読み込む場合、命令が矛盾していたりすると動作を不安定にしてしまうことがわかりました。
矛盾しない形で共通的な部分はCLAUDE.md、Snowflakeに特化したものは別ファイルにしてInstruction Filesで読み込み対象に設定するなどしてもいいかなと思いました。

おわりに

BeeXでは、Snowflakeを使ったデータ統合・活用のご支援をいたします。

Snowflakeを使ったデータ活用に関するご相談がございましたら、お気軽にお問い合わせください。

お問い合わせはこちらから