Code Remote

Lệnh

Mọi thứ coderemote làm được, từng lệnh một.

$ coderemote up                    # share this folder, print the pairing QR
$ coderemote status                # running agents and their terminal sessions
$ coderemote kill <id>... | --all  # end terminal sessions
$ coderemote stop [--all]          # stop the agent for this folder
$ coderemote serve                 # share on 127.0.0.1 only, no tunnel
$ coderemote requests [PORT]       # requests that reached a previewed port
$ coderemote request <ID>          # headers and bodies of one request
$ coderemote setup claude          # follow Claude Code sessions in the app
$ coderemote setup codex           # the same for Codex
$ coderemote devices               # phones enrolled with this folder
$ coderemote devices revoke <id>   # remove one phone
$ coderemote devices policy <level> # how strict Face ID is
$ coderemote rotate-token          # revoke every paired device
$ coderemote tunnels               # your Dev Tunnels account's tunnels
$ coderemote tunnels delete <id>   # delete ones nothing uses
$ coderemote login                 # sign in to Dev Tunnels again
$ coderemote update                # install the latest version
$ coderemote help                  # all options

up

Chia sẻ thư mục hiện tại qua một Microsoft Dev Tunnel riêng và in ra mã QR ghép đôi. Đây là lệnh bạn dùng hằng ngày.

$ coderemote up
$ coderemote up --root ~/projects   # share another folder
$ coderemote up --web               # also open it in VS Code on vscode.dev

Nó khởi động một agent nhỏ trên 127.0.0.1, đăng nhập Dev Tunnels nếu cần, kết nối ra relay và in ra ba thứ: thư mục đang chia sẻ, ai vào được, và các liên kết để ghép đôi. Nó chạy cho đến khi bạn nhấn Ctrl+C hoặc đóng terminal.

Tùy chọnNó làm gì
--root DIRChia sẻ DIR thay vì thư mục hiện tại.
--port NLắng nghe trên cổng cục bộ N (mặc định 31580). Đổi khi một chương trình khác đang giữ cổng đó.
--allow-anonymousBỏ qua bước đăng nhập tài khoản trên điện thoại: chỉ riêng pairing token là đủ để truy cập. Bí danh --no-auth.
--webĐồng thời chạy code tunnel của VS Code và in ra liên kết vscode.dev mở thư mục trong trình soạn thảo đầy đủ trên trình duyệt.

--web dùng tunnel riêng của VS Code, không phải của Code Remote. Nó đăng nhập bằng tài khoản GitHub riêng và cho trình duyệt truy cập toàn bộ máy, không chỉ thư mục được chia sẻ. Nó cần lệnh code của VS Code trong PATH của bạn.

status

Liệt kê các agent đang chạy trên máy tính này và các phiên terminal trong mỗi agent. Bí danh ps.

$ coderemote status
/Users/you/projects/my-app  (pid 4121, port 31580, up 2h)
  https://…devtunnels.ms
  3f9a2c1e  zsh          pid 4188    2h   1 attached
  b71d04aa  claude       pid 5230    14m  detached

Mỗi phiên hiện id, tiêu đề, process id, tuổi và việc có điện thoại nào đang kết nối vào lúc này hay không. Một phiên detached vẫn đang chạy; nó chờ app kết nối lại.

kill

Kết thúc các phiên terminal. Vài ký tự đầu của một id từ status là đủ.

$ coderemote kill b71d
killed b71d04aa (claude) in /Users/you/projects/my-app

$ coderemote kill --all              # every session in every agent

Bản thân agent vẫn chạy; dùng stop cho việc đó.

stop

Dừng agent đang chia sẻ thư mục hiện tại, kết thúc tunnel và các phiên terminal của nó. Tiện khi up chạy trong một cửa sổ bạn không với tới được.

$ coderemote stop                   # the agent for this folder
$ coderemote stop --all             # every agent on this computer

serve

Khởi động agent chỉ trên 127.0.0.1, không tunnel, không đăng nhập, và in ra URL cục bộ cùng token. Dành cho kiểm thử và phát triển cục bộ; điện thoại của bạn không truy cập được.

