Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

ინსტრუმენტების მიმოხილვა

ინსტრუმენტები არის შესაძლებლობები, რომლებიც PRX აგენტს შეუძლია გამოიძახოს მსჯელობის ციკლის დროს. როდესაც LLM გადაწყვეტს, რომ მოქმედების შესრულებაა საჭირო -- ბრძანების გაშვება, ფაილის წაკითხვა, ვებში ძიება, მოგონების შენახვა -- ის ინსტრუმენტს სახელით იძახებს სტრუქტურირებული JSON არგუმენტებით. PRX ასრულებს ინსტრუმენტს, იყენებს უსაფრთხოების პოლიტიკებს და შედეგს უბრუნებს LLM-ს მსჯელობის შემდეგი ნაბიჯისთვის.

PRX-ს გააჩნია 46+ ჩაშენებული ინსტრუმენტი 12 კატეგორიაში, ძირითადი ფაილური I/O-დან ბრაუზერის ავტომატიზაციის, მრავალაგენტური დელეგირებისა და MCP პროტოკოლის ინტეგრაციის ჩათვლით.

ინსტრუმენტის არქიტექტურა

ყველა ინსტრუმენტი ახორციელებს Tool ტრეიტს:

rust
#[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 ინსტრუმენტი)

მინიმალური ინსტრუმენტების ნაკრები მსუბუქი ან შეზღუდული აგენტებისთვის. ყოველთვის ხელმისაწვდომია, დამატებითი კონფიგურაცია არ არის საჭირო:

ინსტრუმენტიაღწერა
shellShell ბრძანების შესრულება სენდბოქსის იზოლაციით
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()-შიც არის.

