[アップデート] Amazon Q Developer で会話履歴がローカルに保存され、過去の会話を再表示したりエクスポートできるようになりました
いわさです。
Amazon Q Developer のドキュメントを眺めていて気がついたのですが、Amazon Q Developer の IDE 上のチャット履歴がローカル上に保存されるようになったようです。
これによって IDE 上から Q との過去のチャット履歴を再表示したり、エクスポートできるようになりました。
使い方を確認し、会話履歴がどこに保存されているのか気になったのでそのあたりを紹介したいと思います。
使い方
おそらく数日前からなのですが、Visual Studio Code の Q チャット画面に次のアイコンが表示されるようになっています。
上記アイコンを押すと、会話履歴が表示されます。
表示される会話履歴は現在 IDE で開いているワークスペースの会話履歴となります。他のワークスペースの会話履歴は表示されません。
以下は別のワークスペースで確認した会話履歴です。Q Developer で日本語が使えるようになった時のものですね。2 週間くらい前だったと思います。Last Month ではないな。
過去の会話内容を展開する
会話履歴一覧から過去の会話を開くと、対象の会話内容がチャット画面に展開されます。
過去に返答してもらった内容も含まれているのですが、上記の「Azure Function の ~ 」の内容はなぜか開くことが出来ず、現在開いているチャット画面で再表示されるだけでした。不具合がまだあるかもしれない。
会話内容をエクスポートする
また会話のエクスポートも可能でして、会話履歴画面から対象を選択し Export を選択します。
出力形式はマークダウンか HTML 形式が選択可能なのですが、私が確認した時には HTML は文字化けしていました。
会話履歴の保存先
この会話履歴、もしかしてサーバーサイドに保存されてるの?それは困るなぁと最初思ったのですが、ドキュメントを確認してみるとローカルに保存されているものとのことでした。
Amazon Q stores your conversations on your local computer, in your home directory.
Viewing, deleting, and exporting the Amazon Q Developer conversation history - Amazon Q Developer より
確認してみるとホームディレクトリの.aws/amazonq/history
配下にワークスペースごとの会話履歴データが JSON で保存されていました。
JSON ファイルの内容は次のような形です。
history % pwd
/Users/iwasa.takahito/.aws/amazonq/history
history % cat chat-history-dc1f7ad2641a66a479248ad0204e61d5.json | jq
{
"filename": "chat-history-dc1f7ad2641a66a479248ad0204e61d5.json",
"collections": [
{
"name": "tabs",
"data": [
{
"historyId": "64ec6d6e-bbd2-4dad-a351-6d426afa3baa",
"updatedAt": 1744191276250,
"isOpen": true,
"tabType": "cwc",
"title": "「/dev」も日本語が使えますか",
"conversations": [
{
"conversationId": "1a4e736b-6332-4b88-b717-78f7b90b293d",
"clientType": "IDE-VSCode",
"messages": [
{
"body": "日本語はつかえますか",
"type": "prompt"
},
{
"body": "はい、日本語で対応可能です。ITやプログラミング、ソフトウェア開発に関する質問について、日本語でお答えすることができます。どのようなご質問でしょうか?",
"type": "answer",
"codeReference": [],
"relatedContent": {
"title": "Sources",
"content": []
}
},
{
"body": "どういうアプリケーションですか",
"type": "prompt"
},
{
"body": "私はAmazon Qというソフトウェア開発支援のためのAIアシスタントです。以下のような開発関連のタスクをサポートできます:\n\n1. プログラミング支援\n- コードの作成と修正\n- デバッグのサポート\n- ベストプラクティスの提案\n- 各種プログラミング言語での実装アドバイス\n\n2. 技術的な質問への回答\n- ソフトウェアアーキテクチャに関する助言\n- データベース設計\n- APIの設計と実装\n- セキュリティのベストプラクティス\n\n3. 開発ツールとテクノロジーについての情報提供\n- 各種フレームワークの使用方法\n- 開発環境のセットアップ\n- クラウドサービス(特にAWS)の活用方法\n- CI/CDパイプラインの構築\n\n4. コードレビューとリファクタリング\n- コードの品質改善の提案\n- パフォーマンス最適化のアドバイス\n- セキュリティの脆弱性の指摘\n\n特にAWSのサービスやクラウドコンピューティングに関する質問に強みを持っています。ITやソフトウェア開発に関する具体的な質問がございましたら、お気軽にお尋ねください。",
"type": "answer",
"codeReference": [],
"relatedContent": {
"title": "Sources",
"content": []
}
},
{
"body": "「/dev」も日本語が使えますか",
"type": "prompt"
},
{
"body": "「/dev」ディレクトリに関するご質問ということですが、Linuxシステムにおける日本語の扱いについて説明させていただきます。\n\n基本的に、「/dev」ディレクトリ自体はデバイスファイルを格納する特殊なディレクトリであり、ファイル名に日本語を使用することは一般的ではありませんし、推奨もされません。これは以下の理由によります:\n\n1. システムの安定性と互換性\n- デバイスファイルは低レベルのシステム操作に関わるため、ASCII文字の使用が標準的です\n- システムの互換性を維持するため、英数字のみの使用が推奨されます\n\n2. デバイスファイルの命名規則\n- デバイスファイルは特定の命名規則に従っています(例:tty1, sda1, null など)\n- これらの名前は国際的な標準として確立されています\n\nただし、以下の点については日本語対応が可能です:\n\n- ファイルシステム上の一般的なディレクトリやファイル\n- アプリケーションでの表示\n- ログメッセージ\n- ユーザーインターフェース\n\nシステム管理やデバイス操作を行う際は、互換性とメンテナンス性を考慮して、英数字のファイル名を使用することを強く推奨します。",
"type": "answer",
"codeReference": [],
"relatedContent": {
"title": "Sources",
"content": []
}
}
]
}
],
"meta": {
"revision": 11,
"created": 1744191212864,
"version": 0,
"updated": 1745270511996
},
"$loki": 1
}
],
"idIndex": [
1
],
"binaryIndices": {
"updatedAt": {
"name": "updatedAt",
"dirty": false,
"values": [
0
]
},
"isOpen": {
"name": "isOpen",
"dirty": false,
"values": [
0
]
}
},
"constraints": null,
"uniqueNames": [
"historyId"
],
"transforms": {},
"objType": "tabs",
"dirty": false,
"cachedIndex": null,
"cachedBinaryIndex": null,
"cachedData": null,
"adaptiveBinaryIndices": true,
"transactional": false,
"cloneObjects": false,
"cloneMethod": "parse-stringify",
"asyncListeners": false,
"disableMeta": false,
"disableChangesApi": true,
"disableDeltaChangesApi": true,
"autoupdate": false,
"serializableIndices": true,
"disableFreeze": true,
"ttl": null,
"maxId": 1,
"DynamicViews": [],
"events": {
"insert": [],
"update": [],
"pre-insert": [],
"pre-update": [],
"close": [],
"flushbuffer": [],
"error": [],
"delete": [
null
],
"warning": [
null
]
},
"changes": [],
"dirtyIds": [],
"isIncremental": false
}
],
"databaseVersion": 1.5,
"engineVersion": 1.5,
"autosave": true,
"autosaveInterval": 1000,
"autosaveHandle": null,
"throttledSaves": true,
"options": {
"adapter": null,
"autosave": true,
"autoload": true,
"autosaveInterval": 1000,
"persistenceMethod": "fs",
"serializationMethod": "normal",
"destructureDelimiter": "$<\n",
"recursiveWait": true,
"recursiveWaitLimit": false,
"recursiveWaitLimitDuration": 2000,
"started": 1745270507039
},
"persistenceMethod": "adapter",
"persistenceAdapter": null,
"verbose": false,
"events": {
"init": [
null
],
"loaded": [],
"flushChanges": [],
"close": [],
"changes": [],
"warning": []
},
"ENV": "NODEJS",
"isIncremental": false
}
公式ドキュメント上の更新履歴では 4 月 21 日にこの機能についてのドキュメントが追加されていますが、私の会話履歴データを確認した限りでは 4 月 5 日以降から保存されているようでした。
保存は少し前からされていて、会話履歴の確認機能がここ数日で使えるようになった感じでしょうか。
さいごに
本日は Amazon Q Developer で会話履歴がローカルに保存され、過去の会話を再表示したりエクスポートできるようになったので確認してみました。
会話履歴を再表示できるのは非常に良いですね。ワークスペースごとに保存されているというのも使いやすそうです。