$ coderemote serve
coderemote agent on http://127.0.0.1:31580
Sharing: /Users/you/projects/my-app
Token: …

requests

In ra các request đã đến một cổng bạn xem trước từ app, cùng nhật ký mà app hiển thị. Nó được làm cho coding agent trong terminal, như Claude Code hay Codex: bảo nó chạy coderemote requests và nó thấy được trang của bạn hoặc một webhook thực sự đã gửi gì, và server của bạn đã trả lời gì. Cần coderemote 0.3.0 trở lên.

$ coderemote requests
#41    200   GET /api/me  8 ms  212 B  10:20:31
#42    401   POST /api/orders  5 ms  38 B  10:20:33

$ coderemote request 42
#42  POST /api/orders  ->  401
  authorization: Bearer [redacted]
  …

Chạy trong thư mục được chia sẻ (hoặc bên dưới nó) để tìm đúng agent của thư mục đó; nếu chỉ có một agent đang chạy thì chạy ở đâu cũng được. Không có cổng thì nó đọc mọi cổng đang được xem trước. Một bản xem trước bạn đã dừng vẫn giữ nhật ký: nêu cổng của nó để đọc.

Lệnh hoặc tùy chọnNó làm gì
requests [PORT]Một dòng cho mỗi request, cũ nhất trước: id, status, method và đường dẫn, thời lượng, kích thước và thời gian.
request <ID> [PORT]Header và body của một request. JSON được thụt lề; body trên 64 KB không được giữ.
requests clear [PORT]Xóa các request đã ghi, giống Clear trong app.
--grep TEXTChỉ những request có method hoặc đường dẫn chứa TEXT.
--failedChỉ lỗi và các phản hồi 4xx/5xx.
--limit NHiện N request gần nhất (mặc định 50).
--jsonOutput đọc được bằng máy, cho script.
--show-secretsIn ra các giá trị bị che theo mặc định (xem bên dưới).

Bí mật được che trừ khi bạn yêu cầu: header Authorization (giữ lại scheme, như Bearer), giá trị cookie (giữ lại tên), header có tên giống token, key hoặc session, và các trường như password hay access_token trong query string, JSON và form body. Output cho biết đã ẩn bao nhiêu giá trị. Thêm --show-secrets khi agent cần một giá trị, ví dụ để dùng lại session token trong một bài test.

Không có gì được ghi xuống đĩa: lệnh đọc nhật ký mà agent giữ trong bộ nhớ, 200 request gần nhất cho mỗi cổng.

setup claude, setup codex

Cài plugin Code Remote vào Claude Code hoặc Codex, để các phiên của chúng hiện trong tab Agents của app và bạn trả lời được yêu cầu của chúng từ điện thoại. Codex chỉ chạy hook của plugin sau khi bạn tin cậy chúng một lần: mở Codex và gõ /hooks. --remove gỡ nó. Xem Coding agents.

$ coderemote setup claude
$ coderemote setup codex

devices

Liệt kê các điện thoại đã đăng ký với agent đang chạy của thư mục, mỗi chiếc đăng ký và được thấy lần cuối khi nào, cùng thiết lập Face ID. Điện thoại tự đăng ký ở lần kết nối đầu tiên sau khi quét mã QR.

$ coderemote devices
$ coderemote devices revoke 94d5                       # an id prefix is enough
$ coderemote devices policy terminal+writes --window 30m

revoke gỡ một điện thoại ngay lập tức: các phiên và terminal đang mở của nó kết thúc, và nó không quay lại được nếu không ghép đôi lại. policy đặt những thao tác nào hỏi Face ID: none, terminal (mặc định: terminal, coding agent và build) hoặc terminal+writes (thêm thay đổi file và git), và với --window một lần xác thực kéo dài bao lâu: 5m (mặc định), 30m hoặc 1h. Ứng dụng có thể làm nó chặt hơn; nới lỏng từ ứng dụng thì cần Face ID.

rotate-token

Thay token truy cập và các khoá của máy tính này, và quên mọi điện thoại đã đăng ký. Mọi điện thoại đã ghép đôi mất quyền truy cập ngay lập tức. Dùng khi bạn mất chiếc điện thoại duy nhất hoặc link ghép đôi bị lộ.

