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

ჰუკები

PRX ჰუკები მოვლენებით მართულ გაფართოების სისტემას უზრუნველყოფს, რომელიც აგენტის შესრულების დროს სასიცოცხლო ციკლის მოვლენებზე რეაგირების საშუალებას იძლევა. აგენტის ციკლის ყოველი მნიშვნელოვანი მომენტი -- ბიჯის დაწყება, LLM-ის გამოძახება, ინსტრუმენტის გაშვება, შეცდომის დაფიქსირება -- ჰუკის მოვლენას ასხივებს. მოვლენებზე მოქმედებები hooks.json კონფიგურაციის ფაილით, WASM პლაგინის მანიფესტებით ან HTTP API-ით მიმაგრდება.

ჰუკები ცეცხლი-და-დავიწყება (fire-and-forget) პრინციპით მუშაობს. ისინი არასდროს ბლოკავს აგენტის ციკლს, არასდროს ცვლის შესრულების ნაკადს და არასდროს აბრუნებს მონაცემებს საუბარში. ეს მათ იდეალურს ხდის აუდიტის ჟურნალისთვის, მეტრიკების შეგროვებისთვის, გარე შეტყობინებებისთვის და გვერდითი ეფექტების ავტომატიზაციისთვის -- ბირთვულ აგენტის პაიპლაინში ლატენტურობის ან მარცხის რეჟიმების შეტანის გარეშე.

სამი ჰუკის შესრულების ბექენდი არსებობს:

  • Shell ჰუკები -- გარე ბრძანების შესრულება მოვლენის დატვირთვით, რომელიც გარემოს ცვლადით, დროებითი ფაილით ან stdin-ით გადაეცემა. კონფიგურირდება hooks.json-ში.
  • WASM პლაგინის ჰუკები -- WASM პლაგინის მიერ ექსპორტირებული on-event ფუნქციის გამოძახება. განსაზღვრულია პლაგინის plugin.toml მანიფესტში.
  • მოვლენების ავტობუსის ჰუკები -- შიდა მოვლენების ავტობუსზე გამოქვეყნება თემაზე prx.lifecycle.<event>. ყოველთვის აქტიურია; კონფიგურაცია არ არის საჭირო.

ჰუკის მოვლენები

PRX 8 სასიცოცხლო ციკლის მოვლენას ასხივებს. თითოეული მოვლენა კონტექსტისთვის სპეციფიკური ველების მქონე JSON დატვირთვას ატარებს.

მოვლენაროდის ასხივდებადატვირთვის ველები
agent_startაგენტის ციკლი ახალ ბიჯს იწყებსagent (string), session (string)
agent_endაგენტის ციკლი ბიჯს ასრულებსsuccess (bool), messages_count (number)
llm_requestLLM პროვაიდერზე მოთხოვნის გაგზავნამდეprovider (string), model (string), messages_count (number)
llm_responseLLM პასუხის მიღების შემდეგprovider (string), model (string), duration_ms (number), success (bool)
tool_call_startინსტრუმენტის შესრულების დაწყებამდეtool (string), arguments (object)
tool_callინსტრუმენტის შესრულების დასრულების შემდეგtool (string), success (bool), output (string)
turn_completeსრული ბიჯი დასრულდა (ყველა ინსტრუმენტი გადაწყვეტილია)(ცარიელი ობიექტი)
errorშესრულების დროს ნებისმიერი შეცდომაcomponent (string), message (string)

დატვირთვის სქემები

ყველა დატვირთვა JSON ობიექტია. ზედა დონის სტრუქტურა მოვლენისთვის სპეციფიკურ ველებს ახვევს:

json
{
  "event": "llm_response",
  "timestamp": "2026-03-21T08:15:30.123Z",
  "session_id": "sess_abc123",
  "payload": {
    "provider": "openai",
    "model": "gpt-4o",
    "duration_ms": 1842,
    "success": true
  }
}

event, timestamp და session_id ველები ყოველ ჰუკის მოვლენაში არსებობს. payload ობიექტი მოვლენის ტიპის მიხედვით იცვლება, როგორც ზემოთ ცხრილშია აღწერილი.

კონფიგურაცია

