ცხელი გადატვირთვა
PRX მხარს უჭერს კონფიგურაციის ცვლილებების უმეტესობის ცხელ გადატვირთვას. როდესაც შეცვლით config.toml-ს (ან ნებისმიერ ფრაგმენტს config.d/-ში), ცვლილებები აღმოჩენილი და გამოყენებულია წამებში -- გადატვირთვა საჭირო არ არის.
როგორ მუშაობს
PRX იყენებს სამდონიან მექანიზმს კონფიგურაციის ცოცხალი განახლებებისთვის:
ფაილის მეთვალყურე --
notifyფაილური სისტემის მეთვალყურე მონიტორინგს უწევს კონფიგურაციის დირექტორიას (როგორცconfig.toml, ისე მთელconfig.d/ხეს) ჩაწერის მოვლენებისთვის.დებაუნსი -- მოვლენები დებაუნსირდება 1-წამიანი ფანჯრით სწრაფი თანმიმდევრული ჩაწერების გაერთიანებისთვის (მაგ., რედაქტორებიდან, რომლებიც ჯერ წერენ, შემდეგ სახელს ცვლიან).
ატომური ჩანაცვლება -- ცვლილების აღმოჩენისას PRX:
- ახალი კონფიგურაციის SHA-256 თითის ანაბეჭდს ითვლის
- ადარებს ბოლო ცნობილ თითის ანაბეჭდთან (გამოტოვება იდენტურობის შემთხვევაში)
- ახალ TOML-ს
Configსტრუქტურაში პარსავს - წარმატებისას: ატომურად აქვეყნებს ახალ კონფიგურაციას
ArcSwap-ის მეშვეობით (ჩაკეტვის გარეშე) - წარუმატებლობისას: ინარჩუნებს წინა კონფიგურაციას და ლოგში გაფრთხილებას წერს
SharedConfig ტიპი (Arc<ArcSwap<Config>>) უზრუნველყოფს, რომ კონფიგურაციის წამკითხველი ყველა კომპონენტი იღებს თანმიმდევრულ სნეფშოთს ნულოვანი კონკურენციით. წამკითხველები იძახებენ .load_full()-ს Arc<Config> სნეფშოთის მისაღებად, რომელიც ვალიდური რჩება, თუნდაც კონფიგურაცია შეიცვალოს გამოყენების დროს.
რა არის ცხლად გადატვირთვადი
შემდეგი ცვლილებები ძალაში შედის დაუყოვნებლივ (~1 წამის განმავლობაში):
| კატეგორია | მაგალითები |
|---|---|
| პროვაიდერის პარამეტრები | default_provider, default_model, default_temperature, api_key, api_url |
| არხის პარამეტრები | Telegram allowed_users, Discord mention_only, Slack channel_id და ა.შ. |
| მეხსიერების პარამეტრები | backend, auto_save, embedding_provider, შენარჩუნების პერიოდები |
| მარშრუტიზატორის პარამეტრები | enabled, წონები (alpha/beta/gamma/delta/epsilon), Automix ზღვრები |
| უსაფრთხოების პარამეტრები | სენდბოქსის ბექენდი, რესურსის ლიმიტები, აუდიტის კონფიგურაცია |
| ავტონომიის პარამეტრები | მოქმედების სფეროს წესები, ავტონომიის დონეები |
| MCP პარამეტრები | სერვერის განსაზღვრებები, ლიმიტები, ინსტრუმენტების ნებართვების სიები |
| ვებ ძიების პარამეტრები | enabled, provider, max_results |
| ბრაუზერის პარამეტრები | enabled, allowed_domains |
| Xin პარამეტრები | enabled, interval_minutes, ამოცანების ლიმიტები |
| ხარჯვის პარამეტრები | daily_limit_usd, monthly_limit_usd, ფასი |
| საიმედოობის პარამეტრები | max_retries, fallback_providers |
| დაკვირვებადობის პარამეტრები | backend, OTLP ენდფოინთი |
| პროქსის პარამეტრები | პროქსის URL-ები, გვერდის ავლის სიები, მოქმედების სფერო |
რა მოითხოვს გადატვირთვას
პარამეტრების მცირე რაოდენობა მიბმულია გაშვებისას და ვერ შეიცვლება გაშვების დროს:
| პარამეტრი | მიზეზი |
|---|---|
[gateway] host | TCP მსმენელი ერთხელ არის მიბმული გაშვებისას |
[gateway] port | TCP მსმენელი ერთხელ არის მიბმული გაშვებისას |
[tunnel] პარამეტრები | გვირაბის კავშირები დამყარდება გაშვებისას |
| არხის ბოტის ტოკენები | ბოტის კავშირები (Telegram long-poll, Discord gateway, Slack socket) ერთხელ ინიციალიზდება |
ამ პარამეტრებისთვის უნდა გადატვირთოთ PRX დემონი:
# თუ systemd სერვისის სახით გაშვებულია
sudo systemctl restart openprx
# თუ წინა პლანზე გაშვებულია
# შეაჩერეთ Ctrl+C-ით, შემდეგ ხელახლა გაუშვით
prxCLI გადატვირთვის ბრძანება
კონფიგურაციის ხელით გადატვირთვა ფაილის რედაქტირების გარეშე:
prx config reloadეს ეკვივალენტურია ფაილის მეთვალყურის მიერ ცვლილების აღმოჩენისა. ხელახლა კითხულობს და პარსავს კონფიგურაციის ფაილებს და ატომურად ცვლის ცოცხალ კონფიგურაციას. ეს სასარგებლოა, როდესაც:
- ფაილი შეცვალეთ, მაგრამ მეთვალყურემ მოვლენა გამოტოვა (იშვიათი)
- გინდათ გადატვირთვის იძულება გარემოს ცვლადების განახლების შემდეგ
- კონფიგურაციის ცვლილებებს სკრიპტით ასრულებთ
შეცდომების დამუშავება
თუ ახალ კონფიგურაციის ფაილს შეცდომები აქვს:
- TOML სინტაქსის შეცდომები -- პარსერი უარყოფს ფაილს. წინა კონფიგურაცია შენარჩუნდება. გაფრთხილება ჩაიწერება პარსინგის შეცდომის დეტალებით.
- არასწორი ველების მნიშვნელობები -- ვალიდაცია აღმოაჩენს პრობლემებს, როგორიცაა
confidence_threshold > 1.0ან ცარიელიpremium_model_id, როდესაც Automix ჩართულია. წინა კონფიგურაცია შენარჩუნდება. - დაკარგული ფაილი -- თუ
config.tomlწაიშლება, მეთვალყურე ლოგში შეცდომას ჩაწერს, მაგრამ მეხსიერებაში არსებული კონფიგურაცია განაგრძობს მუშაობას.
ყველა შეცდომის შემთხვევაში PRX აგრძელებს მუშაობას ბოლო ცნობილი სწორი კონფიგურაციით. მონაცემები არ იკარგება და სერვისის შეფერხება არ ხდება.
გადატვირთვების მონიტორინგი
HotReloadManager ინახავს მონოტონურ reload_version მთვლელს, რომელიც იზრდება ყოველი წარმატებული გადატვირთვისას. მიმდინარე ვერსია შეგიძლიათ შეამოწმოთ გეითვეის სტატუსის ენდფოინთით:
curl http://localhost:16830/api/statusპასუხი მოიცავს მიმდინარე გადატვირთვის რაოდენობას, რაც გეხმარებათ დარწმუნდეთ, რომ თქვენი ცვლილებები გამოყენებულია.
გაყოფილი ფაილების გადატვირთვა
გაყოფილი კონფიგურაციის ფაილების (config.d/*.toml) გამოყენებისას, მეთვალყურე მონიტორინგს უწევს მთელ config.d/ დირექტორიას რეკურსიულად. ნებისმიერ .toml ფრაგმენტში ცვლილება იწვევს ყველა კონფიგურაციის სრულ ხელახალ შერწყმას და გადატვირთვას. ეს ნიშნავს:
config.d/channels.toml-ის რედაქტირება გადატვირთავს მთელ კონფიგურაციას (არა მხოლოდ არხებს)- ფრაგმენტული ფაილის დამატება ან წაშლა იწვევს გადატვირთვას
- შერწყმის თანმიმდევრობა ანბანურია ფაილის სახელით, ფრაგმენტებს აქვთ უპირატესობა
config.toml-ზე