1 điểm bởi GN⁺ 2025-02-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • VSCode và chỉnh sửa từ xa

    • VSCode có tính năng hỗ trợ chỉnh sửa từ xa thông qua SSH.
    • Nhiều người dùng đang sử dụng VSCode và LLM (mô hình ngôn ngữ lớn) để tạo mã.
    • Khi LLM tạo ra mã sai, hiện tượng đó được gọi là "ảo giác", và để giải quyết điều này, việc khép kín vòng lặp giữa LLM và môi trường thực thi thông qua thiết lập "agent" là rất quan trọng.
    • Quá trình này diễn ra theo cách LLM tạo mã, agent thực thi mã, tạo ra lỗi, rồi phản hồi lỗi đó lại cho LLM để lặp lại.
  • Vấn đề trong môi trường phát triển

    • Việc quy trình phát triển lặp đi lặp lại như vậy diễn ra trên laptop của lập trình viên là điều không mong muốn.
    • Vì LLM cũng có thể ảnh hưởng đến cấu hình hệ thống, nên tốt hơn là thực hiện các công việc này trên một instance Linux sạch.
  • Emacs và Tramp

    • Emacs hỗ trợ hệ thống chỉnh sửa từ xa thông qua một Elisp hữu ích có tên là Tramp.
    • Tramp có thể kết nối tới một môi trường tương tác có khả năng chạy các lệnh shell Bourne thông qua phiên SSH.
  • Cách tiếp cận của VSCode

    • VSCode có chức năng tương tự Tramp, nhưng khác với Tramp, nó tìm cách can thiệp toàn diện vào kết nối từ xa.
    • Nó chạy một Bash snippet stager để tải agent xuống, đồng thời bao gồm cả việc cài đặt binary của Node.
    • Agent chạy thông qua SSH được port forwarding và kết nối với frontend của VSCode qua kết nối WebSockets.
    • Giao thức mặc định của kết nối này có thể duyệt hệ thống tệp, chỉnh sửa các tệp tùy ý, khởi chạy tiến trình shell PTY riêng và duy trì tính bền vững.
  • Lo ngại về bảo mật

    • Việc dùng VSCode một cách thiếu kiểm soát trên máy chủ phát triển cho mục đích chỉnh sửa từ xa có thể gây ra vấn đề trong việc bảo vệ thông tin nhạy cảm hoặc hạ tầng.
    • Đặc biệt, có lo ngại rằng sử dụng chỉnh sửa từ xa của VSCode khi xảy ra sự cố trong môi trường vận hành thực tế (production) là cực kỳ nguy hiểm.
  • Kết luận

    • Về mặt nội bộ tại Fly.io, kiểu agent phức tạp như vậy không nhất thiết là bắt buộc để kết nối trực tiếp Fly Machine với VSCode.
    • Tuy vậy, vì mục đích viết blog, họ đã tìm hiểu cách VSCode kết nối từ xa và trong quá trình đó đã biết được những sự thật như trên.

1 bình luận

 
GN⁺ 2025-02-09
Ý kiến trên Hacker News
  • Đã định viết một bài dài về phần mềm suốt một tháng. Kurt đang lo vì không viết blog. Cuối cùng quyết định viết một bài ngắn. Có vẻ như có thể viết xong trong 30 phút

    • Đã viết ngắn gọn về phần mềm mà chúng tôi đang làm
  • Càng hiểu cách VSCode hoạt động, càng thấy nó được duy trì bằng những giải pháp chắp vá. Chỉ nhìn vào tiện ích mở rộng SSH thôi cũng thấy URI workspace có hai định dạng

    • Có tên máy chủ và một tài liệu JSON được mã hóa hex
    • Nếu tên máy chủ có chứa chữ hoa, sẽ cần thêm thông tin
    • Kết nối SSH có thể cấu hình các tiện ích mở rộng sẽ được cài trên máy chủ. Nhưng nếu cài quá nhiều thì không thể kết nối tới host Windows
  • Tôi không hiểu vấn đề bảo mật ở đây. Nếu đã có thể vào máy bằng SSH và forward socket thì cũng có thể làm nhiều việc khác

    • Tò mò không biết có phải vấn đề là người ở cùng mạng có thể kết nối vào cổng đã được forward mà không cần SSH hay không
    • Với tư cách người dùng, tôi thích việc hệ thống SSH của VSCode hoạt động tốt
  • Khi vận hành máy chủ mạng, một vấn đề lớn là sinh viên không hiểu OpenSSH client

    • Đã thông báo cho sinh viên không dùng plugin máy chủ từ xa của VSCode
    • Những sinh viên có mức dùng đĩa vượt 100MB đều là người dùng VSCode
    • Đã đặt giới hạn tiến trình người dùng là 45. Nếu sinh viên phớt lờ cảnh báo thì sẽ đụng trần giới hạn tiến trình
    • Dùng một script để kill các tiến trình .vscode-server mỗi 10 giây
  • Tính năng chỉnh sửa qua SSH của VSCode hoạt động rất tốt. Tôi không còn phải dùng vim, nano hay micro trên máy từ xa nữa

    • Agent không cản trở nên làm việc dễ dàng hơn
    • Có thể có rủi ro bảo mật, nhưng trải nghiệm phát triển rất xuất sắc
  • Tôi đã biết rằng có thể thực thi mã từ xa. Việc đặt niềm tin sai chỗ vào công cụ phát triển thường dẫn tới hối tiếc

    • SSH là một giải pháp từ thập niên 90. Về cơ bản là Telnet được thêm vài tính năng
    • Nhiều thứ được triển khai qua SSH là không hiệu quả
    • Chúng ta đã không tạo ra công cụ phù hợp. Chỉ liên tục nhồi thêm tính năng vào công cụ cũ
  • Thuật ngữ "SSH agent" gây nhầm lẫn. Thông thường nó chỉ một daemon dùng để cache token xác thực

  • Những người khuyên dùng sshfs là chưa hiểu lợi ích của môi trường VSCode SSH Remote

    • Có thể chạy toàn bộ môi trường phát triển từ xa như thể đang chạy cục bộ
    • Có thể biến máy cũ hoặc thin client thành một workstation hoàn chỉnh
    • VSCode Marketplace có nhiều plugin là mối đe dọa bảo mật. SSH Remote hay VS Tunnel thì không
  • Việc cho phép chỉnh sửa từ xa bằng VSCode trên máy chủ phát triển khiến tôi thấy bất an. Trên máy chủ production thì lại càng như vậy

    • Dùng VSCode Remote trên máy chủ production là chuyện điên rồ
    • Các tính năng khác thì là chức năng đã được dự liệu
  • Một instance VSCode cục bộ trở thành thin client, còn instance từ xa xử lý phần việc nặng

    • Phù hợp khi SSH từ một laptop nhỏ sang một workstation mạnh
    • Nếu SSH từ một workstation mạnh sang một VM/VPS nhỏ thì nên dùng sshfs hoặc thiết lập mount hệ thống tệp từ xa khác