[アップデート] Amazon Q Developer CLI に特定トリガーでコマンドを実行し動的なコンテキストを渡せる「コンテキストフック」が追加されていました
いわさです。
Amazon Q Developer CLI では/contextを使うことで、コンテキストファイルが含まれるファイルパスやディストリパスを指定し、その内容をエージェントとの対話のコンテキストにすることが出来ます。
> /context add hoge.md
Added 1 path(s) to profile context.
> /context show
🌍 global:
    .amazonq/rules/**/*.md 
    README.md 
    AmazonQ.md 
👤 profile (default):
    terraform 
    hoge.md (1 match)
1 matched file in use:
👤 /Users/iwasa.takahito/work/hoge0506qdev/hoge.md (~3640 tkns)
Total: ~3640 tokens
Q Developer CLI の応答精度を上げる上で重要な役割を果たすこのコンテキスト機能ですが、おそらく先月末あたりのアップデートで、新たにコンテキスト管理で/context hooksというコマンドが追加されていました。
Context Hook の解説と使い方
通常の/context addではコンテキストファイルをコンテキスト情報として追加することが出来ていましたが、新しく追加された/context hooksを使うことで、特定のタイミングでコマンドを実行し、動的なコンテキスト情報の設定ができるようになりました。
トリガーとしては対話開始時に一度だけ実行されセッション中コンテキストが有効なconversation_startと、ユーザーがメッセージ送信の度に実行され現在のプロンプトにのみ追加されるper_promptの2つから選択が出来ます。
/helpからもコマンドの追加が確認できます。
% q chat
To learn more about MCP safety, see https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-security.html
Welcome to 
 █████╗ ███╗   ███╗ █████╗ ███████╗ ██████╗ ███╗   ██╗     ██████╗ 
██╔══██╗████╗ ████║██╔══██╗╚══███╔╝██╔═══██╗████╗  ██║    ██╔═══██╗
███████║██╔████╔██║███████║  ███╔╝ ██║   ██║██╔██╗ ██║    ██║   ██║
██╔══██║██║╚██╔╝██║██╔══██║ ███╔╝  ██║   ██║██║╚██╗██║    ██║▄▄ ██║
██║  ██║██║ ╚═╝ ██║██║  ██║███████╗╚██████╔╝██║ ╚████║    ╚██████╔╝
╚═╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═══╝     ╚══▀▀═╝ 
                                                        
:
> /help
:
/context      Manage context files for the chat session
/context      Manage context files and hooks for the chat session
  help        Show context help
  show        Display current context rules configuration [--expand]
  add         Add file(s) to context [--global] [--force]
  rm          Remove file(s) from context [--global]
  clear       Clear all files from current context [--global]
  hooks       View and manage context hooks
:
サンプルコマンドとしては以下が紹介されています。
/context hooks addでトリガーとコマンドを指定します。以下の場合であれば会話の初回に現在のパスをプロジェクト名として引き渡しています。
> /context hooks add hoge --trigger conversation_start --command "echo 'Project: '$(basename $(pwd))"
Added profile hook 'project-info'.
追加後は/context hooksで、追加中のフックを確認することが出来ます。
> /context hooks
🌍 global:
    Conversation Start:
      <none>
    Per Prompt:
      <none>
👤 profile (default):
    Conversation Start:
      hoge
    Per Prompt:
      <none>
Use /context hooks help to manage hooks.
なお、/clearを行うと会話履歴とともにフックで与えたコンテキストも失われます。
> /clear
Are you sure? This will erase the conversation history and context from hooks for the current session. [y/n]:
クラスメソッドについて聞いてみる
たぶんユースケースとして適切ではない使い方なのですが、クラスメソッドについて聞いてみました。
まずはフックなしで聞いてみます。
% q chat
To learn more about MCP safety, see https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-security.html
Welcome to 
 █████╗ ███╗   ███╗ █████╗ ███████╗ ██████╗ ███╗   ██╗     ██████╗ 
██╔══██╗████╗ ████║██╔══██╗╚══███╔╝██╔═══██╗████╗  ██║    ██╔═══██╗
███████║██╔████╔██║███████║  ███╔╝ ██║   ██║██╔██╗ ██║    ██║   ██║
██╔══██║██║╚██╔╝██║██╔══██║ ███╔╝  ██║   ██║██║╚██╗██║    ██║▄▄ ██║
██║  ██║██║ ╚═╝ ██║██║  ██║███████╗╚██████╔╝██║ ╚████║    ╚██████╔╝
╚═╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═══╝     ╚══▀▀═╝ 
                                                        
╭───────────────────────── Did you know? ─────────────────────────╮
│                                                                 │
│       /usage shows you a visual breakdown of your current       │
│                      context window usage                       │
│                                                                 │
╰─────────────────────────────────────────────────────────────────╯
/help all commands  •  ctrl + j new lines  •  ctrl + k fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> クラスメソッドについて教えてください
クラスメソッドは、クラスに属するメソッドで、インスタンスを作成せずに直接クラス名から呼び出すことができるメソッドです。主なプログラミング言語でのクラスメソッドの特徴と実装方法を説明します
。
## Python
Pythonではクラスメソッドを定義するには @classmethod デコレータを使用します:
:
プログラミング言語におけるクラスメソッドの話をしていますね。
コンテキストフックで、クラスメソッド株式会社のコーポレートサイト TOP ページの情報を取得してみました。
このコマンド実行時点では、まだフック自体の実行はされていません。
> /context hooks add hoge --trigger conversation_start --command "curl https://classmethod.jp/"
Added profile hook 'hoge'.
会話を開始してみると、先程と異なり質問を投げかけたあとに何か処理が動いていますね。
これはフックでコマンドが実行されていることを示しています。
以下では 0.42 秒かかっていますね。
> クラスメソッドについて教えてください
✓ hoge finished in 0.37 s
✓ 1 of 1 hooks finished in 0.42 s
このフックはデフォルトで 5 秒後にタイムアウトする仕様になっているらしく、実行時間の長いコマンドは気をつけるようにしましょう。
ただ、私が試した際には 10 秒以上のコマンドも実行出来ました。もう少し確認が必要そうです。
そして、コンテキストフック実行後は次のようにコンテキストが変化し、クラスメソッド株式会社について回答されるようになっていることがわかると思います。
> クラスメソッドについて教えてください
✓ hoge finished in 0.37 s
✓ 1 of 1 hooks finished in 0.42 s
クラスメソッド株式会社は、クラウド、デジタル化、データ分析、生成AIを中心にお客様のビジネス成長に向けた技術支援を行う企業です。
主な特徴:
• 2022年にAWSのグローバル最優秀SIパートナー賞を受賞
• 高い技術力と確かな実績を持ち、事業の質とスピードを高めるサポートを提供
• 日本国内に本社(東京)をはじめ、札幌、仙台、上越、名古屋、大阪、福岡、那覇にオフィスを展開
• 海外にもベルリン、バンクーバー、バンコク、ソウル、ダナンにオフィスを持つグローバル企業
クラスメソッドは特にAWSを中心としたクラウドサービスの導入支援や技術コンサルティングに強みを持ち、デジタルトランスフォーメーション(DX)の推進をサポートしています。企業のビジネス課題解決に向
けて、最新技術を活用した支援を行っています。
さいごに
本日は Amazon Q Developer CLI に特定トリガーでコマンドを実行し動的なコンテキストを渡せる「コンテキストフック」が追加されていたので試してみました。
コマンドを実行して動的なコンテキストを与えることができるので、コンテキストドキュメント以外の方法を検討される際にはこちらの方法も試してみてください。






