ვებჰუკის დისპეტჩერი
openpr-webhook არის Axum-ზე აგებული Rust სერვისი, რომელიც ხიდს ქმნის OpenPR-ის პროექტების მართვის მოვლენებსა და ხელოვნური ინტელექტის კოდირების აგენტებს შორის. ის იღებს ვებჰუკის მოვლენებს, ამოწმებს მათ ავთენტურობას და უშვებს შესაბამის აგენტს ამოცანაზე სამუშაოდ.
არქიტექტურა
Section titled “არქიტექტურა”OpenPR ──ვებჰუკი──▶ openpr-webhook ──CLI──▶ ხელოვნური ინტელექტის აგენტი │ │ │◀─────გამოძახება────────┘ │ WSS ტუნელი (არჩევითი, NAT-ის გადალახვისთვის)ვებჰუკის ბოლო წერტილი
Section titled “ვებჰუკის ბოლო წერტილი”სერვისი აქვეყნებს HTTP ბოლო წერტილს, რომელიც იღებს OpenPR-ის ვებჰუკის მოვლენებს. ყოველი შემავალი მოთხოვნა მოწმდება HMAC-SHA256 ხელმოწერის ვალიდაციით OpenPR-სა და დისპეტჩერს შორის კონფიგურირებული საზიარო საიდუმლოს გამოყენებით.
მხარდაჭერილი მოვლენების ტიპები მოიცავს issue.created, issue.updated და OpenPR-ის სასიცოცხლო ციკლის სხვა მოვლენებს. დისპეტჩერი ფილტრავს მათ ბოტის ამოცანების გამოსავლენად — მოვლენები, სადაც მინიჭებული პირი ბოტ-მომხმარებელია — და იგნორირებს მხოლოდ ადამიანების მინიჭებებს.
აგენტის ტიპები
Section titled “აგენტის ტიპები”დისპეტჩერი მხარს უჭერს ხუთ აგენტის ტიპს:
| აგენტის ტიპი | აღწერა |
|---|---|
openclaw | OpenPRX-ის ნაგულისხმევი კოდირების აგენტი |
openprx | ზოგადი დანიშნულების OpenPRX აგენტი |
webhook | მოვლენების გადაგზავნა გარე ვებჰუკზე |
custom | მომხმარებლის მიერ განსაზღვრული აგენტი მორგებული კონფიგურაციით |
cli | ლოკალურად შესრულებული CLI-ზე დაფუძნებული აგენტი |
CLI შემსრულებელი
Section titled “CLI შემსრულებელი”CLI შემსრულებელი არის გაშვების ძირითადი მექანიზმი. ის უშვებს კოდირების აგენტს როგორც ქვეპროცესს კონტროლირებადი პარამეტრებით.
ნებადართული CLI-ები
Section titled “ნებადართული CLI-ები”მხოლოდ შემდეგი CLI ინსტრუმენტები არის ნებადართული:
| CLI | აღწერა |
|---|---|
codex | OpenAI Codex CLI აგენტი |
claude-code | Anthropic Claude Code CLI აგენტი |
opencode | ღია კოდის კოდირების აგენტი |
ამ ნებართვების სიაში არ არსებულ ბინარზე შესრულების ცდა უარყოფილია.
შესრულების პარამეტრები
Section titled “შესრულების პარამეტრები”| პარამეტრი | ნაგულისხმევი | აღწერა |
|---|---|---|
| სამუშაო დირექტორია | კონფიგურირებული აგენტზე | რეპოზიტორიის checkout-ის გზა |
| ტაიმაუტი | 900წმ (15 წთ) | მაქსიმალური შესრულების დრო იძულებით შეწყვეტამდე |
| პრომპტის შაბლონი | აგენტის ტიპის მიხედვით | შაბლონი ამოცანის კონტექსტის ჩანაცვლებებით |
პრომპტის შაბლონები
Section titled “პრომპტის შაბლონები”პრომპტის შაბლონები მხარს უჭერენ ჩანაცვლებებს, რომლებიც ივსება ვებჰუკის მოვლენის პეილოადიდან:
You are working on project {{project_name}}.Issue #{{issue_number}}: {{issue_title}}
Description:{{issue_description}}
Please implement the required changes and report your results.გამოძახების ციკლი
Section titled “გამოძახების ციკლი”აგენტის სამუშაოს დასრულების შემდეგ, შედეგები ბრუნდება OpenPR-ში ერთ-ერთით:
- MCP — აგენტი პირდაპირ იძახებს OpenPR-ის MCP ინსტრუმენტებს ამოცანის მდგომარეობის განახლებისთვის, კომენტარების დამატებისთვის და სტატუსის გადართვისთვის
- API — პირდაპირი REST API გამოძახებები OpenPR-ის HTTP ბოლო წერტილებზე
გამოძახება ანახლებს ამოცანას აგენტის გამოსავლით და ცვლის მის მდგომარეობას (ჩვეულებრივ in_progress-დან done-ზე წარმატებისას, ან შეცდომის დეტალების კომენტარის დამატება წარუმატებლობისას).
WSS ტუნელი
Section titled “WSS ტუნელი”გაშლებისთვის, სადაც აგენტის ჰოსტი NAT-ის ან ფაიერვოლის უკან დგას, openpr-webhook მხარს უჭერს გამავალ WebSocket Secure (WSS) ტუნელს OpenPR-ის სამართავ სიბრტყესთან.
ტუნელის ნაკადი:
- openpr-webhook ხსნის გამავალ WSS კავშირს OpenPR-თან
- OpenPR უშვებს ამოცანის მოვლენებს ტუნელით
- დისპეტჩერი ადასტურებს მიღებას, ლოკალურად ასრულებს აგენტს
- შედეგები ბრუნდება იმავე ტუნელის კავშირით
ეს გამორიცხავს შემავალ პორტის გადამისამართებისა ან საჯარო IP მისამართების საჭიროებას აგენტის ჰოსტზე.
უსაფრთხოების კონტროლი
Section titled “უსაფრთხოების კონტროლი”openpr-webhook შექმნილია სიღრმისეული დაცვის პრინციპით:
ფუნქციის კარიბჭეები
Section titled “ფუნქციის კარიბჭეები”ყველა შესაძლებლობა ფუნქციის კარიბჭეების უკან დგას, რომლებიც ნაგულისხმევად false-ია:
| ფუნქცია | ნაგულისხმევი | აღწერა |
|---|---|---|
cli_executor | false | ლოკალური CLI აგენტის შესრულების ჩართვა |
wss_tunnel | false | WSS ტუნელის კავშირის ჩართვა |
webhook_forward | false | გარე ვებჰუკებზე გადაგზავნის ჩართვა |
custom_agent | false | მორგებული აგენტის კონფიგურაციების ჩართვა |
უსაფრთხო რეჟიმი
Section titled “უსაფრთხო რეჟიმი”უსაფრთხო რეჟიმის ჩართვისას, დისპეტჩერი მუშაობს მხოლოდ წაკითხვის დაკვირვების რეჟიმში: მოვლენები მიიღება და ლოგირდება, მაგრამ აგენტები არ იგზავნება. ეს სასარგებლოა ვებჰუკის კავშირის ტესტირებისა და მოვლენების პეილოადების ვალიდაციისთვის შესრულების ჩართვამდე.
შემსრულებლის ნებართვების სია
Section titled “შემსრულებლის ნებართვების სია”მკაცრი CLI ნებართვების სია (codex, claude-code, opencode) თავიდან აცილებს თვითნებური ბრძანების შესრულებას. ნებართვების სია ჩაკომპილირებულია ბინარში და ვერ შეიცვლება მუშაობის დროს მხოლოდ კონფიგურაციით.
კონფიგურაცია
Section titled “კონფიგურაცია”[webhook]secret = "your-hmac-secret"listen = "0.0.0.0:8091"
[executor]working_dir = "/opt/repos"timeout_secs = 900safe_mode = false
[agents.default]type = "cli"cli = "claude-code"prompt_template = "default.txt"გაშვება
Section titled “გაშვება”# აშენებაcargo build --release
# ნაგულისხმევი კონფიგურაციით გაშვება./target/release/openpr-webhook
# მორგებული კონფიგურაციის გზით გაშვება./target/release/openpr-webhook --config /etc/openpr-webhook/config.toml