Chuyển đến nội dung chính

openclaw path

Truy cập shell vào cơ chế định địa chỉ oc://: một cú pháp đường dẫn duy nhất được điều phối theo loại để kiểm tra và chỉnh sửa các tệp không gian làm việc có thể định địa chỉ (markdown, jsonc, jsonl, yaml/yml/lobster). Người tự lưu trữ, tác giả plugin và tiện ích mở rộng trình soạn thảo dùng cú pháp này để đọc, tìm hoặc cập nhật một vị trí hẹp mà không phải tự viết trình phân tích cú pháp riêng cho từng loại tệp. path được cung cấp bởi plugin tùy chọn oc-path đi kèm. Hãy bật plugin này trước lần sử dụng đầu tiên:
Các động từ CLI phản ánh mô hình định địa chỉ:
  • resolve dành cho đường dẫn cụ thể và chỉ khớp một kết quả.
  • find là động từ cho nhiều kết quả khớp, dùng với ký tự đại diện, hợp, vị từ và mở rộng theo vị trí.
  • set chỉ chấp nhận đường dẫn cụ thể hoặc dấu chèn; các mẫu ký tự đại diện bị từ chối trước khi ghi.
  • validate phân tích một đường dẫn mà không truy cập hệ thống tệp.
  • emit đưa một tệp qua chu trình phân tích + xuất lại (chẩn đoán độ trung thực theo byte).

Tại sao nên sử dụng

Trạng thái OpenClaw được phân bố trong các tệp markdown do con người chỉnh sửa, cấu hình JSONC có chú thích, nhật ký JSONL chỉ nối thêm và các tệp quy trình công việc/đặc tả YAML. Script, hook và tác tử thường chỉ cần một giá trị nhỏ từ những tệp đó: một khóa frontmatter, một thiết lập plugin, một trường bản ghi nhật ký, một bước YAML hoặc một mục dấu đầu dòng trong phần có tên. openclaw path cung cấp cho các bên gọi một địa chỉ ổn định thay vì phải dùng grep, biểu thức chính quy hoặc trình phân tích cú pháp dùng một lần cho từng loại tệp. Cùng một đường dẫn oc:// có thể được xác thực, phân giải, tìm kiếm, chạy thử và ghi từ terminal, giúp hoạt động tự động hóa phạm vi hẹp dễ xem xét và tái hiện. Công cụ giữ nguyên phần còn lại của tệp, nên việc ghi một nút lá không làm xáo trộn chú thích, kiểu xuống dòng hoặc định dạng lân cận. Hãy dùng công cụ này khi đối tượng bạn muốn có địa chỉ logic nhưng hình dạng tệp có thể khác nhau:
  • Một hook đọc một thiết lập từ JSONC có chú thích mà không làm mất chú thích khi ghi giá trị trở lại.
  • Một script bảo trì tìm mọi trường sự kiện khớp trong nhật ký JSONL mà không cần tải toàn bộ nhật ký vào trình phân tích cú pháp tùy chỉnh.
  • Một trình soạn thảo chuyển đến phần markdown hoặc mục dấu đầu dòng theo slug, rồi hiển thị chính xác dòng đã phân giải.
  • Một tác tử chạy thử một chỉnh sửa nhỏ trong không gian làm việc trước khi áp dụng, với các byte thay đổi hiển thị rõ khi xem xét.
Không dùng openclaw path cho các chỉnh sửa toàn bộ tệp thông thường, quá trình di chuyển cấu hình phức tạp hoặc thao tác ghi dành riêng cho bộ nhớ; những trường hợp đó nên dùng lệnh hoặc plugin của thành phần sở hữu. path dành cho các thao tác nhỏ trên tệp có thể định địa chỉ, khi một lệnh terminal có thể lặp lại hiệu quả hơn việc viết thêm một trình phân tích cú pháp riêng biệt.

Cách sử dụng

Đọc một giá trị từ tệp cấu hình do con người chỉnh sửa:
Xem trước thao tác ghi mà không chạm vào đĩa:
Tìm các bản ghi khớp trong nhật ký JSONL chỉ nối thêm:
Định địa chỉ một chỉ dẫn trong markdown theo phần và mục thay vì theo số dòng:
Xác thực một đường dẫn trong CI hoặc script kiểm tra sơ bộ trước khi script đọc hoặc ghi:
Các lệnh này được thiết kế để có thể sao chép vào script shell. Dùng --json khi bên gọi cần đầu ra có cấu trúc và --human khi một người đang kiểm tra kết quả.

