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:
resolvedành cho đường dẫn cụ thể và chỉ khớp một kết quả.findlà độ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í.setchỉ 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.validatephâ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.
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:--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
- 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. - 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). - 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.
- 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ợ.
resolve và set 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 và --file không áp dụng.
Cú pháp oc://
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/và.. Nội dung được giữ nguyên theo byte; không cho phép"và\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/$lastxemskills/email-drafterlà 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).findchấp nhận các ký tự này;resolvevàsettừ chối vì không rõ ràng. - Theo vị trí —
$first/$lastphâ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ự —
#Ncho 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ớiset). - 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 (?,&,%).
?, &, %) 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: valuelà 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 quaset. - 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,numberhữu hạn,true/falsehoặcnull). Dùng--value-jsonkhi 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ửajsonc-parsercho 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,numberhữu hạn,true/falsehoặcnull). Thao tác chèn YAML dùng API tài liệu của góiyamlđ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ớiparse-error.
--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ô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
[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
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
[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
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 và .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.
+key tạo nút con có tên nếu nút đó chưa
tồn tại; +nnn và + đơ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:
0 khi hợp lệ, 1 khi không hợp lệ (kèm code và
message 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 và --human ghi đè cơ chế
tự động phát hiện.
Ghi chú
setghi 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-parsercụ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. pathkhô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 quapathcũ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ằngpathgiống như mọi thao tác ghi trực tiếp khác vào tệp đó.