Bỏ qua để đến nội dung

Mở phiên làm việc từ link

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Deep link là một URL claude-cli:// mở Claude Code trong một cửa sổ terminal mới. URL này có thể mang theo thư mục làm việc và một prompt điền sẵn - nhúng vào runbook, cảnh báo giám sát, hay dashboard để một cú click là mở đúng Claude Code trong đúng repo với đúng prompt.

Đây là cách chia sẻ một điểm bắt đầu one-click cho một tác vụ: bất kỳ ai cài Claude Code mà click vào link sẽ thấy một phiên mở ra với prompt đã gõ sẵn. Prompt được điền sẵn nhưng không tự gửi cho đến khi bạn nhấn Enter.

Vì deep link chỉ là một URL, bạn có thể đặt nó ở bất cứ đâu có thể chèn link:

  • Một bước trong runbook xử lý sự cố, mở repo của service bị ảnh hưởng kèm prompt chẩn đoán
  • Một cảnh báo giám sát hay dashboard link tới prompt điều tra cho một metric cụ thể
  • README hay wiki mở project kèm prompt onboarding
  • Thông báo CI fail điền sẵn tên job bị lỗi

Tiền tố claude-cli:// là một custom URL scheme mà Claude Code đăng ký với hệ điều hành, tương tự cách mailto: mở email client. Link có thể nằm trên trang web, wiki, tin nhắn Slack, hay bất kỳ app nào render được link. Khi bạn click:

  1. Trình duyệt hoặc app chuyển URL cho hệ điều hành.
  2. Hệ điều hành nhận diện tiền tố claude-cli:// và khởi động Claude Code trên máy bạn.
  3. Một cửa sổ terminal mới mở ra với Claude Code chạy trong thư mục link chỉ định, prompt của link đã có sẵn trong ô input.
  4. Bạn đọc prompt, có thể sửa, rồi nhấn Enter để gửi.

Link có thể host ở đâu cũng được, nhưng phiên làm việc luôn mở ra cục bộ trên máy bạn click. Xem Đăng ký và các nền tảng hỗ trợ để biết terminal emulator nào mở trên hệ điều hành nào.

Deep link không bao giờ tự thực thi gì cả. Link chỉ chọn thư mục và điền prompt box. Nếu bạn click một link từ trang không đáng tin, prompt vẫn trơ (inert): không có gì đến model cho tới khi bạn đọc nội dung điền sẵn và nhấn Enter.

Khi phiên mở ra, một dòng cảnh báo dưới ô input hiện Prompt from an external link và giữ nguyên cho đến khi bạn gửi hoặc xoá prompt. Với prompt dài hơn 1.000 ký tự, cảnh báo kèm số ký tự và nhắc bạn cuộn xem toàn bộ text trước khi nhấn Enter, vì prompt dài có thể đẩy chỉ dẫn ra ngoài màn hình. Permission rule, CLAUDE.md, và prompt xác nhận trust cho thư mục được chọn vẫn áp dụng như bình thường.

Mọi deep link bắt đầu bằng claude-cli://open, path duy nhất mà handler chấp nhận, theo sau là các query parameter tuỳ chọn. Dạng tối giản mở Claude Code trong thư mục home với prompt rỗng:

claude-cli://open

Để thử link mà không cần đặt lên trang nào, dán thẳng vào thanh địa chỉ trình duyệt hoặc mở từ shell.

Thêm parameter để điều khiển nơi phiên bắt đầu và nội dung prompt box:

ParameterMô tả
qText điền sẵn vào prompt box. URL-encode giá trị này. Dùng %0A cho xuống dòng trong prompt nhiều dòng. Tối đa 5.000 ký tự.
cwdĐường dẫn tuyệt đối làm thư mục làm việc. Network path và UNC path bị từ chối, cùng với path chứa ký tự ẩn hoặc ký tự điều khiển bidirectional.
repoSlug owner/name trên GitHub. Claude Code resolve về một bản clone cục bộ đã từng thấy trước đó và mở tại đó. Nếu không có clone khớp, phiên mở trong thư mục home.

cwdrepohai cách khác nhau để đặt thư mục làm việc. Nếu truyền cả hai, cwd được ưu tiên và repo bị bỏ qua, kể cả khi path của cwd không tồn tại.

Ví dụ link dưới trỏ tới repo acme/payments kèm prompt chẩn đoán hai dòng. Thay acme/payments bằng slug owner/name của repo bạn khi tự tạo link:

claude-cli://open?repo=acme/payments&q=Investigate%20the%20failed%20deploy%20of%20payments-api.%0ACheck%20recent%20commits%20to%20main%20and%20the%20last%20successful%20build.

Click vào đó sẽ mở một cửa sổ terminal mới, khởi động Claude Code trong bản clone cục bộ của acme/payments, và điền prompt box với text đã decode. Bạn có thể sửa prompt trước khi gửi. Nếu chưa có bản clone cục bộ của repo, phiên mở trong thư mục home thay vào đó.

Dùng cwd khi mọi người click link đều có project ở cùng một đường dẫn tuyệt đối, ví dụ một devcontainer hay VM image chuẩn hoá.

Dùng repo khi link được chia sẻ và mỗi người clone vào vị trí khác nhau. Claude Code resolve slug thành đường dẫn cục bộ như sau:

  • Mỗi lần bạn chạy claude trong một Git repository, Claude Code ghi lại thư mục đó ứng với slug owner/name trên GitHub của repo.
  • Khi một deep link đến, repo mở đường dẫn khớp mà bạn dùng gần nhất. Claude Code theo dõi riêng nhiều clone và worktree, nên nó chọn cái bạn làm việc gần nhất.
  • Việc tra cứu chỉ tìm được các path mà bạn đã từng chạy Claude Code ít nhất một lần.
  • Link không đổi branch đang checkout. Phiên mở ra ở đúng trạng thái hiện tại của thư mục đó.