Cách hoạt động

  1. Phân tích địa chỉ oc:// thành các vị trí: tệp, phần, mục, trường và một truy vấn phiên tùy chọn.
  2. Chọn bộ điều hợp loại tệp theo phần mở rộng đích (.md, .jsonc, .json, .jsonl, .ndjson, .yaml, .yml, .lobster).
  3. Phân giải các vị trí dựa trên cấu trúc của loại tệp đó: tiêu đề/mục markdown, khóa đối tượng/chỉ mục mảng JSONC, bản ghi dòng JSONL hoặc nút ánh xạ/chuỗi YAML.
  4. Với set, xuất các byte đã chỉnh sửa qua cùng bộ điều hợp để những phần không bị tác động trong tệp giữ nguyên chú thích, kiểu xuống dòng và định dạng lân cận khi loại tệp hỗ trợ.
resolveset yêu cầu một đích cụ thể. find là động từ thăm dò: nó mở rộng ký tự đại diện, hợp, vị từ và số thứ tự thành các kết quả khớp cụ thể mà bạn có thể kiểm tra trước khi chọn một kết quả để ghi.

Lệnh con

Cờ toàn cục

validate chỉ nhận --json / --human; lệnh này không truy cập hệ thống tệp, nên --cwd--file không áp dụng.

Cú pháp oc://

Quy tắc vị trí: field yêu cầu item, và item yêu cầu section. Trên cả bốn vị trí:
  • Phân đoạn có dấu nháy"a/b.c" không bị tách bởi dấu phân cách /.. Nội dung được giữ nguyên theo byte; không cho phép "\ bên trong dấu nháy. Vị trí tệp cũng nhận biết dấu nháy: oc://"skills/email-drafter"/Tools/$last xem skills/email-drafter là một đường dẫn tệp duy nhất.
  • Vị từ[k=v], [k!=v], [k<v], [k<=v], [k>v], [k>=v]. Các toán tử số yêu cầu cả hai vế có thể chuyển thành số hữu hạn.
  • Hợp{a,b,c} khớp với bất kỳ phương án nào.
  • Ký tự đại diện* (một phân đoạn con) và ** (không hoặc nhiều phân đoạn, đệ quy). find chấp nhận các ký tự này; resolveset từ chối vì không rõ ràng.
  • Theo vị trí$first / $last phân giải thành chỉ mục hoặc khóa được khai báo đầu tiên / cuối cùng.
  • Số thứ tự#N cho kết quả khớp thứ N theo thứ tự tài liệu.
  • Dấu chèn+, +key, +nnn để chèn theo khóa / chỉ mục (dùng với set).
  • Phạm vi phiên?session=cron-daily, v.v. Độc lập với việc lồng vị trí. Giá trị phiên là dữ liệu thô, không được giải mã phần trăm; không được chứa ký tự điều khiển hoặc dấu phân cách truy vấn dành riêng (?, &, %).
Các ký tự dành riêng (?, &, %) bên ngoài phân đoạn có dấu nháy, vị từ hoặc hợp sẽ bị từ chối. Ký tự điều khiển (U+0000-U+001F, U+007F) bị từ chối ở mọi vị trí, kể cả trong giá trị truy vấn session. formatOcPath(parseOcPath(path)) === path được bảo đảm với các đường dẫn chuẩn tắc. Các tham số truy vấn không chuẩn tắc bị bỏ qua, ngoại trừ giá trị session= không rỗng đầu tiên. Giới hạn cứng: một đường dẫn tối đa 4096 byte, nhiều nhất 4 vị trí (tệp/phần/mục/trường), nhiều nhất 64 phân đoạn con được phân tách bằng dấu chấm cho mỗi vị trí và nhiều nhất 256 cấp duyệt lồng nhau đối với đường dẫn JSON sâu. Ngoài ra, mọi tệp đầu vào JSONC/JSON lớn hơn 16 MiB đều bị từ chối kèm chẩn đoán phân tích cú pháp thay vì được phân tích, với mọi động từ tải tệp đó.

Định địa chỉ theo loại tệp

