[アップデート] 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 に特定トリガーでコマンドを実行し動的なコンテキストを渡せる「コンテキストフック」が追加されていたので試してみました。
コマンドを実行して動的なコンテキストを与えることができるので、コンテキストドキュメント以外の方法を検討される際にはこちらの方法も試してみてください。