$ coderemote rotate-token
Token rotated. Re-pair your devices, and restart running agents.

Sau đó khởi động lại coderemote up và quét mã QR mới trên các thiết bị bạn vẫn tin tưởng.

tunnels

Liệt kê các tunnel trên tài khoản Dev Tunnels của bạn và xóa những cái không còn ai dùng. Một tài khoản được giữ 10 tunnel. Mỗi máy tính chạy coderemote dùng một cái, cộng thêm một cái cho xem trước trong lúc agent của nó chạy, và các máy cũ hay các lần cài lại để lại tunnel của chúng. Cần coderemote 0.3.6 trở lên.

$ coderemote tunnels
  silent-lake-pqv9b80.usw2  online · this computer's agent on port 31580 · coderemote my-mac
  brave-hill-x7k2m41.usw2   online · this computer's previews on port 31580 · coderemote preview my-mac
  quiet-fox-3hd8w2c.usw2    coderemote old-laptop

$ coderemote tunnels delete quiet-fox-3hd8w2c
deleted quiet-fox-3hd8w2c.usw2

Mỗi dòng hiện id của tunnel, online khi một agent đang phục vụ nó, máy tính này dùng nó để làm gì, và mô tả của nó, vốn nêu tên máy tính đã tạo ra nó. Hậu tố vùng (.usw2) là tùy chọn khi bạn đưa vào một id.

Lệnh hoặc tùy chọnNó làm gì
tunnelsMột dòng cho mỗi tunnel của tài khoản bạn đang đăng nhập.
tunnels delete <id>...Xóa các tunnel đó. Tunnel đang online, hoặc đang được máy tính này dùng, sẽ được giữ lại trừ khi bạn thêm --force.
--forceCứ xóa. URL của nó sẽ mất, nên các điện thoại đã ghép đôi với nó phải ghép đôi lại; trên máy tính này, lần up tiếp theo sẽ tạo cái mới.

Bạn hiếm khi cần chạy tay: khi tài khoản đã đầy, up và phần xem trước sẽ xóa trước các preview tunnel không agent nào phục vụ. Chỉ khi điều đó không giải phóng được chỗ thì up mới dừng, liệt kê các tunnel của tài khoản và nhờ bạn xóa bớt.

login

Đăng nhập vào Microsoft Dev Tunnels. up tự làm việc này khi cần, nên bạn chỉ chạy nó để đổi tài khoản hoặc khi không có trình duyệt.

$ coderemote login                  # GitHub, in the browser
$ coderemote login --microsoft      # a Microsoft account
$ coderemote login --device-code    # no browser here: enter a code on another device

Điện thoại phải đăng nhập bằng cùng tài khoản, trừ khi bạn chạy up --allow-anonymous.

update

Cài coderemote bản mới nhất theo cách bạn đã cài: bằng npm (hoặc pnpm, yarn, bun), bằng Homebrew, hoặc vào Node.js mà script cài đặt đã tải. Khi có bản mới hơn, up sẽ báo ngay dưới các liên kết ghép đôi; nó hỏi npm tối đa một lần mỗi ngày và không bao giờ làm chậm lúc khởi động. Đặt CODEREMOTE_NO_UPDATE_CHECK=1 để tắt.

$ coderemote update
$ coderemote --version             # the version you're running

Các agent đang chạy vẫn giữ phiên bản cũ cho đến khi bạn khởi động lại chúng: coderemote stop --all, rồi coderemote up lần nữa.

help

In ra mọi lệnh và tùy chọn. coderemote đứng một mình, hoặc --help ở bất kỳ đâu trong dòng lệnh, cũng làm vậy, nên gõ nhầm sẽ không bao giờ vô tình bắt đầu chia sẻ một thư mục.

Tùy chọn

Tùy chọnLệnhMặc định
--root DIRup, serve, stopthư mục hiện tại
--port Nup, serve31580
--allow-anonymousuptắt
--webuptắt
--allkill, stop
--forcetunnels deletetắt
--microsoft, --device-codeloginGitHub, trong trình duyệt