resolve trả về một kết quả khớp có cấu trúc: root, node, leaf hoặc insertion-point, cùng số dòng bắt đầu từ 1. Giá trị nút lá được biểu diễn dưới dạng văn bản kèm leafType để tác giả plugin có thể hiển thị bản xem trước mà không phụ thuộc vào hình dạng AST riêng của từng loại.

Hợp đồng biến đổi

set ghi một đích cụ thể:
  • Giá trị frontmatter Markdown và trường mục - key: value là các nút lá chuỗi. Thao tác chèn Markdown nối thêm phần, khóa frontmatter hoặc mục trong phần và kết xuất hình dạng markdown chuẩn tắc cho tệp đã thay đổi. Không thể ghi toàn bộ nội dung phần qua set.
  • Thao tác ghi nút lá JSONC chuyển chuỗi giá trị sang kiểu hiện có của nút lá (string, number hữu hạn, true/false hoặc null). Dùng --value-json khi thao tác thay thế nút lá JSONC/JSON/JSONL cần phân tích <value> dưới dạng JSON và có thể thay đổi hình dạng, chẳng hạn thay thế dạng viết tắt tham chiếu bí mật bằng chuỗi bằng một đối tượng. Thao tác chèn đối tượng và mảng JSONC phân tích <value> dưới dạng JSON và dùng đường dẫn chỉnh sửa jsonc-parser cho thao tác ghi nút lá thông thường, đồng thời giữ nguyên chú thích và định dạng lân cận.
  • Thao tác ghi nút lá JSONL chuyển kiểu giống JSONC bên trong một dòng. Thay thế toàn bộ dòng và nối thêm đều phân tích <value> dưới dạng JSON. JSONL được kết xuất giữ nguyên quy ước xuống dòng LF/CRLF chiếm ưu thế của tệp (bỏ phiếu theo đa số trên các ký tự xuống dòng của tệp, nên tệp chủ yếu dùng CRLF vẫn giữ CRLF ngay cả khi có một vài LF riêng lẻ).
  • Thao tác ghi nút lá YAML chuyển sang kiểu vô hướng hiện có (string, number hữu hạn, true/false hoặc null). Thao tác chèn YAML dùng API tài liệu của gói yaml đi kèm để cập nhật ánh xạ/chuỗi. Các tài liệu YAML không hợp lệ có lỗi phân tích cú pháp bị từ chối trước khi biến đổi với parse-error.
Dùng --dry-run trước các thao tác ghi hiển thị cho người dùng khi các byte chính xác có ý nghĩa quan trọng. Các chỉnh sửa JSONC và YAML vá tài liệu hiện có (qua jsonc-parser hoặc API tài liệu yaml), nên các byte không bị tác động thường được giữ nguyên; markdown dựng lại tệp từ cấu trúc đã phân tích trong mọi lần chỉnh sửa, điều này có thể chuẩn hóa định dạng phụ bên ngoài nút lá đã thay đổi. Thêm --diff khi bạn muốn xem trước dưới dạng bản vá trước/sau tập trung thay vì toàn bộ tệp đã kết xuất.

Ví dụ

Các ví dụ ngữ pháp khác:

Công thức theo loại tệp

Năm động từ giống nhau hoạt động trên mọi loại tệp; cơ chế định địa sẽ điều phối dựa trên phần mở rộng của tệp.

Markdown

Vị từ [frontmatter] định địa khối frontmatter YAML; tools khớp với tiêu đề ## Tools thông qua slug, còn các nút lá của mục vẫn giữ dạng slug ngay cả khi nguồn sử dụng dấu gạch dưới (send_email trở thành send-email).

JSONC

Các chỉnh sửa JSONC đi qua jsonc-parser, vì vậy chú thích và khoảng trắng vẫn được giữ nguyên sau một lần set. Trước tiên, hãy chạy với --dry-run để kiểm tra các byte trước khi ghi thay đổi. Các tệp .json sử dụng cùng bộ điều hợp và đường dẫn chỉnh sửa như .jsonc.

JSONL

Mỗi dòng là một bản ghi. Hãy định địa bằng vị từ ([event=action]) khi bạn không biết số dòng, hoặc bằng phân đoạn LN chuẩn khi bạn biết. Các tệp .ndjson sử dụng cùng bộ điều hợp như .jsonl.

