1 ポイント 投稿者 GN⁺ 2025-02-09 | 1件のコメント | WhatsAppで共有
  • VSCodeとリモート編集

    • VSCodeには、SSHを通じてリモート編集をサポートする機能がある。
    • 多くのユーザーがVSCodeとLLM(大規模言語モデル)を使ってコード生成を行っている。
    • LLMが誤ったコードを生成することは「ハルシネーション」と呼ばれ、これに対処するには「エージェント」設定によってLLMと実行環境のあいだのループを閉じることが重要である。
    • この過程は、LLMがコードを生成し、エージェントがコードを実行してエラーを出し、その結果をLLMにフィードバックして繰り返す形で進む。
  • 開発環境での問題点

    • このような反復的な開発プロセスが開発者のノートPC上で発生するのは望ましくない。
    • LLMはシステム構成にも影響を与えうるため、この種の作業はクリーンな状態のLinuxインスタンスで行うのが望ましい。
  • EmacsとTramp

    • Emacsは、Trampという便利なElispを通じてリモート編集システムをサポートしている。
    • Trampは、SSHセッションを通じてBourneシェルのコマンドを実行できる対話的な環境に接続できる。
  • VSCodeのアプローチ

    • VSCodeにもTrampに似た機能があるが、Trampとは異なり、リモート接続先に対して全面的に入り込もうとする。
    • Bashスニペットステージャーを実行してエージェントをダウンロードし、Nodeのバイナリのインストールまで行う。
    • エージェントはポートフォワーディングされたSSH経由で動作し、WebSockets接続を通じてVSCodeフロントエンドとつながる。
    • この接続の基盤プロトコルは、ファイルシステムを探索し、任意のファイルを編集し、独自のシェルPTYプロセスを起動し、永続性を持つことができる。
  • セキュリティ上の懸念

    • 開発サーバーでVSCodeをリモート編集用途として無造作に使うと、機密情報やインフラ保護に問題を引き起こしかねない。
    • 特に実運用環境(プロダクション)で問題が発生した際にVSCodeのリモート編集を使うのは非常に危険だという懸念がある。
  • 結論

    • Fly.ioの内部では、Fly MachineとVSCodeを直接接続するために、このような複雑なエージェント方式が必須というわけではない。
    • ただし、ブログ執筆の目的でVSCodeのリモート接続方式を調べることになり、その過程で以上のような事実が分かった。

1件のコメント

 
GN⁺ 2025-02-09
Hacker Newsの意見
  • 1か月ほどソフトウェアについて長文を書こうとしていた。Kurtはブログに記事を書かないので気にしている。短い文章を書くことにした。30分以内に書けそうだと思った

    • 自分たちが扱っていたソフトウェアについて簡単に書いた
  • VSCodeの動作を知れば知るほど、その場しのぎで維持されているように見える。SSH拡張だけ見ても、ワークスペースURIには2つの形式がある

    • ホスト名と16進数でエンコードされたJSONドキュメントがある
    • ホスト名に大文字が含まれる場合は追加情報が必要になる
    • SSH接続ではサーバーにインストールする拡張を構成できる。しかし入れすぎるとWindowsホストに接続できなくなる
  • このセキュリティ問題が理解できない。SSHでマシンに接続してソケットをフォワードできるなら、他のこともできるはずだ

    • 同じネットワーク上の誰かが、SSHなしでフォワードされたポートに接続できることが問題なのか気になる
    • ユーザーとしては、VSCodeのSSHシステムがうまく動くのは気に入っている
  • ネットワークサーバーを運用していて、学生たちがOpenSSHクライアントを理解していないのが大きな問題になっている

    • 学生にはVSCodeのリモートサーバープラグインを使わないよう伝えている
    • ディスク使用量が100MBを超える学生は全員VSCodeユーザーだと分かった
    • ユーザープロセス制限を45に設定した。学生が警告を無視するとプロセス制限に引っかかる
    • 10秒ごとに.vscode-serverプロセスを終了するスクリプトを使っている
  • VSCodeのSSH編集機能はよく動く。リモートマシンでvim、nano、microを使わなくなった

    • エージェントが邪魔をしないので作業がしやすい
    • セキュリティリスクはあるかもしれないが、開発体験は素晴らしい
  • リモートコード実行が可能だと知った。開発ツールに対する誤った信頼は、しばしば後悔につながる

    • SSHは90年代の解決策だ。Telnetにいくつか機能を足したようなものだ
    • SSH経由で実現されている多くのものは非効率だ
    • 私たちは適切なツールを作らず、既存のツールにさらに機能を積み増してきた
  • 「SSHエージェント」という用語は紛らわしい。通常は認証トークンをキャッシュするデーモンを意味する

  • sshfsを勧める人は、VSCode SSH Remote環境の利点を理解していない

    • 開発環境全体をリモートでローカルのように実行できる
    • 古いマシンやシンクライアントを完全なワークステーションに変えられる
    • VSCode Marketplaceにはセキュリティ上の脅威となるプラグインが多い。SSH RemoteやVS Tunnelのことではない
  • 開発サーバーでVSCodeのリモート編集を許可するのは不安だ。プロダクションサーバーではなおさらだと思う

    • プロダクションサーバーでVSCode Remoteを使うのは正気の沙汰ではない
    • 他の機能は想定内の機能だ
  • ローカルのVSCodeインスタンスがシンクライアントになり、リモートインスタンスが重い処理を担う

    • 小型ノートPCから強力なワークステーションにSSH接続する場合に向いている
    • 強力なワークステーションから小さなVM/VPSにSSH接続する場合は、sshfsや他のリモートファイルシステムマウント設定を勧める