ინსტრუმენტიაღწერა
shellShell ბრძანებების შესრულება კონფიგურირებადი სენდბოქსის იზოლაციით (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_removecron სამუშაოს წაშლა ID-ით.
cron_updateარსებული cron სამუშაოს განრიგის, ბრძანების ან პარამეტრების განახლება.
cron_runcron სამუშაოს ხელით დაუყოვნებელი გაშვება.
cron_runscron სამუშაოს შესრულების ისტორიისა და ლოგების ნახვა.
scheduleერთჯერადი ან განმეორებადი ამოცანის დაგეგმვა ბუნებრივი ენის დროის გამოსახულებებით.
xinXin დაგეგმვის ძრავა -- გაფართოებული ამოცანების დაგეგმვა დამოკიდებულების ჯაჭვებითა და პირობითი შესრულებით.

ბრაუზერი / ხედვა (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_requestHTTP მოთხოვნების გაგზავნა API-ებზე. ნაგულისხმევად აკრძალული: მხოლოდ allowed_domains მისაწვდომია. კონფიგურირებადი ტაიმაუტი და პასუხის მაქსიმალური ზომა.
web_search_toolვებში ძიება DuckDuckGo-ს (უფასო, გასაღების გარეშე) ან Brave Search-ის (საჭიროებს API გასაღებს) მეშვეობით.
web_fetchვებ გვერდებიდან შინაარსის მოძიება და ამოღება. საჭიროებს web_search.fetch_enabled და browser.allowed_domains-ის მითითებას.
mcpModel 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 კვანძების მართვა და მათთან კომუნიკაცია განაწილებულ განთავსებაში.
pushoverPush შეტყობინებების გაგზავნა Pushover სერვისის მეშვეობით.

Git (1 ინსტრუმენტი)

ვერსიის კონტროლის ოპერაციები.

ინსტრუმენტიაღწერა
git_operationsGit ოპერაციების შესრულება (status, diff, commit, push, pull, log, branch) სამუშაო სივრცის რეპოზიტორიაში.

კონფიგურაცია (2 ინსტრუმენტი)

გაშვების დროის კონფიგურაციის მართვა.

ინსტრუმენტიაღწერა
config_reloadPRX კონფიგურაციის ფაილის ცხელი გადატვირთვა პროცესის რესტარტის გარეშე.
proxy_configპროქსი/ქსელის კონფიგურაციის ნახვა და ცვლილება გაშვების დროს.

მესამე მხარის ინტეგრაცია (1 ინსტრუმენტი)

გარე პლატფორმის კონექტორები.

ინსტრუმენტიაღწერა
composio250+ აპლიკაციასა და სერვისთან დაკავშირება Composio პლატფორმის მეშვეობით. საჭიროებს Composio API გასაღებს.

რენდერინგი (2 ინსტრუმენტი)

შინაარსის გენერაცია და გამოტანის ფორმატირება.

ინსტრუმენტიაღწერა
canvasსტრუქტურირებული შინაარსის (ცხრილები, დიაგრამები, გრაფიკები) რენდერინგი ვიზუალური გამოტანისთვის.
ttsტექსტიდან მეტყველებაში -- ტექსტის ხმოვან შეტყობინებად გარდაქმნა და მიმდინარე საუბარში გაგზავნა. ავტომატურად მართავს MP3 გენერაციას, M4A კონვერტაციასა და მიტანას.

ადმინისტრირება (1 ინსტრუმენტი)

შიდა სქემა და დიაგნოსტიკა.

ინსტრუმენტიაღწერა
schemaJSON 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()
cronCron--all_tools()
cron_addCron--all_tools()
cron_listCron--all_tools()
cron_removeCron--all_tools()
cron_updateCron--all_tools()
cron_runCron--all_tools()
cron_runsCron--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_operationsGit--all_tools()
config_reloadკონფიგურაცია--all_tools()
proxy_configკონფიგურაცია--all_tools()
composioმესამე მხარე--composio.api_key მითითებული
canvasრენდერინგი--all_tools()
ttsრენდერინგი--არხი აქტიური (გეითვეის დონეზე რეგისტრირებული)
schemaადმინისტრირება--შიდა (სქემის ნორმალიზაციის მოდული)

ინსტრუმენტების ჩართვა და გამორთვა

ფუნქციით გაკონტროლებული ინსტრუმენტები

ბევრი ინსტრუმენტი ჩართულია შესაბამისი კონფიგურაციის სექციებით. დაამატეთ ეს თქვენს config.toml-ში:

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] სექცია ინდივიდუალური ინსტრუმენტების ან ჯგუფების დასაშვებად, აკრძალვისთვის ან ზედამხედველობისთვის:

toml
[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 გასაღების არსებობის მიუხედავად

პოლიტიკის წყვეტის თანმიმდევრობა (უმაღლესი პრიორიტეტი პირველი):

  1. თითო-ინსტრუმენტის პოლიტიკა (security.tool_policy.tools.<name>)
  2. ჯგუფის პოლიტიკა (security.tool_policy.groups.<group>)
  3. ნაგულისხმევი პოლიტიკა (security.tool_policy.default)

დელეგატი აგენტის ინსტრუმენტების შეზღუდვები

დელეგატი აგენტების კონფიგურაციისას შეგიძლიათ შეზღუდოთ, რომელ ინსტრუმენტებზე აქვთ წვდომა:

toml
[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-ში:

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-ის იგივე ფორმატით:

json
{
  "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 სარეზერვოს:

toml
[security.sandbox]
enabled = true           # None = ავტოგამოვლენა, true/false = ცალსახა
backend = "auto"         # "auto" | "landlock" | "firejail" | "bubblewrap" | "docker" | "none"

# მორგებული Firejail არგუმენტები (backend = "firejail"-ისას)
firejail_args = ["--net=none", "--noroot"]
ბექენდიპლატფორმაიზოლაციის დონეშენიშვნები
LandlockLinux (kernel LSM)ფაილური სისტემაბირთვის ნატიური, დამატებითი დამოკიდებულებების გარეშე
FirejailLinuxსრული (ქსელი, ფაილური სისტემა, PID)მომხმარებლის სივრცე, ფართოდ ხელმისაწვდომი
BubblewrapLinux, 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 ინსტრუმენტებისთვის
  • ყველა ინსტრუმენტის გამოძახების აუდიტი
  • რეიტ ლიმიტებისა და რესურსების შეზღუდვების აღსრულება
toml
[security.resources]
max_memory_mb = 512
max_cpu_percent = 80
max_open_files = 256

გაფართოება: მორგებული ინსტრუმენტების წერა

ახალი ინსტრუმენტის დასამატებლად:

  1. შექმენით ახალი მოდული src/tools/-ში, რომელიც Tool ტრეიტს ახორციელებს
  2. დაარეგისტრირეთ all_tools_with_runtime_ext()-ში src/tools/mod.rs-ში
  3. დაამატეთ pub mod და pub use ჩანაწერები mod.rs-ში

მაგალითი:

rust
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 სრული ცვლილებების გეგმისთვის.

Released under the Apache-2.0 License.