იდენტობის მართვა
PRX-ის იდენტობის სისტემა უზრუნველყოფს სამუშაო სივრცის დონისა და მომხმარებლის დონის სკოპინგს ყველა აგენტის ოპერაციისთვის. მრავალ-ქირავნობის განთავსებებში, იდენტობის კონტექსტი განსაზღვრავს, რომელ მოგონებებს, კონფიგურაციებს, ინსტრუმენტებსა და რესურსებს შეუძლია მოცემულ სესიას წვდომა. იდენტობის მოდული არის წვდომის კონტროლის, აუდიტის ლოგირებისა და პერსონალიზაციის საფუძველი.
მიმოხილვა
PRX-ის ყველა სესია იდენტობის კონტექსტში მუშაობს, რომელიც მოიცავს:
| კომპონენტი | აღწერა |
|---|---|
| მომხმარებელი | ადამიანი ან ბოტი, რომელიც აგენტთან ურთიერთობს |
| სამუშაო სივრცე | ლოგიკური საზღვარი, რომელიც აერთიანებს მომხმარებლებს, კონფიგურაციებსა და მონაცემებს |
| სესია | ერთი საუბარი მომხმარებელსა და აგენტს შორის |
| პრინციპალი | ეფექტური იდენტობა წვდომის კონტროლის გადაწყვეტილებებისთვის |
┌─────────────────────────────────────────┐
│ სამუშაო სივრცე: "acme" │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │მომხმარ: A│ │მომხმარ: B│ ... │
│ │ │ │ │ │
│ │ სესიები │ │ სესიები │ │
│ │ მოგონებ. │ │ მოგონებ. │ │
│ │ კონფიგ. │ │ კონფიგ. │ │
│ └──────────┘ └──────────┘ │
│ │
│ საზიარო: სამ. სივრცის კონფიგ., │
│ ინსტრუმენტები, გასაღებები │
└─────────────────────────────────────────┘კონფიგურაცია
სამუშაო სივრცის დაყენება
[identity]
# მრავალ-ქირავნობის იდენტობის სკოპინგის ჩართვა.
enabled = true
# ნაგულისხმევი სამუშაო სივრცე სესიებისთვის, რომლებიც არ მიუთითებენ.
default_workspace = "default"
# მომხმარებლებისთვის ახალი სამუშაო სივრცეების შექმნის ნებართვა.
allow_workspace_creation = true
# მაქსიმალური სამუშაო სივრცეების რაოდენობა განთავსებაზე.
max_workspaces = 100მომხმარებლის პროფილები
მომხმარებლის პროფილები ინახავს თითოეული მომხმარებლის პრეფერენციებსა და მეტამონაცემებს:
[identity.profiles]
# მომხმარებლის პროფილების შენახვის ბექენდი: "memory" | "sqlite" | "postgres"
backend = "sqlite"
path = "~/.local/share/openprx/identities.db"სამუშაო სივრცის კონფიგურაცია
თითოეულ სამუშაო სივრცეს შეიძლება ჰქონდეს საკუთარი კონფიგურაციის გადაფარვა:
# სამუშაო სივრცისთვის სპეციფიკური გადაფარვები config.toml-ში
[workspaces.acme]
display_name = "ACME Corp"
default_provider = "openai"
default_model = "gpt-4o"
[workspaces.acme.memory]
backend = "postgres"
[workspaces.acme.security.tool_policy]
default = "supervised"იდენტობის კონტექსტი
IdentityContext სტრუქტურა გადაეცემა მთელ მოთხოვნის პაიპლაინს. იგი შეიცავს: user_id, display_name, workspace_id, session_id, role (Owner/Admin/Member/Guest), channel და თვითნებურ metadata-ს.
იდენტობის კონტექსტი ყველა ფენაში ვრცელდება: გეითვეი ამოიღებს მას შემომავალი მოთხოვნებიდან, აგენტის ციკლი იყენებს მეხსიერებისა და ინსტრუმენტების წვდომის სკოპინგისთვის, მეხსიერების სისტემა მონაცემებს სამუშაო სივრცისა და მომხმარებლის მიხედვით სახელთა სივრცით აღნიშნავს, ხარჯების თვალყურის დევნება მოხმარებას მიაწერს და აუდიტის ჟურნალი მოქმედ პირს ჩაწერს.
მრავალ-ქირავნობა
PRX მხარს უჭერს მრავალ-ქირავნობის განთავსებებს, სადაც მრავალი ორგანიზაცია იზიარებს ერთ PRX ინსტანციას. ქირავნობის საზღვრები სამუშაო სივრცის დონეზე აღისრულება:
მონაცემთა იზოლაცია
| რესურსი | იზოლაციის დონე |
|---|---|
| მოგონებები | სამუშაო სივრცეზე + მომხმარებელზე |
| კონფიგურაცია | სამუშაო სივრცის გადაფარვა გლობალურ ნაგულისხმევებზე |
| ინსტრუმენტების პოლიტიკები | სამუშაო სივრცის გადაფარვები |
| საიდუმლოებები | სამუშაო სივრცის საცავი |
| ხარჯების ბიუჯეტები | სამუშაო სივრცის ლიმიტები |
| აუდიტის ჟურნალები | სამუშაო სივრცის ფილტრაცია |
სამუშაო სივრცეთაშორისი წვდომა
ნაგულისხმევად, მომხმარებლებს მხოლოდ მათი სამუშაო სივრცის ფარგლებში არსებულ რესურსებზე აქვთ წვდომა. სამუშაო სივრცეთაშორისი წვდომა ცალსახა კონფიგურაციას მოითხოვს:
[identity.cross_workspace]
# სამუშაო სივრცის ადმინისტრატორებისთვის სხვა სამუშაო სივრცეებზე წვდომის ნებართვა.
admin_cross_access = false
# კონკრეტული მომხმარებლებისთვის მრავალ სამუშაო სივრცეზე წვდომის ნებართვა.
[[identity.cross_workspace.grants]]
user_id = "shared-bot"
workspaces = ["acme", "beta-corp"]
role = "member"მომხმარებლის იდენტიფიცირება
PRX მომხმარებლის იდენტობას სხვადასხვანაირად განსაზღვრავს კომუნიკაციის არხის მიხედვით:
| არხი | იდენტობის წყარო | მომხმარებლის ID ფორმატი |
|---|---|---|
| Telegram | Telegram მომხმარებლის ID | telegram:<user_id> |
| Discord | Discord მომხმარებლის ID | discord:<user_id> |
| Slack | Slack მომხმარებლის ID | slack:<workspace_id>:<user_id> |
| CLI | სისტემის მომხმარებლის სახელი | cli:<username> |
| API/Gateway | Bearer ტოკენი / API გასაღები | api:<key_hash> |
| WeChat OpenID | wechat:<open_id> | |
| QQ ნომერი | qq:<qq_number> |
პირველი კონტაქტისას რეგისტრაცია
როდესაც ახალი მომხმარებელი PRX-თან პირველად ურთიერთობს, იდენტობის ჩანაწერი ავტომატურად იქმნება: არხის ადაპტერი ამოიღებს მომხმარებლის იდენტიფიკატორს, ქმნის პროფილს ნაგულისხმევი პარამეტრებით და ანიჭებს მომხმარებელს default_workspace-ს Member როლით.
მომხმარებლების ხელით მართვა
# ყველა ცნობილი მომხმარებლის ჩამონათვალი
prx identity list
# მომხმარებლის დეტალების ჩვენება
prx identity info telegram:123456
# მომხმარებლის სამუშაო სივრცეში მინიჭება
prx identity assign telegram:123456 --workspace acme --role admin
# მომხმარებლის სამუშაო სივრციდან ამოღება
prx identity remove telegram:123456 --workspace acme
# მომხმარებლის მეტამონაცემების დაყენება
prx identity set telegram:123456 --key language --value enსამუშაო სივრცის მართვა
# ყველა სამუშაო სივრცის ჩამონათვალი
prx workspace list
# ახალი სამუშაო სივრცის შექმნა
prx workspace create acme --display-name "ACME Corp"
# სამუშაო სივრცის დეტალების ჩვენება
prx workspace info acme
# სამუშაო სივრცის კონფიგურაციის დაყენება
prx workspace config acme --set default_provider=anthropic
# სამუშაო სივრცის წაშლა (მოითხოვს დადასტურებას)
prx workspace delete acme --confirmმომხმარებლის პროფილები
მომხმარებლის პროფილები ინახავს პრეფერენციებს, რომლებიც აგენტის ქცევას პერსონალიზებს:
| ველი | ტიპი | აღწერა |
|---|---|---|
user_id | string | უნიკალური იდენტიფიკატორი |
display_name | string | ადამიანისთვის წაკითხვადი სახელი |
language | string | სასურველი ენა (ISO 639-1) |
timezone | string | სასურველი დროის ზონა (IANA ფორმატი) |
role | enum | სამუშაო სივრცის როლი (owner, admin, member, guest) |
preferences | map | გასაღები-მნიშვნელობის პრეფერენციები (მოდელი, სიტყვიერება და ა.შ.) |
created_at | datetime | პირველი ურთიერთობის დროის ანაბეჭდი |
last_seen_at | datetime | ყველაზე ბოლო ურთიერთობის დროის ანაბეჭდი |
პროფილზე წვდომა სისტემის პრომპტებში
აგენტის სისტემის პრომპტს შეუძლია მომხმარებლის პროფილის ინფორმაციის ჩართვა შაბლონის ცვლადებით (მაგ., {{identity.display_name}}, {{identity.language}}), რომლებიც იდენტობის კონტექსტიდან განისაზღვრება პრომპტის LLM-ზე გაგზავნამდე.
როლზე დაფუძნებული წვდომის კონტროლი
სამუშაო სივრცის როლები განსაზღვრავს, რა მოქმედებების შესრულება შეუძლია მომხმარებელს:
| ნებართვა | მფლობელი | ადმინი | წევრი | სტუმარი |
|---|---|---|---|---|
| აგენტის გამოყენება (ჩატი) | დიახ | დიახ | დიახ | დიახ |
| მოგონებების შენახვა | დიახ | დიახ | დიახ | არა |
| ინსტრუმენტების კონფიგურაცია | დიახ | დიახ | არა | არა |
| მომხმარებლების მართვა | დიახ | დიახ | არა | არა |
| სამუშაო სივრცის მართვა | დიახ | არა | არა | არა |
| აუდიტის ჟურნალების ნახვა | დიახ | დიახ | არა | არა |
ინტეგრაციის წერტილები
identity.enabled = true-ისას, ყველა მეხსიერების ოპერაცია სკოპირებულია workspace:{workspace_id}:user:{user_id}:{key}-ით, რაც მონაცემთა იზოლაციას უზრუნველყოფს. ინსტრუმენტების პოლიტიკები სამუშაო სივრცეზე შეიძლება გადაიფარას და ტოკენების მოხმარება იდენტობის კონტექსტს მიეწერება თითოეული მომხმარებლის ხარჯების ანგარიშგებისთვის.
უსაფრთხოების შენიშვნები
- იდენტობის გაყალბება -- იდენტობის სისტემა ენდობა არხის ადაპტერს მომხმარებლების სწორად იდენტიფიცირებაში. უზრუნველყავით არხის ავთენტიფიკაციის სწორი კონფიგურაცია (ბოტის ტოკენები, OAuth და ა.შ.).
- სამუშაო სივრცის იზოლაცია -- სამუშაო სივრცის საზღვრები აპლიკაციის ლოგიკაში აღისრულება. ძირითადი საცავი (SQLite, Postgres) მონაცემთა ბაზის დონის იზოლაციას არ უზრუნველყოფს. სკოპინგის ლოგიკის ხარვეზმა შეიძლება მონაცემების გაჟონვა გამოიწვიოს.
- სტუმრის წვდომა -- სტუმრებს ნაგულისხმევად მინიმალური ნებართვები აქვთ. განიხილეთ სტუმრის როლის კონფიგურაცია საჯაროდ მისაწვდომი აგენტების ჩართვისას.
- პროფილის მონაცემები -- მომხმარებლის პროფილები შეიძლება პერსონალურ ინფორმაციას შეიცავდეს. დაამუშავეთ თქვენი კონფიდენციალურობის პოლიტიკისა და მოქმედი რეგულაციების შესაბამისად.
- სამუშაო სივრცეთაშორისი მინიჭებები -- მინიჭეთ სამუშაო სივრცეთაშორისი წვდომა ზომიერად. თითოეული მინიჭება აფართოებს კომპრომეტირებული ანგარიშის ზემოქმედების არეალს.