ინსტრუმენტების მიმოხილვა
ინსტრუმენტები არის შესაძლებლობები, რომლებიც PRX აგენტს შეუძლია გამოიძახოს მსჯელობის ციკლის დროს. როდესაც LLM გადაწყვეტს, რომ მოქმედების შესრულებაა საჭირო -- ბრძანების გაშვება, ფაილის წაკითხვა, ვებში ძიება, მოგონების შენახვა -- ის ინსტრუმენტს სახელით იძახებს სტრუქტურირებული JSON არგუმენტებით. PRX ასრულებს ინსტრუმენტს, იყენებს უსაფრთხოების პოლიტიკებს და შედეგს უბრუნებს LLM-ს მსჯელობის შემდეგი ნაბიჯისთვის.
PRX-ს გააჩნია 46+ ჩაშენებული ინსტრუმენტი 12 კატეგორიაში, ძირითადი ფაილური I/O-დან ბრაუზერის ავტომატიზაციის, მრავალაგენტური დელეგირებისა და MCP პროტოკოლის ინტეგრაციის ჩათვლით.
ინსტრუმენტის არქიტექტურა
ყველა ინსტრუმენტი ახორციელებს Tool ტრეიტს:
#[async_trait]
pub trait Tool: Send + Sync {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn parameters_schema(&self) -> serde_json::Value;
async fn execute(&self, args: serde_json::Value) -> Result<ToolResult>;
}თითოეული ინსტრუმენტი აწვდის JSON Schema-ს თავისი პარამეტრებისთვის, რომელიც LLM-ს ეგზავნება ფუნქციის განმარტების სახით. LLM გენერირებს სტრუქტურირებულ გამოძახებებს და PRX ვალიდაციას უწევს არგუმენტებს სქემის მიხედვით შესრულებამდე.
ინსტრუმენტების რეესტრი: default_tools() vs all_tools()
PRX ორდონიანი რეესტრის სისტემას იყენებს:
default_tools() -- მინიმალური ბირთვი (3 ინსტრუმენტი)
მინიმალური ინსტრუმენტების ნაკრები მსუბუქი ან შეზღუდული აგენტებისთვის. ყოველთვის ხელმისაწვდომია, დამატებითი კონფიგურაცია არ არის საჭირო:
| ინსტრუმენტი | აღწერა |
|---|---|
shell | Shell ბრძანების შესრულება სენდბოქსის იზოლაციით |
file_read | ფაილის შინაარსის წაკითხვა (ACL-ცნობიერი) |
file_write | ფაილის შინაარსის ჩაწერა |
all_tools() -- სრული რეესტრი (46+ ინსტრუმენტი)
ინსტრუმენტების სრული ნაკრები, აწყობილი თქვენი კონფიგურაციის მიხედვით. ინსტრუმენტები პირობითად რეგისტრირდება იმის მიხედვით, რომელი ფუნქციებია ჩართული:
- ყოველთვის რეგისტრირებული: ძირითადი ინსტრუმენტები, მეხსიერება, cron, დაგეგმვა, git, ხედვა, კვანძები, pushover, canvas, proxy კონფიგურაცია, სქემა
- პირობითად რეგისტრირებული: ბრაუზერი (საჭიროებს
browser.enabled), HTTP მოთხოვნები (საჭიროებსhttp_request.enabled), ვებ ძიება (საჭიროებსweb_search.enabled), ვებ მოძიება (საჭიროებსweb_search.fetch_enabled+browser.allowed_domains), MCP (საჭიროებსmcp.enabled), Composio (საჭიროებს API გასაღებს), delegate/agents_list (საჭიროებს აგენტების განმარტებებს)
კატეგორიების მითითება
ძირითადი (3 ინსტრუმენტი) -- ყოველთვის ხელმისაწვდომი
ფუნდამენტური ინსტრუმენტები, რომლებიც default_tools()-შიც და all_tools()-შიც არის.
| ინსტრუმენტი | აღწერა |
|---|---|
shell | Shell ბრძანებების შესრულება კონფიგურირებადი სენდბოქსის იზოლაციით (Landlock/Firejail/Bubblewrap/Docker). 60 წამის ტაიმაუტი, 1MB გამოტანის ლიმიტი, გასუფთავებული გარემო. |
file_read | ფაილის შინაარსის წაკითხვა ბილიკის ვალიდაციით. მეხსიერების ACL-ის ჩართვისას ბლოკავს წვდომას მეხსიერების markdown ფაილებზე წვდომის კონტროლის აღსასრულებლად. |
file_write | შინაარსის ჩაწერა ფაილებში. ექვემდებარება უსაფრთხოების პოლიტიკის შემოწმებებს. |
მეხსიერება (5 ინსტრუმენტი)
გრძელვადიანი მეხსიერების ოპერაციები აგენტის მუდმივი ცოდნის შენახვის, მოძიებისა და მართვისთვის.
| ინსტრუმენტი | აღწერა |
|---|---|
memory_store | ფაქტების, პრეფერენციების ან ჩანიშვნების შენახვა გრძელვადიან მეხსიერებაში. მხარდაჭერილი კატეგორიები: core (მუდმივი), daily (სესიური), conversation (ჩატის კონტექსტი) ან მორგებული. |
memory_forget | კონკრეტული ჩანაწერების წაშლა გრძელვადიანი მეხსიერებიდან. |
memory_get | კონკრეტული მეხსიერების ჩანაწერის მოძიება გასაღებით. ACL-ცნობიერი ჩართვისას. |
memory_recall | მოგონებების გამოხმობა საკვანძო სიტყვით ან სემანტიკური მსგავსებით. გამორთულია მეხსიერების ACL-ის ჩართვისას. |
memory_search | სრულტექსტური და ვექტორული ძიება მეხსიერების ჩანაწერებში. ACL-ცნობიერი ჩართვისას. |
Cron / დაგეგმვა (9 ინსტრუმენტი)
დროზე დაფუძნებული ამოცანების ავტომატიზაცია და Xin დაგეგმვის ძრავა.
| ინსტრუმენტი | აღწერა |
|---|---|
cron | ძველი cron შესვლის წერტილი -- დაგეგმილი ამოცანების შექმნა ან მართვა. |
cron_add | ახალი cron სამუშაოს დამატება cron გამოსახულებით, ბრძანებით და არასავალდებულო აღწერით. |
cron_list | ყველა რეგისტრირებული cron სამუშაოს ჩამოთვლა მათი განრიგითა და სტატუსით. |
cron_remove | cron სამუშაოს წაშლა ID-ით. |
cron_update | არსებული cron სამუშაოს განრიგის, ბრძანების ან პარამეტრების განახლება. |
cron_run | cron სამუშაოს ხელით დაუყოვნებელი გაშვება. |
cron_runs | cron სამუშაოს შესრულების ისტორიისა და ლოგების ნახვა. |
schedule | ერთჯერადი ან განმეორებადი ამოცანის დაგეგმვა ბუნებრივი ენის დროის გამოსახულებებით. |
xin | Xin დაგეგმვის ძრავა -- გაფართოებული ამოცანების დაგეგმვა დამოკიდებულების ჯაჭვებითა და პირობითი შესრულებით. |
ბრაუზერი / ხედვა (5 ინსტრუმენტი)
ვებ ავტომატიზაცია და სურათების დამუშავება. ბრაუზერის ინსტრუმენტები საჭიროებს [browser] enabled = true.
| ინსტრუმენტი | აღწერა |
|---|---|
browser | სრული ბრაუზერის ავტომატიზაცია ჩართვადი ბექენდებით (agent-browser CLI, Rust-ნატიური, computer-use sidecar). მხარს უჭერს ნავიგაციას, ფორმების შევსებას, დაწკაპუნებას, ეკრანის ანაბეჭდებსა და OS-დონის მოქმედებებს. |
browser_open | მარტივი URL-ის გახსნა ბრაუზერში. დომენით შეზღუდული browser.allowed_domains-ის მეშვეობით. |
screenshot | მიმდინარე ეკრანის ან კონკრეტული ფანჯრების ეკრანის ანაბეჭდის აღება. |
image | სურათების დამუშავება და ტრანსფორმაცია (ზომის შეცვლა, ამოჭრა, ფორმატის კონვერტაცია). |
image_info | სურათის ფაილებიდან მეტამონაცემებისა და ზომების ამოღება. |
ქსელი (4 ინსტრუმენტი)
HTTP მოთხოვნები, ვებ ძიება, ვებ მოძიება და MCP პროტოკოლის ინტეგრაცია.
| ინსტრუმენტი | აღწერა |
|---|---|
http_request | HTTP მოთხოვნების გაგზავნა API-ებზე. ნაგულისხმევად აკრძალული: მხოლოდ allowed_domains მისაწვდომია. კონფიგურირებადი ტაიმაუტი და პასუხის მაქსიმალური ზომა. |
web_search_tool | ვებში ძიება DuckDuckGo-ს (უფასო, გასაღების გარეშე) ან Brave Search-ის (საჭიროებს API გასაღებს) მეშვეობით. |
web_fetch | ვებ გვერდებიდან შინაარსის მოძიება და ამოღება. საჭიროებს web_search.fetch_enabled და browser.allowed_domains-ის მითითებას. |
mcp | Model Context Protocol კლიენტი -- გარე MCP სერვერებთან დაკავშირება (stdio ან HTTP ტრანსპორტები) და მათი ინსტრუმენტების გამოძახება. მხარს უჭერს სამუშაო სივრცის ლოკალურ mcp.json აღმოჩენას. |
შეტყობინებები (2 ინსტრუმენტი)
შეტყობინებების გაგზავნა კომუნიკაციის არხებით უკან.
| ინსტრუმენტი | აღწერა |
|---|---|
message_send | შეტყობინების (ტექსტი, მედია, ხმა) გაგზავნა ნებისმიერ კონფიგურირებულ არხსა და მიმღებზე. ავტომატურად მარშრუტირდება აქტიურ არხზე. |
gateway | დაბალი დონის გეითვეის წვდომა ნედლი შეტყობინებების Axum HTTP/WebSocket გეითვეის მეშვეობით გასაგზავნად. |
სესიები / აგენტები (8 ინსტრუმენტი)
მრავალაგენტური ორკესტრაცია: ქვე-აგენტების გაშვება, ამოცანების დელეგირება და ერთდროული სესიების მართვა.
| ინსტრუმენტი | აღწერა |
|---|---|
sessions_spawn | ასინქრონული ქვე-აგენტის გაშვება, რომელიც ფონში მუშაობს. დაუყოვნებლივ აბრუნებს გაშვების ID-ს; შედეგი ავტომატურად ცხადდება დასრულებისას. მხარს უჭერს history და steer მოქმედებებს. |
sessions_send | შეტყობინების გაგზავნა მიმდინარე ქვე-აგენტის სესიაზე. |
sessions_list | ყველა აქტიური ქვე-აგენტის სესიის ჩამოთვლა სტატუსით. |
sessions_history | ქვე-აგენტის გაშვების საუბრის ჟურნალის ნახვა. |
session_status | კონკრეტული სესიის სტატუსის შემოწმება. |
subagents | ქვე-აგენტების ფონდის მართვა -- ქვე-აგენტების ჩამოთვლა, შეჩერება ან ინსპექტირება. |
agents_list | ყველა კონფიგურირებული დელეგატი აგენტის ჩამოთვლა მათი მოდელებითა და შესაძლებლობებით. რეგისტრირდება მხოლოდ აგენტების კონფიგურაციაში განმარტებისას. |
delegate | ამოცანის დელეგირება დასახელებულ აგენტზე საკუთარი პროვაიდერით, მოდელითა და ინსტრუმენტების ნაკრებით. მხარს უჭერს სარეზერვო სანდოობის მონაცემებსა და იზოლირებულ აგენტურ ციკლებს. |
დისტანციური მოწყობილობები (2 ინსტრუმენტი)
დისტანციურ კვანძებთან ურთიერთობა და push შეტყობინებები.
| ინსტრუმენტი | აღწერა |
|---|---|
nodes | დისტანციური PRX კვანძების მართვა და მათთან კომუნიკაცია განაწილებულ განთავსებაში. |
pushover | Push შეტყობინებების გაგზავნა Pushover სერვისის მეშვეობით. |
Git (1 ინსტრუმენტი)
ვერსიის კონტროლის ოპერაციები.
| ინსტრუმენტი | აღწერა |
|---|---|
git_operations | Git ოპერაციების შესრულება (status, diff, commit, push, pull, log, branch) სამუშაო სივრცის რეპოზიტორიაში. |
კონფიგურაცია (2 ინსტრუმენტი)
გაშვების დროის კონფიგურაციის მართვა.
| ინსტრუმენტი | აღწერა |
|---|---|
config_reload | PRX კონფიგურაციის ფაილის ცხელი გადატვირთვა პროცესის რესტარტის გარეშე. |
proxy_config | პროქსი/ქსელის კონფიგურაციის ნახვა და ცვლილება გაშვების დროს. |
მესამე მხარის ინტეგრაცია (1 ინსტრუმენტი)
გარე პლატფორმის კონექტორები.
| ინსტრუმენტი | აღწერა |
|---|---|
composio | 250+ აპლიკაციასა და სერვისთან დაკავშირება Composio პლატფორმის მეშვეობით. საჭიროებს Composio API გასაღებს. |
რენდერინგი (2 ინსტრუმენტი)
შინაარსის გენერაცია და გამოტანის ფორმატირება.
| ინსტრუმენტი | აღწერა |
|---|---|
canvas | სტრუქტურირებული შინაარსის (ცხრილები, დიაგრამები, გრაფიკები) რენდერინგი ვიზუალური გამოტანისთვის. |
tts | ტექსტიდან მეტყველებაში -- ტექსტის ხმოვან შეტყობინებად გარდაქმნა და მიმდინარე საუბარში გაგზავნა. ავტომატურად მართავს MP3 გენერაციას, M4A კონვერტაციასა და მიტანას. |
ადმინისტრირება (1 ინსტრუმენტი)
შიდა სქემა და დიაგნოსტიკა.
| ინსტრუმენტი | აღწერა |
|---|---|
schema | JSON Schema-ს გასუფთავება და ნორმალიზაცია კროსპროვაიდერული LLM თავსებადობისთვის. წყვეტს $ref-ებს, ასწორებს კავშირებს, შლის მხარდაუჭერელ საკვანძო სიტყვებს. |
ინსტრუმენტების სრული მატრიცა
| ინსტრუმენტი | კატეგორია | ნაგულისხმევი | პირობა |
|---|---|---|---|
shell | ძირითადი | დიახ | ყოველთვის |
file_read | ძირითადი | დიახ | ყოველთვის |
file_write | ძირითადი | დიახ | ყოველთვის |
memory_store | მეხსიერება | -- | all_tools() |
memory_forget | მეხსიერება | -- | all_tools() |
memory_get | მეხსიერება | -- | all_tools() |
memory_recall | მეხსიერება | -- | all_tools(), გამორთული memory.acl_enabled = true-ისას |
memory_search | მეხსიერება | -- | all_tools() |
cron | Cron | -- | all_tools() |
cron_add | Cron | -- | all_tools() |
cron_list | Cron | -- | all_tools() |
cron_remove | Cron | -- | all_tools() |
cron_update | Cron | -- | all_tools() |
cron_run | Cron | -- | all_tools() |
cron_runs | Cron | -- | all_tools() |
schedule | დაგეგმვა | -- | all_tools() |
xin | დაგეგმვა | -- | all_tools() |
browser | ბრაუზერი | -- | browser.enabled = true |
browser_open | ბრაუზერი | -- | browser.enabled = true |
screenshot | ხედვა | -- | all_tools() |
image | ხედვა | -- | all_tools() (იმპლიციტური, ImageTool-ის მეშვეობით) |
image_info | ხედვა | -- | all_tools() |
http_request | ქსელი | -- | http_request.enabled = true |
web_search_tool | ქსელი | -- | web_search.enabled = true |
web_fetch | ქსელი | -- | web_search.fetch_enabled = true + browser.allowed_domains |
mcp | ქსელი | -- | mcp.enabled = true + სერვერები განმარტებული |
message_send | შეტყობინებები | -- | არხი აქტიური (გეითვეის დონეზე რეგისტრირებული) |
gateway | შეტყობინებები | -- | all_tools() |
sessions_spawn | სესიები | -- | all_tools() |
sessions_send | სესიები | -- | all_tools() |
sessions_list | სესიები | -- | all_tools() |
sessions_history | სესიები | -- | all_tools() |
session_status | სესიები | -- | all_tools() |
subagents | სესიები | -- | all_tools() |
agents_list | აგენტები | -- | [agents.*] სექციები განმარტებული |
delegate | აგენტები | -- | [agents.*] სექციები განმარტებული |
nodes | დისტანციური | -- | all_tools() |
pushover | დისტანციური | -- | all_tools() |
git_operations | Git | -- | all_tools() |
config_reload | კონფიგურაცია | -- | all_tools() |
proxy_config | კონფიგურაცია | -- | all_tools() |
composio | მესამე მხარე | -- | composio.api_key მითითებული |
canvas | რენდერინგი | -- | all_tools() |
tts | რენდერინგი | -- | არხი აქტიური (გეითვეის დონეზე რეგისტრირებული) |
schema | ადმინისტრირება | -- | შიდა (სქემის ნორმალიზაციის მოდული) |
ინსტრუმენტების ჩართვა და გამორთვა
ფუნქციით გაკონტროლებული ინსტრუმენტები
ბევრი ინსტრუმენტი ჩართულია შესაბამისი კონფიგურაციის სექციებით. დაამატეთ ეს თქვენს config.toml-ში:
# ── ბრაუზერის ინსტრუმენტები ──────────────────────────────────
[browser]
enabled = true
allowed_domains = ["github.com", "stackoverflow.com", "*.openprx.dev"]
backend = "agent_browser" # "agent_browser" | "rust_native" | "computer_use"
# ── HTTP მოთხოვნის ინსტრუმენტი ─────────────────────────────
[http_request]
enabled = true
allowed_domains = ["api.github.com", "api.openai.com"]
max_response_size = 1000000 # 1MB
timeout_secs = 30
# ── ვებ ძიების ინსტრუმენტი ──────────────────────────────────
[web_search]
enabled = true
provider = "duckduckgo" # "duckduckgo" (უფასო) ან "brave" (საჭიროებს API გასაღებს)
# brave_api_key = "..."
max_results = 5
timeout_secs = 10
# ასევე ჩართეთ web_fetch გვერდის შინაარსის ამოსაღებად:
fetch_enabled = true
fetch_max_chars = 50000
# ── Composio ინტეგრაცია ──────────────────────────────────────
[composio]
enabled = true
api_key = "your-composio-key"
entity_id = "default"ინსტრუმენტის პოლიტიკის პაიპლაინი
დეტალური კონტროლისთვის გამოიყენეთ [security.tool_policy] სექცია ინდივიდუალური ინსტრუმენტების ან ჯგუფების დასაშვებად, აკრძალვისთვის ან ზედამხედველობისთვის:
[security.tool_policy]
# ნაგულისხმევი პოლიტიკა: "allow", "deny" ან "supervised"
default = "allow"
# ჯგუფის დონის პოლიტიკები
[security.tool_policy.groups]
sessions = "allow"
automation = "allow"
hardware = "deny"
# თითო-ინსტრუმენტის გადაფარვები (უმაღლესი პრიორიტეტი)
[security.tool_policy.tools]
shell = "supervised" # საჭიროებს დამტკიცებას შესრულებამდე
gateway = "allow"
composio = "deny" # Composio-ს გამორთვა API გასაღების არსებობის მიუხედავადპოლიტიკის წყვეტის თანმიმდევრობა (უმაღლესი პრიორიტეტი პირველი):
- თითო-ინსტრუმენტის პოლიტიკა (
security.tool_policy.tools.<name>) - ჯგუფის პოლიტიკა (
security.tool_policy.groups.<group>) - ნაგულისხმევი პოლიტიკა (
security.tool_policy.default)
დელეგატი აგენტის ინსტრუმენტების შეზღუდვები
დელეგატი აგენტების კონფიგურაციისას შეგიძლიათ შეზღუდოთ, რომელ ინსტრუმენტებზე აქვთ წვდომა:
[agents.researcher]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
system_prompt = "You are a research assistant."
agentic = true
max_iterations = 10
allowed_tools = ["web_search_tool", "web_fetch", "file_read", "memory_store"]MCP ინსტრუმენტების ინტეგრაცია
PRX ახორციელებს Model Context Protocol (MCP) კლიენტს, რომელიც საშუალებას აძლევს გარე MCP სერვერებთან დაკავშირდეს და მათი ინსტრუმენტები აგენტისთვის გამოაქვეყნოს.
კონფიგურაცია
MCP სერვერების განმარტება config.toml-ში:
[mcp]
enabled = true
[mcp.servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/docs"]
transport = "stdio"
[mcp.servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
transport = "stdio"
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "ghp_..." }
[mcp.servers.remote-api]
url = "https://mcp.example.com/sse"
transport = "streamable_http"სამუშაო სივრცის ლოკალური mcp.json
PRX ასევე აღმოაჩენს MCP სერვერებს სამუშაო სივრცის ლოკალური mcp.json ფაილიდან, VS Code-ისა და Claude Desktop-ის იგივე ფორმატით:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["./my-mcp-server/index.js"],
"env": { "API_KEY": "..." }
}
}
}mcp.json-ში ბრძანებები შეზღუდულია უსაფრთხო გამშვებების თეთრი სიით: npx, node, python, python3, uvx, uv, deno, bun, docker, cargo, go, ruby, php, dotnet, java.
ინსტრუმენტების დინამიური აღმოჩენა
MCP ინსტრუმენტები გაშვების დროს აღმოჩენილია tools/list პროტოკოლის მეთოდით. თითოეული MCP სერვერის ინსტრუმენტები სახელთა სივრცეშია მოქცეული და LLM-სთვის გამოიძახებადი ფუნქციების სახით არის გამოქვეყნებული. mcp ინსტრუმენტი მხარს უჭერს refresh() ჰუკს, რომელიც ხელახლა აღმოაჩენს ინსტრუმენტებს თითოეული აგენტის ტურის წინ.
საშიში გარემოს ცვლადები (LD_PRELOAD, DYLD_INSERT_LIBRARIES, NODE_OPTIONS, PYTHONPATH და ა.შ.) ავტომატურად ამოიღება MCP სერვერის პროცესებიდან.
უსაფრთხოება: სენდბოქსირება და ACL
ინსტრუმენტის სენდბოქსირება
shell ინსტრუმენტი ბრძანებებს კონფიგურირებად სენდბოქსში ასრულებს. PRX მხარს უჭერს 4 სენდბოქსის ბექენდს პლუს no-op სარეზერვოს:
[security.sandbox]
enabled = true # None = ავტოგამოვლენა, true/false = ცალსახა
backend = "auto" # "auto" | "landlock" | "firejail" | "bubblewrap" | "docker" | "none"
# მორგებული Firejail არგუმენტები (backend = "firejail"-ისას)
firejail_args = ["--net=none", "--noroot"]| ბექენდი | პლატფორმა | იზოლაციის დონე | შენიშვნები |
|---|---|---|---|
| Landlock | Linux (kernel LSM) | ფაილური სისტემა | ბირთვის ნატიური, დამატებითი დამოკიდებულებების გარეშე |
| Firejail | Linux | სრული (ქსელი, ფაილური სისტემა, PID) | მომხმარებლის სივრცე, ფართოდ ხელმისაწვდომი |
| Bubblewrap | Linux, macOS | სახელთა სივრცეზე დაფუძნებული | მომხმარებლის სახელთა სივრცეები, მსუბუქი |
| Docker | ნებისმიერი | კონტეინერი | სრული კონტეინერის იზოლაცია |
| None | ნებისმიერი | მხოლოდ აპლიკაციის ფენა | OS-დონის იზოლაციის გარეშე |
ავტოგამოვლენის რეჟიმი (backend = "auto") ხელმისაწვდომ ბექენდებს ამოწმებს თანმიმდევრობით: Landlock, Firejail, Bubblewrap, Docker, შემდეგ გადადის None-ზე გაფრთხილებით.
Shell გარემოს გასუფთავება
shell ინსტრუმენტი შვილ პროცესებს მხოლოდ გარემოს ცვლადების მკაცრ თეთრ სიას გადასცემს: PATH, HOME, TERM, LANG, LC_ALL, LC_CTYPE, USER, SHELL, TMPDIR. API გასაღებები, ტოკენები და საიდუმლოებები არასოდეს გამოიქვეყნება.
მეხსიერების ACL
memory.acl_enabled = true-ისას, წვდომის კონტროლი მეხსიერების ოპერაციებზე აღსრულდება:
file_readბლოკავს წვდომას მეხსიერების markdown ფაილებზეmemory_recallსრულიად გამორთულია (ინსტრუმენტების რეესტრიდან ამოღებული)memory_getდაmemory_searchთითო-პრინციპალურ წვდომის შეზღუდვებს აღასრულებს
უსაფრთხოების პოლიტიკა
ყველა ინსტრუმენტის გამოძახება SecurityPolicy ფენას გადის შესრულებამდე. პოლიტიკის ძრავას შეუძლია:
- ოპერაციების დაბლოკვა ინსტრუმენტის პოლიტიკის წესების საფუძველზე
- ზედამხედველის დამტკიცების მოთხოვნა
supervisedინსტრუმენტებისთვის - ყველა ინსტრუმენტის გამოძახების აუდიტი
- რეიტ ლიმიტებისა და რესურსების შეზღუდვების აღსრულება
[security.resources]
max_memory_mb = 512
max_cpu_percent = 80
max_open_files = 256გაფართოება: მორგებული ინსტრუმენტების წერა
ახალი ინსტრუმენტის დასამატებლად:
- შექმენით ახალი მოდული
src/tools/-ში, რომელიცToolტრეიტს ახორციელებს - დაარეგისტრირეთ
all_tools_with_runtime_ext()-შიsrc/tools/mod.rs-ში - დაამატეთ
pub modდაpub useჩანაწერებიmod.rs-ში
მაგალითი:
use super::traits::{Tool, ToolResult};
use async_trait::async_trait;
use serde_json::json;
pub struct MyTool { /* ... */ }
#[async_trait]
impl Tool for MyTool {
fn name(&self) -> &str { "my_tool" }
fn description(&self) -> &str {
"Does something useful."
}
fn parameters_schema(&self) -> serde_json::Value {
json!({
"type": "object",
"properties": {
"input": { "type": "string", "description": "The input value" }
},
"required": ["input"]
})
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
let input = args["input"].as_str().unwrap_or_default();
Ok(ToolResult {
success: true,
output: format!("Processed: {input}"),
error: None,
})
}
}იხილეთ AGENTS.md სექცია 7.3 სრული ცვლილებების გეგმისთვის.