HN 日本語サマリー

← 一覧へ戻る
Web開発

VSCodeのSSHエージェントは驚くほど強力だ

VSCode's SSH Agent Is Bananas (fly.io)

294 pointsby Rapzid190 コメント

要約

この記事は、VSCodeのリモートSSH機能がEmacsのTrampと比較して、より侵略的なアプローチを取っていると指摘しています。VSCodeのエージェントはバイナリをダウンロードし、WebSocket接続を確立するため、LLMによるコード生成との連携においてセキュリティ上の懸念があることを論じています。しかし、Fly Machineとの連携においてはこれらの懸念は無関係であるとも述べています。

全文翻訳

VSCodeのSSHエージェントは驚くべきものだ

著者

[画像: Thomas Ptacek]

名前

Thomas Ptacek

@tqbf

@tqbf

私たちは、VSCodeがリモート編集のために使用するフローに統合されることに興味があります。なぜなら、今や誰もがVSCodeを使用しており、特にLLMでコードを生成するVSCodeのフォークを使用しているからです。

LLMがコードを間違えることを私たちは「幻覚(hallucination)」と呼びますが、人間が間違えることは「エンジニアリング」と呼びます。

LLM生成コードは、あなたが何をしているかを知っていれば、一般的に役立ちます。しかし、LLMと実行環境(「エージェント」セットアップ付き)のループを閉じることができれば、それは非常に役立ちます。これについては多くのことが言えますが、現時点では、幻覚に対する半ば効果的な解毒剤となります。LLMがコードを生成し、エージェントの足場がコードを実行し、コードがエラーを生成し、エージェントがそれをLLMにフィードバックし、プロセスが繰り返されます。

明らかに、この反復開発プロセスをあなたの開発ラップトップで行いたくないという問題があります。なぜなら、LLMには境界線の問題があり、あなたが作業しているGitプロジェクトでシステム構成を喜んで反復処理するからです。本当にやりたいこと:LLMのために、クリーンなLinuxインスタンス上で、即座に起動し、どのような方法でもあなたを台無しにできない、クローズドループのエージェント的な(「エージェント?」、今そう言うのでしょうか)構成を実行することです。これで、私たちが何を言いたいのか分かったでしょう。

とにかく!私は懸念を表明したいと思います。

Emacsは、リモート編集システムの精神的な先駆者である、非常に役立つElispの塊である「Tramp」をホストしています。

Trampを、Bourneシェルコマンドを実行できるあらゆる種類の間接的な環境(通常はSSHセッション)に接続できれば、Emacsをその環境に拡張できます。

では、VSCodeにはTrampのような機能があります。それは素晴らしいことですよね?Trampを持ってきて、少し簡略化し、ElispをTypeScriptに置き換えるだろうと考えるでしょう。

それは間違いです!

リモート接続で「地上のものを利用する」Trampとは異なり、VSCodeは本格的な侵略を行います。それは、Nodeのバイナリインストールを含むエージェントをダウンロードするBashスニペットステージャーを実行します。

これがソースコードだと思います。

エージェントはポートフォワーディングされたSSH上で実行されます。それは、実行中のVSCodeフロントエンドへのWebSockets接続を確立します。その接続上の基盤となるプロトコルは以下のことができます:

  • ファイルシステム内を移動する
  • 任意のファイルを編集する
  • 独自のシェルPTYプロセスを起動する
  • 自身を永続化する

セキュリティの世界では、このように機能するツールには名前があります。それは公平ではないので、声に出しては言いませんが、その名前はムラサメ科の性質を持っていると言っておきましょう。

開発サーバー上で人々がVSCodeリモート編集を行うことを少し心配し、本番環境の何かでインシデントが発生中にそれが起こった場合は激怒するでしょう。

結局のところ、VSCodeでFly Machineへのカスタム接続を取得するために、これらのことのどれも気にする必要はありません。そのため、これらのことは深い意味では何も重要ではありません。しかし、私たちは単なるブログに戻ることにしたので、これを学ばなければなりませんでした。そして今、あなたも学ぶ必要があります。

次の投稿 ↑

Semgrepは、ついに本格的になったのか?

前の投稿 ↓

AI GPUクラスターをラップトップから、Livebookで