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

ცხელი გადატვირთვა

PRX მხარს უჭერს კონფიგურაციის ცვლილებების უმეტესობის ცხელ გადატვირთვას. როდესაც შეცვლით config.toml-ს (ან ნებისმიერ ფრაგმენტს config.d/-ში), ცვლილებები აღმოჩენილი და გამოყენებულია წამებში -- გადატვირთვა საჭირო არ არის.

როგორ მუშაობს

PRX იყენებს სამდონიან მექანიზმს კონფიგურაციის ცოცხალი განახლებებისთვის:

  1. ფაილის მეთვალყურე -- notify ფაილური სისტემის მეთვალყურე მონიტორინგს უწევს კონფიგურაციის დირექტორიას (როგორც config.toml, ისე მთელ config.d/ ხეს) ჩაწერის მოვლენებისთვის.

  2. დებაუნსი -- მოვლენები დებაუნსირდება 1-წამიანი ფანჯრით სწრაფი თანმიმდევრული ჩაწერების გაერთიანებისთვის (მაგ., რედაქტორებიდან, რომლებიც ჯერ წერენ, შემდეგ სახელს ცვლიან).

  3. ატომური ჩანაცვლება -- ცვლილების აღმოჩენისას 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] hostTCP მსმენელი ერთხელ არის მიბმული გაშვებისას
[gateway] portTCP მსმენელი ერთხელ არის მიბმული გაშვებისას
[tunnel] პარამეტრებიგვირაბის კავშირები დამყარდება გაშვებისას
არხის ბოტის ტოკენებიბოტის კავშირები (Telegram long-poll, Discord gateway, Slack socket) ერთხელ ინიციალიზდება

ამ პარამეტრებისთვის უნდა გადატვირთოთ PRX დემონი:

bash
# თუ systemd სერვისის სახით გაშვებულია
sudo systemctl restart openprx

# თუ წინა პლანზე გაშვებულია
# შეაჩერეთ Ctrl+C-ით, შემდეგ ხელახლა გაუშვით
prx

CLI გადატვირთვის ბრძანება

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

bash
prx config reload

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

  • ფაილი შეცვალეთ, მაგრამ მეთვალყურემ მოვლენა გამოტოვა (იშვიათი)
  • გინდათ გადატვირთვის იძულება გარემოს ცვლადების განახლების შემდეგ
  • კონფიგურაციის ცვლილებებს სკრიპტით ასრულებთ

შეცდომების დამუშავება

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

  • TOML სინტაქსის შეცდომები -- პარსერი უარყოფს ფაილს. წინა კონფიგურაცია შენარჩუნდება. გაფრთხილება ჩაიწერება პარსინგის შეცდომის დეტალებით.
  • არასწორი ველების მნიშვნელობები -- ვალიდაცია აღმოაჩენს პრობლემებს, როგორიცაა confidence_threshold > 1.0 ან ცარიელი premium_model_id, როდესაც Automix ჩართულია. წინა კონფიგურაცია შენარჩუნდება.
  • დაკარგული ფაილი -- თუ config.toml წაიშლება, მეთვალყურე ლოგში შეცდომას ჩაწერს, მაგრამ მეხსიერებაში არსებული კონფიგურაცია განაგრძობს მუშაობას.

ყველა შეცდომის შემთხვევაში PRX აგრძელებს მუშაობას ბოლო ცნობილი სწორი კონფიგურაციით. მონაცემები არ იკარგება და სერვისის შეფერხება არ ხდება.

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

HotReloadManager ინახავს მონოტონურ reload_version მთვლელს, რომელიც იზრდება ყოველი წარმატებული გადატვირთვისას. მიმდინარე ვერსია შეგიძლიათ შეამოწმოთ გეითვეის სტატუსის ენდფოინთით:

bash
curl http://localhost:16830/api/status

პასუხი მოიცავს მიმდინარე გადატვირთვის რაოდენობას, რაც გეხმარებათ დარწმუნდეთ, რომ თქვენი ცვლილებები გამოყენებულია.

გაყოფილი ფაილების გადატვირთვა

გაყოფილი კონფიგურაციის ფაილების (config.d/*.toml) გამოყენებისას, მეთვალყურე მონიტორინგს უწევს მთელ config.d/ დირექტორიას რეკურსიულად. ნებისმიერ .toml ფრაგმენტში ცვლილება იწვევს ყველა კონფიგურაციის სრულ ხელახალ შერწყმას და გადატვირთვას. ეს ნიშნავს:

  • config.d/channels.toml-ის რედაქტირება გადატვირთავს მთელ კონფიგურაციას (არა მხოლოდ არხებს)
  • ფრაგმენტული ფაილის დამატება ან წაშლა იწვევს გადატვირთვას
  • შერწყმის თანმიმდევრობა ანბანურია ფაილის სახელით, ფრაგმენტებს აქვთ უპირატესობა config.toml-ზე

Released under the Apache-2.0 License.