えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

コマンド履歴でChatGPTからアドバイスをもらおう【TerminalTrail】

社会人になりました。

働き始めて1週間は結構長かったんですが、2週目はかなり短く感じました…

一人暮らしもそこそこ落ち着いてきました。しかし、1人分とはいえ結構家事は時間がかかるものです。一体、TLの闇のエンジニアたちはどうやって記事を作る余力を捻出しているのでしょうか…?

Twitterの闇のエンジニア界隈の頂点を目指すべく、いろいろとものづくりは続けていきたいですね。


さて、本来であれば、今週は先週作った机を紹介したいところでしたが、その前夜にちょっと思いついたものをサクッと実装したので紹介したいと思います。

それは、bash_history言語化する」ツールです。


このツールはGitHubで公開しています。ぜひ遊んでみてください!(もしかしかしたら、誰かのアイデアと被っているかもですね)

github.com

シークレットトークン等をコマンドライン上でexportしたりしている人は特に注意してくださいね‥


背景

ソフトウェア開発のときには、「どのような部分で躓いたのか」の共有や「動作確認が取れた項目」について情報を共有することがしばしばあります。

しかし、私はあまり説明が上手というわけではないので話が通じず自分でももどかしい気持ちになってしまいます。(かなりやばい)

そんなときにコマンドの履歴が勝手に説明できるようなワークフローがあれば説明のためにコマンドを探したり覚えたりする必要がないので情報共有が楽になるのではないのか!?と思いました。


そこで、ChatGPTにコマンド履歴を食わせることにしました。

ちなみに、ネーミングの TerminalTrail はChatGPTに考えてもらいました。クールですね👀


簡単な説明

TerminalTrailのインストールはpipを使います。

python3 -m pip install git+https://github.com/Ar-Ray-code/TerminalTrail.git@main

実行方法は TerminalTrail オプションでOK!困ったら --help オプションでも確認できます。

TerminalTrail


オプションの種類や引数のとり方

オプション 説明 デフォルト値 値の例
--api_key ChatGPT APIAPIキー。 環境変数 OPENAI_API_KEY から読み込み
--mode TerminalTrailで使用するモードを指定します。 2 0: 褒める・1: 問題解決をする・2: 要約・3: コマンドのヒントを与える
--max_depth bashの履歴を読み取る深さの最大値を指定します。 20 末尾からの行数
--lang ChatGPTで使用する言語を指定します。 0 0 (日本語) 1(英語)
--text_path bashの履歴ファイルのパスを指定します。 ~/.bash_history


結果例

褒めるモード

【TerminalTrailからのコメント】

素晴らしいコマンド履歴ですね!wiresharkからdockerまで、多くのツールとコマンドを使用していましたね👏 その中でも、Pythonスクリプトの作成、実行が続いたようです。プログラミングを上達させるために地道なトレーニングは必要不可欠です。今後も、自分のスキルアップに向けて継続的なトレーニングを行うことをお勧めします。頑張ってください!🙂

問題解決をするモード

【TerminalTrailからのコメント】 あなたは最近、Zenohというプロトコルを使ってネットワーク通信を実験しているようですね。また、Wiresharkを使って通信の分析もしていますね。最近は、ストレージマネージャの設定に関しても試行錯誤されているようです。今後も継続的に実験を行い、Zenohの発展に役立つ成果を出しましょう!ガンバッテ!

要約モード

【TerminalTrailからのコメント】

最近のコマンド履歴から分析すると、ネットワーク関連の作業が多くありますね。Wireshark、ipコマンド、ARPコマンドを使用したり、TCPUDPの接続を設定したり、ローカルホストでCurlを使用するなど、ネットワークのトラブルシューティングデバッグにとても熱心に取り組んでいるように見えます。これは素晴らしいことです!今後もこの分野を掘り下げてみてください。

コマンドのヒントを与えるモード

【TerminalTrailからのコメント】

こんにちは!あなたのコマンド履歴を見ますと、いくつかのツールやライブラリを使用していることがわかります。特に、wiresharkやzenohdなどのツールを使用したパケットキャプチャーやストリーミングに興味があるようですね。次に進む際には、より効果的な方法を考えるために、zenohdおよびwiresharkのドキュメントを参照することをお勧めします。zenohdでは、ストレージマネージャーの機能を使用し、パブリッシュ/サブスクライブシステムを設定することができます。また、wiresharkでは、TCP/UDPパケットフィルタリングやカラム追加などの機能を使用することで、より詳細な分析ができます。これらの機能は、wiresharkおよびzenohdのマニュアルで詳細に説明されています。それでは頑張ってください!

AIが生成しただけの文章なのに、なんだか「分かっている」感じのコメントを生成してくれています。

これまでの会話AIは時系列を無視しがちなので、ちょっとした資料で状況を推論することができるのは大規模LLMの強みですね。


規約や世間の感覚に反しない範囲で個人データを収集して「分かっている」風に振る舞うAIを構築できるかがこれからのチャット型のサービス作りするための鍵になるのかもしれませんね。