Shell ჰუკები hooks.json ფაილით კონფიგურირდება, რომელიც სამუშაო სივრცის დირექტორიაში (იმავე დირექტორიაში, სადაც config.toml) თავსდება. PRX ამ ფაილს ცვლილებებისთვის აკვირდება და კონფიგურაციას ცხლად ტვირთავს გადატვირთვის საჭიროების გარეშე.

ძირითადი სტრუქტურა

json
{
  "hooks": {
    "<event_name>": [
      {
        "command": "/path/to/script",
        "args": ["--flag", "value"],
        "env": {
          "CUSTOM_VAR": "value"
        },
        "cwd": "/working/directory",
        "timeout_ms": 5000,
        "stdin_json": true
      }
    ]
  }
}

თითოეული მოვლენის სახელი ჰუკის მოქმედებების მასივზე შეესაბამება. ერთ მოვლენაზე მრავალი მოქმედება შეიძლება მიმაგრდეს; ისინი ერთდროულად და დამოუკიდებლად სრულდება.

სრული მაგალითი

json
{
  "hooks": {
    "agent_start": [
      {
        "command": "/usr/local/bin/notify",
        "args": ["--channel", "ops", "--title", "Agent Started"],
        "timeout_ms": 3000
      }
    ],
    "llm_response": [
      {
        "command": "python3",
        "args": ["/opt/hooks/log_latency.py"],
        "stdin_json": true,
        "timeout_ms": 2000
      }
    ],
    "tool_call": [
      {
        "command": "/opt/hooks/audit_tool_usage.sh",
        "env": {
          "LOG_DIR": "/var/log/prx/audit"
        },
        "timeout_ms": 5000
      }
    ],
    "error": [
      {
        "command": "curl",
        "args": [
          "-X", "POST",
          "-H", "Content-Type: application/json",
          "-d", "@-",
          "https://hooks.slack.com/services/T00/B00/xxxxx"
        ],
        "stdin_json": true,
        "timeout_ms": 10000
      }
    ]
  }
}

ჰუკის მოქმედების ველები

თითოეული ჰუკის მოქმედების ობიექტი შემდეგ ველებს უჭერს მხარს:

ველიტიპისავალდებულონაგულისხმევიაღწერა
commandstringდიახ--შესრულებადი ფაილის აბსოლუტური ბილიკი ან სანიტარიზებულ PATH-ში ნაპოვნი ბრძანების სახელი
argsstring[]არა[]ბრძანებაზე გადაცემული არგუმენტები
envobjectარა{}დამატებითი გარემოს ცვლადები, რომლებიც სანიტარიზებულ შესრულების გარემოში ერწყმება
cwdstringარასამუშაო სივრცის დირექტორიაგაშვებული პროცესის სამუშაო დირექტორია
timeout_msnumberარა30000შესრულების მაქსიმალური დრო მილიწამებში. პროცესი მოკვდება (SIGKILL) ლიმიტის გადაჭარბებისას
stdin_jsonboolარაfalsetrue შემთხვევაში სრული მოვლენის დატვირთვის JSON stdin-ით მიეწოდება პროცესს

შენიშვნები command-ის შესახებ