YAML

YAML sử dụng API Document của gói yaml thay vì một trình phân tích cú pháp tự viết, vì vậy các vòng phân tích/xuất thông thường giữ nguyên chú thích và hình thức biên soạn, trong khi các đường dẫn đã phân giải sử dụng cùng mô hình khóa ánh xạ / chỉ mục chuỗi như JSONC. Cùng một bộ điều hợp xử lý các tệp .yaml, .yml.lobster.

Tham chiếu lệnh con

resolve <oc-path>

Đọc một nút lá hoặc nút đơn. Ký tự đại diện sẽ bị từ chối — hãy dùng find cho chúng. Thoát với mã 0 khi có kết quả khớp, 1 khi không tìm thấy kết quả một cách hợp lệ, 2 khi có lỗi phân tích cú pháp hoặc mẫu bị từ chối.

find <pattern>

Liệt kê mọi kết quả khớp với mẫu ký tự đại diện / vị từ / hợp. Thoát với mã 0 khi có ít nhất một kết quả khớp, 1 khi không có kết quả nào. Ký tự đại diện ở vị trí tệp bị từ chối với OC_PATH_FILE_WILDCARD_UNSUPPORTED — hãy truyền một tệp cụ thể (tính năng glob đa tệp sẽ được bổ sung sau).

set <oc-path> <value>

Ghi một nút lá. Kết hợp với --dry-run để xem trước các byte sẽ được ghi mà không thay đổi tệp. Thêm --diff để xem trước bản diff hợp nhất. Thoát với mã 0 khi ghi thành công, 1 nếu tầng nền từ chối (ví dụ: kích hoạt điều kiện bảo vệ sentinel), 2 khi có lỗi phân tích cú pháp.
Dấu chèn +key tạo nút con có tên nếu nút đó chưa tồn tại; +nnn+ đơn lần lượt dùng để chèn theo chỉ mục và chèn nối tiếp.

validate <oc-path>

Chỉ kiểm tra phân tích cú pháp. Không truy cập hệ thống tệp. Hữu ích khi bạn muốn xác nhận một đường dẫn mẫu có định dạng hợp lệ trước khi thay thế biến, hoặc khi bạn muốn xem cấu trúc phân rã để gỡ lỗi:
Thoát với mã 0 khi hợp lệ, 1 khi không hợp lệ (kèm codemessage có cấu trúc), 2 khi có lỗi đối số.

emit <file>

Đưa một tệp qua vòng phân tích và xuất dành riêng cho từng loại. Đầu ra phải giống đầu vào theo từng byte đối với một tệp hợp lệ; sự khác biệt cho thấy lỗi trình phân tích cú pháp hoặc đã kích hoạt sentinel. Hữu ích để gỡ lỗi hành vi của tầng nền trên đầu vào thực tế.

Mã thoát

Chế độ đầu ra

openclaw path nhận biết TTY: đầu ra dễ đọc cho con người trên thiết bị đầu cuối, JSON khi stdout được truyền qua đường ống hoặc chuyển hướng. --json--human ghi đè cơ chế tự động phát hiện.

Ghi chú

  • set ghi các byte thông qua đường dẫn xuất của tầng nền, nơi tự động áp dụng điều kiện bảo vệ sentinel che giấu dữ liệu. Một nút lá chứa __OPENCLAW_REDACTED__ (nguyên văn hoặc dưới dạng chuỗi con) sẽ bị từ chối khi ghi.
  • Việc phân tích JSONC và chỉnh sửa nút lá sử dụng phần phụ thuộc jsonc-parser cục bộ của plugin, vì vậy chú thích và định dạng được giữ nguyên khi ghi nút lá thông thường thay vì đi qua đường dẫn trình phân tích/tái kết xuất tự viết.
  • path không nhận biết việc theo dõi hoặc khôi phục cấu hình tốt gần nhất (LKG); vòng đời đó do thành phần khác quản lý. Nếu một tệp bạn chỉnh sửa thông qua path cũng được theo dõi bằng LKG, lần đọc cấu hình tiếp theo sẽ quyết định có nâng cấp hay khôi phục tệp đó; hãy xem một chỉnh sửa bằng path giống như mọi thao tác ghi trực tiếp khác vào tệp đó.

Liên quan