Header chào mừng hiển thị path nào được chọn để bạn xác nhận đúng clone đã mở.

Deep link trong runbook cho người xử lý sự cố một cách one-click bắt đầu điều tra đúng repo với prompt chuẩn bị sẵn. Nền tảng render runbook phải cho phép custom URL scheme. Markdown của GitHub không cho phép claude-cli://, nên deep link trong README, issue, hay wiki của GitHub chỉ hiện label mà không click được. Xem ghi chú khắc phục để có cách né.

Prompt là một phần của URL và phải được URL-encode. Để tạo giá trị đã encode, chạy text prompt qua encodeURIComponent trong console trình duyệt hoặc bất kỳ URL encoder nào.

Ví dụ dưới thêm một điểm vào điều tra cho runbook xử lý sự cố của service web-gateway:

## Tỷ lệ 5xx cao trên web-gateway
1. Acknowledge cảnh báo trong PagerDuty.
2. [Mở Claude Code trong repo gateway](claude-cli://open?repo=acme/web-gateway&q=5xx%20rate%20is%20elevated%20on%20web-gateway.%20Check%20recent%20deploys%2C%20error%20logs%20from%20the%20last%2030%20minutes%2C%20and%20open%20incidents%20in%20Linear.)
3. Đăng phát hiện ban đầu vào #incident.

Bạn cũng có thể mở deep link từ shell script, alias, hay automation thay vì click. Gọi lệnh mở URL của hệ điều hành với link làm tham số. Các lệnh này dựa vào handler mà Claude Code đăng ký khi bạn gửi prompt đầu tiên của một phiên interactive trên máy đó.

macOS, dùng lệnh open có sẵn:

Terminal window
open "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"

Linux, hầu hết desktop environment cung cấp xdg-open:

Terminal window
xdg-open "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"

Windows PowerShell, Start-Process chuyển URL cho handler đã đăng ký:

Terminal window
Start-Process "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"

Trong cmd.exe, start coi tham số quote đầu tiên là tiêu đề cửa sổ, nên truyền một tiêu đề rỗng trước URL:

Terminal window
start "" "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"

Claude Code đăng ký handler claude-cli:// với hệ điều hành trên macOS, Linux, và Windows khi bạn gửi prompt đầu tiên của một phiên interactive. Chỉ khởi động claude rồi thoát mà không gửi prompt sẽ không đăng ký handler. Bạn không cần chạy lệnh cài riêng. Việc đăng ký chỉ ghi vào vị trí cấp user:

Nền tảngVị trí handler
macOS~/Applications/Claude Code URL Handler.app
Linuxclaude-code-url-handler.desktop trong $XDG_DATA_HOME/applications, mặc định ~/.local/share/applications
WindowsHKEY_CURRENT_USER\Software\Classes\claude-cli

Handler khởi động Claude Code trong terminal emulator được phát hiện. Trên macOS, Claude Code nhớ terminal từ phiên interactive gần nhất và dùng lại, hỗ trợ iTerm2, Ghostty, kitty, Alacritty, WezTerm, và Terminal.app. Trên Linux nó tôn trọng biến môi trường $TERMINAL, sau đó x-terminal-emulator, rồi tới danh sách emulator phổ biến. Trên Windows nó ưu tiên Windows Terminal, sau đó PowerShell, rồi cmd.exe.

Để ngăn hoàn toàn việc đăng ký, đặt disableDeepLinkRegistration thành "disable" trong settings.json. Để bắt buộc trên toàn tổ chức sao cho user không thể tự bật lại, đặt trong managed settings thay vào đó.

VS Code extension đăng ký handler riêng tại vscode://anthropic.claude-code/open, mở một tab editor Claude Code thay vì cửa sổ terminal.

Có thể handler chưa được đăng ký. Việc đăng ký xảy ra khi bạn gửi prompt đầu tiên của một phiên interactive, không phải khi phiên khởi động. Chạy một phiên claude interactive trên máy đó, gửi bất kỳ prompt nào, thoát, rồi thử link lại. Nếu bạn dùng Linux không có desktop environment, xdg-open có thể không có gì để chuyển tới.

Lệnh xdg-open nằm trong package xdg-utils, thứ mà các image server tối giản, container, và bản phân phối WSL thường không cài sẵn. Cài xdg-utils bằng package manager của bản phân phối, ví dụ sudo apt install xdg-utils, rồi chạy lại lệnh.

Phần tiêu đề “Link hiện dạng text thường thay vì click được”

Một số Markdown renderer chỉ cho phép link http/https và loại bỏ scheme khác. GitHub làm vậy trong README, issue, pull request, và wiki: [label](claude-cli://...) chỉ render ra label, không có link, URL bị xoá. Trên các nền tảng này, đặt deep link trong code block để người đọc thấy URL và tự dán vào thanh địa chỉ trình duyệt.

Parameter repo chỉ resolve về các clone Claude Code đã từng thấy. Chạy claude trong clone đó một lần để Claude Code ghi lại path, hoặc chuyển link sang dùng cwd với đường dẫn tuyệt đối.

Trên macOS, khởi động claude trong terminal ưa thích một lần rồi deep link tiếp theo sẽ dùng nó. Trên Linux, đặt biến môi trường $TERMINAL thành tên lệnh của emulator ưa thích. Trên Windows, thứ tự cố định: cài Windows Terminal nếu muốn link mở ở đó thay vì cửa sổ PowerShell hay cmd.exe.