command ველი შესრულებამდე უსაფრთხოების ვალიდაციას გადის. იგი არ უნდა შეიცავდეს shell-ის მეტასიმბოლოებს (;, |, &, `, $()) -- ისინი shell ინექციის თავიდან ასაცილებლად უარყოფილია. თუ shell-ის ფუნქციები გჭირდებათ, მოათავსეთ ისინი სკრიპტის ფაილში და command ამ სკრიპტზე მიმართეთ.

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

დატვირთვის მიწოდება

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

1. გარემოს ცვლადი (ZERO_HOOK_PAYLOAD)

დატვირთვის JSON სტრინგი ZERO_HOOK_PAYLOAD გარემოს ცვლადად დაყენდება. ეს shell სკრიპტებისთვის ყველაზე მარტივი წვდომის მეთოდია:

bash
#!/bin/bash
# დატვირთვის წაკითხვა გარემოს ცვლადიდან
echo "$ZERO_HOOK_PAYLOAD" | jq '.payload.tool'

ზომის ლიმიტი: 8 KB. თუ სერიალიზებული დატვირთვა 8 KB-ს აღემატება, გარემოს ცვლადი არ დაყენდება და დატვირთვა მხოლოდ დროებითი ფაილისა და stdin არხებით იქნება ხელმისაწვდომი.

2. დროებითი ფაილი (ZERO_HOOK_PAYLOAD_FILE)

დატვირთვა დროებით ფაილში იწერება, ხოლო ფაილის ბილიკი ZERO_HOOK_PAYLOAD_FILE გარემოს ცვლადში აყენდება. დროებითი ფაილი ჰუკის პროცესის დასრულების შემდეგ ავტომატურად წაიშლება.

python
import os, json

payload_file = os.environ["ZERO_HOOK_PAYLOAD_FILE"]
with open(payload_file) as f:
    data = json.load(f)
print(f"Tool: {data['payload']['tool']}, Success: {data['payload']['success']}")

ამ არხს ზომის ლიმიტი არ აქვს და რეკომენდებულია დატვირთვებისთვის, რომლებიც შესაძლოა დიდი იყოს (მაგ., tool_call ვრცელი გამოსავალით).

3. სტანდარტული შემავალი (stdin)

როდესაც stdin_json true-ზეა დაყენებული ჰუკის მოქმედებაში, დატვირთვის JSON stdin-ით მიეწოდება პროცესს. ეს სასარგებლოა ბრძანებებისთვის, რომლებიც stdin-იდან კითხულობს, მაგალითად curl -d @- ან jq.

bash
#!/bin/bash
# stdin-იდან წაკითხვა (მოითხოვს stdin_json: true ჰუკის კონფიგურაციაში)
read -r payload
echo "$payload" | jq -r '.payload.message'

გარემოს ცვლადები

ყოველი ჰუკის პროცესი შემდეგ გარემოს ცვლადებს იღებს, ZERO_HOOK_PAYLOAD და ZERO_HOOK_PAYLOAD_FILE-ის გარდა:

ცვლადიაღწერამაგალითი
ZERO_HOOK_EVENTმოვლენის სახელი, რომელმაც ეს ჰუკი გააქტივაtool_call
ZERO_HOOK_SESSIONმიმდინარე სესიის იდენტიფიკატორიsess_abc123
ZERO_HOOK_TIMESTAMPმოვლენის ISO 8601 დროის შტამპი2026-03-21T08:15:30.123Z
ZERO_HOOK_PAYLOADსრული დატვირთვა JSON სტრინგად (გამოტოვებულია >8 KB შემთხვევაში){"event":"tool_call",...}
ZERO_HOOK_PAYLOAD_FILEდატვირთვის შემცველი დროებითი ფაილის ბილიკი/tmp/prx-hook-a1b2c3.json

შესრულების გარემო ჰუკის პროცესის დაწყებამდე სანიტარიზებულია. საშიში და სენსიტიური გარემოს ცვლადები ამოიშლება (იხ. უსაფრთხოება ქვემოთ), და მხოლოდ ზემოთ ჩამოთვლილი ცვლადები პლუს ჰუკის მოქმედებიდან env გადაფარვები ხელმისაწვდომია.

WASM პლაგინის ჰუკები

WASM პლაგინებს შეუძლიათ ჰუკის მოვლენებზე გამოწერა PRX WIT (WebAssembly Interface Types) ინტერფეისში განსაზღვრული on-event ფუნქციის ექსპორტით.

WIT ინტერფეისი

wit
interface hooks {
    /// გამოძახდება გამოწერილი მოვლენის გააქტივებისას.
    /// აბრუნებს Ok(()) წარმატებისას, Err(message) მარცხისას.
    on-event: func(event: string, payload-json: string) -> result<_, string>;
}

event პარამეტრი არის მოვლენის სახელი (მაგ., "tool_call"), ხოლო payload-json არის სრული დატვირთვა JSON სტრინგად სერიალიზებული, იდენტური იმისა, რასაც shell ჰუკები იღებს.

მოვლენებზე გამოწერის შაბლონები

პლაგინები აცხადებს რომელი მოვლენების მიღება სურთ plugin.toml მანიფესტში შაბლონის შედარების გამოყენებით:

შაბლონიემთხვევამაგალითი
ზუსტი შესაბამისობაერთ კონკრეტულ მოვლენას"tool_call"
ბადალი სუფიქსიპრეფიქსთან შესაბამისი ყველა მოვლენა"prx.lifecycle.*"
უნივერსალურიყველა მოვლენა"*"

პლაგინის მანიფესტის მაგალითი

toml
[plugin]
name = "audit-logger"
version = "0.1.0"
description = "Logs all lifecycle events to an audit trail"

[[capabilities]]
type = "hook"
events = ["agent_start", "agent_end", "error"]

[[capabilities]]
type = "hook"
events = ["prx.lifecycle.*"]

ერთ პლაგინს შეუძლია მრავალი [[capabilities]] ბლოკი სხვადასხვა მოვლენის შაბლონებით განაცხადოს. ყველა შესაბამისი მოვლენის კავშირი განსაზღვრავს რომელ მოვლენებს მიიღებს პლაგინი.

შესრულების მოდელი

WASM პლაგინის ჰუკები WASM სენდბოქსში მუშაობს პლაგინის სხვა ფუნქციების იგივე რესურსების ლიმიტებით. მათზე ვრცელდება:

  • მეხსიერების ლიმიტი: განსაზღვრული პლაგინის რესურსების კონფიგურაციაში (ნაგულისხმევი 64 MB)
  • შესრულების დროის ამოწურვა: იგივე, რაც shell ჰუკებისთვის timeout_ms (ნაგულისხმევი 30 წამი)
  • ფაილური სისტემის წვდომა არ აქვს: თუ WASI შესაძლებლობებით ექსპლიციტურად არ არის მინიჭებული
  • ქსელური წვდომა არ აქვს: თუ შესაძლებლობების ფლაგებით ექსპლიციტურად არ არის მინიჭებული

თუ WASM ჰუკი Err(message)-ს აბრუნებს, შეცდომა ჟურნალში აღირიცხება, მაგრამ აგენტის ციკლს არ ეხება. ჰუკები ყოველთვის ცეცხლი-და-დავიწყების პრინციპით მუშაობს.

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

ყოველი ჰუკის მოვლენა ავტომატურად ქვეყნდება შიდა მოვლენების ავტობუსზე თემაზე prx.lifecycle.<event>. ეს ხდება მიუხედავად იმისა, კონფიგურირებულია თუ არა shell ან WASM ჰუკები.

თემის ფორმატი

prx.lifecycle.agent_start
prx.lifecycle.agent_end
prx.lifecycle.llm_request
prx.lifecycle.llm_response
prx.lifecycle.tool_call_start
prx.lifecycle.tool_call
prx.lifecycle.turn_complete
prx.lifecycle.error

გამოწერის ტიპები

შიდა კომპონენტებსა და პლაგინებს შეუძლიათ მოვლენების ავტობუსის თემებზე სამი შაბლონით გამოწერა:

  • ზუსტი: prx.lifecycle.tool_call -- მხოლოდ tool_call მოვლენებს იღებს
  • ბადალი: prx.lifecycle.* -- ყველა სასიცოცხლო ციკლის მოვლენას იღებს
  • იერარქიული: prx.* -- ყველა PRX დომენის მოვლენას იღებს (სასიცოცხლო ციკლი, მეტრიკები და სხვ.)

დატვირთვის ლიმიტები

შეზღუდვამნიშვნელობა
დატვირთვის მაქსიმალური ზომა64 KB
რეკურსიის მაქსიმალური სიღრმე8 დონე
გადაცემის მოდელიცეცხლი-და-დავიწყება (ასინქრონული)
მიწოდების გარანტიამაქსიმუმ-ერთხელ

თუ ჰუკის მოვლენა სხვა ჰუკის მოვლენას გააქტივებს (მაგ., ჰუკის სკრიპტი ინსტრუმენტს გამოიძახებს, რომელიც tool_call-ს ასხივებს), რეკურსიის მთვლელი იზრდება. 8 დონის სიღრმეზე შემდგომი მოვლენების ასხივება უხმოდ წყდება უსასრულო ციკლების თავიდან ასაცილებლად.

HTTP API

ჰუკები პროგრამულად შეიძლება იმართოს HTTP API-ით. ყველა ენდფოინთი ავთენტიფიკაციას მოითხოვს და JSON პასუხებს აბრუნებს.

ყველა ჰუკის სია

GET /api/hooks

პასუხი:

json
{
  "hooks": [
    {
      "id": "hook_01",
      "event": "error",
      "action": {
        "command": "/opt/hooks/notify_error.sh",
        "args": [],
        "timeout_ms": 5000,
        "stdin_json": false
      },
      "enabled": true,
      "created_at": "2026-03-20T10:00:00Z",
      "updated_at": "2026-03-20T10:00:00Z"
    }
  ]
}

ჰუკის შექმნა

POST /api/hooks
Content-Type: application/json

{
  "event": "llm_response",
  "action": {
    "command": "python3",
    "args": ["/opt/hooks/track_latency.py"],
    "stdin_json": true,
    "timeout_ms": 3000
  },
  "enabled": true
}

პასუხი (201 Created):

json
{
  "id": "hook_02",
  "event": "llm_response",
  "action": {
    "command": "python3",
    "args": ["/opt/hooks/track_latency.py"],
    "stdin_json": true,
    "timeout_ms": 3000
  },
  "enabled": true,
  "created_at": "2026-03-21T08:00:00Z",
  "updated_at": "2026-03-21T08:00:00Z"
}

ჰუკის განახლება

PUT /api/hooks/hook_02
Content-Type: application/json

{
  "event": "llm_response",
  "action": {
    "command": "python3",
    "args": ["/opt/hooks/track_latency_v2.py"],
    "stdin_json": true,
    "timeout_ms": 5000
  },
  "enabled": true
}

პასუხი (200 OK): აბრუნებს განახლებულ ჰუკის ობიექტს.

ჰუკის წაშლა

DELETE /api/hooks/hook_02

პასუხი (204 No Content): წარმატებისას ცარიელი სხეული.

ჰუკის გადართვა

PATCH /api/hooks/hook_01/toggle

პასუხი (200 OK):

json
{
  "id": "hook_01",
  "enabled": false
}

ეს ენდფოინთი enabled მდგომარეობას ცვლის. გამორთული ჰუკები კონფიგურაციაში რჩება, მაგრამ მათი მოვლენის გააქტივებისას არ სრულდება.

უსაფრთხოება

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

დაბლოკილი გარემოს ცვლადები

შემდეგი გარემოს ცვლადები ჰუკის შესრულების გარემოდან ამოიშლება და ჰუკის მოქმედებაში env ველით ვერ გადაიფარება:

ცვლადიმიზეზი
LD_PRELOADბიბლიოთეკის ინექციის თავდასხმის ვექტორი
LD_LIBRARY_PATHბიბლიოთეკის ძიების ბილიკის მანიპულაცია
DYLD_INSERT_LIBRARIESmacOS ბიბლიოთეკის ინექცია
DYLD_LIBRARY_PATHmacOS ბიბლიოთეკის ბილიკის მანიპულაცია
PATHPATH-ის გატაცების თავიდან აცილება; მინიმალური უსაფრთხო PATH მიეწოდება
HOMEსახლის დირექტორიის გაყალბების თავიდან აცილება

შემავალი მონაცემების ვალიდაცია

  • ნულოვანი ბაიტის უარყოფა: ნებისმიერი command, args, env გასაღები ან env მნიშვნელობა, რომელიც ნულოვან ბაიტს (\0) შეიცავს, უარყოფილია. ეს თავიდან იცილებს ნულოვანი ბაიტის ინექციის თავდასხმებს, რომლებმაც შეიძლება სტრინგები OS დონეზე შეამოკლოს.
  • Shell მეტასიმბოლოების უარყოფა: command ველი არ უნდა შეიცავდეს ;, |, &, `, $( ან სხვა shell მეტასიმბოლოებს. ეს shell ინექციას თავიდან იცილებს, თუნდაც ბრძანება შემთხვევით shell-ში გადავიდეს.
  • ბილიკის გადაცილება: cwd ველი ვალიდაცია, რომ .. კომპონენტებით სამუშაო სივრცის დირექტორიის მიღმა არ გავიდეს.

დროის ამოწურვის აღსრულება

ყოველი ჰუკის პროცესი კონფიგურირებულ timeout_ms-ს ექვემდებარება (ნაგულისხმევი 30 წამი). თუ პროცესი ამ ლიმიტს გადააჭარბებს:

  1. SIGTERM იგზავნება პროცესზე
  2. 5-წამიანი საშეღავათო პერიოდის შემდეგ SIGKILL იგზავნება
  3. ჰუკი შიდა მეტრიკებში დროის ამოწურვით აღინიშნება
  4. აგენტის ციკლს არ ეხება

რესურსის იზოლაცია

ჰუკის პროცესები shell ინსტრუმენტის შესრულებების იგივე cgroup და namespace შეზღუდვებს მემკვიდრეობით იღებს, როდესაც სენდბოქსის ბექენდი აქტიურია. Docker სენდბოქსის რეჟიმში ჰუკები ცალკე კონტეინერში მუშაობს ნაგულისხმევად ქსელის წვდომის გარეშე.

მაგალითები

აუდიტის ჟურნალის ჰუკი

ყოველი ინსტრუმენტის გამოძახების ჟურნალი ფაილში შესაბამისობის აუდიტისთვის:

json
{
  "hooks": {
    "tool_call": [
      {
        "command": "/opt/hooks/audit_log.sh",
        "env": {
          "AUDIT_LOG": "/var/log/prx/tool_audit.jsonl"
        },
        "timeout_ms": 2000
      }
    ]
  }
}

/opt/hooks/audit_log.sh:

bash
#!/bin/bash
echo "$ZERO_HOOK_PAYLOAD" >> "$AUDIT_LOG"

შეცდომის შეტყობინების ჰუკი

შეცდომის მოვლენების Slack არხზე გაგზავნა:

json
{
  "hooks": {
    "error": [
      {
        "command": "curl",
        "args": [
          "-s", "-X", "POST",
          "-H", "Content-Type: application/json",
          "-d", "@-",
          "https://hooks.slack.com/services/T00/B00/xxxxx"
        ],
        "stdin_json": true,
        "timeout_ms": 10000
      }
    ]
  }
}

LLM ლატენტურობის მეტრიკების ჰუკი

LLM პასუხის დროის თვალყურის დევნება მონიტორინგის დაფებისთვის:

json
{
  "hooks": {
    "llm_response": [
      {
        "command": "python3",
        "args": ["/opt/hooks/metrics.py"],
        "stdin_json": true,
        "timeout_ms": 3000
      }
    ]
  }
}

/opt/hooks/metrics.py:

python
import sys, json

data = json.load(sys.stdin)
payload = data["payload"]
provider = payload["provider"]
model = payload["model"]
duration = payload["duration_ms"]
success = payload["success"]

# StatsD, Prometheus pushgateway ან ნებისმიერ მეტრიკების ბექენდზე გაგზავნა
print(f"prx.llm.duration,provider={provider},model={model} {duration}")
print(f"prx.llm.success,provider={provider},model={model} {1 if success else 0}")

სესიის სასიცოცხლო ციკლის თვალყურის დევნება

აგენტის სესიის დაწყებისა და დასრულების თვალყურის დევნება გამოყენების ანალიტიკისთვის:

json
{
  "hooks": {
    "agent_start": [
      {
        "command": "/opt/hooks/session_tracker.sh",
        "args": ["start"],
        "timeout_ms": 2000
      }
    ],
    "agent_end": [
      {
        "command": "/opt/hooks/session_tracker.sh",
        "args": ["end"],
        "timeout_ms": 2000
      }
    ]
  }
}

დაკავშირებული გვერდები

  • Shell-ის შესრულება -- Shell ინსტრუმენტი, რომელსაც ჰუკები ხშირად ახვევს
  • MCP ინტეგრაცია -- გარე ინსტრუმენტის პროტოკოლი, რომელიც tool_call მოვლენებს ასხივებს
  • პლაგინები -- WASM პლაგინის სისტემა ჰუკის შესაძლებლობების ჩათვლით
  • დაკვირვება -- მეტრიკები და ტრეისინგი, რომლებიც ჰუკებს ავსებს
  • უსაფრთხოება -- სენდბოქსი და პოლიტიკის ძრავი, რომელიც ჰუკის შესრულებას მართავს

Released under the Apache-2.0 License.