Toollar¶
Qanot AI da agent suhbat davomida chaqira oladigan tayyor toollar bor. Toollar orqali agent fayl tizimi, web, xotira, cron, RAG, rasm yaratish, multi-agent delegatsiya va diagnostika bilan ishlaydi.
Toollar qanday ishlaydi¶
Agent loop shunday ishlaydi:
- LLM prompt da tool ta'riflarini ko'radi
tool_usebloklar bilan qaysi tool ni qanday parametrlar bilan chaqirishni aytadi- Qanot tool ni bajaradi va natijani qaytaradi
- LLM natijani qayta ishlaydi -- yana tool chaqiradi yoki userga javob beradi
Har bir tool bajarilishi 120 soniya timeout ga ega (tool ga qarab sozlash mumkin). 50,000 belgidan oshgan natijalar qisqartiriladi.
Tayyor toollar¶
read_file¶
Workspace yoki absolyut yo'ldan fayl o'qiydi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
path |
string | Ha | Fayl yo'li (workspace ga nisbatan yoki absolyut) |
Fayl mazmunini matn sifatida qaytaradi. 50,000 belgidan oshgan fayllar umumiy hajm ko'rsatilgan holda qisqartiriladi.
write_file¶
Faylga yozadi, kerak bo'lsa papkalarni yaratadi. Yo'llar fs_safe.validate_write_path() orqali tekshiriladi -- tizim papkalariga yozish va symlink hujumlar bloklanadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
path |
string | Ha | Fayl yo'li (workspace ga nisbatan yoki absolyut) |
content |
string | Ha | Fayl mazmuni |
Natija: {"success": true, "path": "...", "bytes": 123}.
list_files¶
Berilgan yo'ldagi fayl va papkalarni ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
path |
string | Yo'q | Papka yo'li (default: workspace root) |
name, type ("file" yoki "dir"), va size bilan JSON massiv qaytaradi.
run_command¶
Workspace papkasida shell buyruq bajaradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
command |
string | Ha | Shell buyruq (pipe, redirect, && ishlaydi) |
timeout |
integer | Yo'q | Timeout soniyalarda (default: 120, maks: 120) |
cwd |
string | Yo'q | Ish papkasi (default: workspace) |
approved |
boolean | Yo'q | User tasdiqlashi (cautious rejim uchun) |
Xavfsizlik: exec_security orqali 3 bosqichli xavfsizlik modeli:
open(default) -- Faqat xavfli patternlar bloklisti amal qiladi.rm -rf /,mkfs,dd, fork bomblar va hujum toollari har doim bloklanadi.cautious-- Xavfli patternlar bloklanadi, bundan tashqari riskli buyruqlar (pip install, curl, sudo, git push, docker, database klientlar va h.k.) user tasdiqlashini talab qiladi. User rad etsa, buyruq bekor qilinadi.strict-- Faqatexec_allowlistdagi buyruqlarga (prefix match) ruxsat beriladi. Qolganlari bloklanadi.
Buyruqlar 120 soniyadan keyin timeout bo'ladi. Chiqish 50,000 belgiga cheklanadi.
memory_search¶
Agent xotira fayllaridan qidiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
query |
string | Ha | Qidiruv so'rovi |
RAG yoqilgan bo'lsa, semantik vector qidiruv ishlatadi. Aks holda MEMORY.md, kunlik qaydlar (oxirgi 30 ta), va SESSION-STATE.md bo'ylab katta-kichik harfga befarq substring qidiruv. Natijalar 50 taga cheklangan.
session_status¶
Joriy session statistikasi -- context foydalanish va narx.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
Natija:
{
"context_percent": 23.5,
"total_input_tokens": 45000,
"total_output_tokens": 12000,
"total_tokens": 57000,
"max_tokens": 200000,
"buffer_active": false,
"turn_count": 8,
"last_prompt_tokens": 45000,
"user_cost": {"input_tokens": 45000, "output_tokens": 12000, "cost_usd": 0.12},
"total_cost": 1.45
}
cost_status¶
Har user uchun token va narx statistikasi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
user_id |
string | Yo'q | So'rov qilinadigan user ID (default: joriy user) |
Har user uchun token soni, narx taqsimoti va umumiy summani qaytaradi. user_id berilmasa, joriy user statistikasini ko'rsatadi.
send_file¶
Workspace dan faylni Telegram orqali userga yuboradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
path |
string | Ha | Fayl yo'li (workspace ga nisbatan yoki absolyut) |
Natija: {"success": true, "path": "...", "size": 12345}. Fayllar Telegram adapter orqali yuboriladi. Maks fayl hajmi 50 MB (Telegram cheklovi).
Web toollar¶
web_search¶
Brave Search API orqali internetdan qidiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
query |
string | Ha | Qidiruv so'rovi (maks 2000 belgi) |
count |
integer | Yo'q | Natijalar soni (1-10, default: 5) |
JSON qaytaradi: so'rov, natijalar soni, va har birida title, url, description, ixtiyoriy age bor massiv. Natijalar 15 daqiqa keshlanadi (50 tagacha). Config da brave_api_key kerak.
web_fetch¶
Web sahifadan o'qiladigan mazmun oladi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
url |
string | Ha | Olinadigan URL (http:// yoki https://) |
max_chars |
integer | Yo'q | Maks chiqish belgilari (default: 50,000) |
JSON qaytaradi: url, final_url, title, content (ajratilgan matn), content_type, length, va manba eslatmasi. HTML sahifalar soddalashtirilgan markdown ga aylantiriladi. JSON javoblar chiroyli formatlanadi.
SSRF himoya: URL lar quyidagilarga qarshi tekshiriladi: - Bloklangan hostlar (localhost, metadata.google.internal) - Bloklangan portlar (SSH, SMTP, database portlari, Docker daemon va h.k.) - Shaxsiy/ajratilgan IP tarmoqlar (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, link-local, IPv6 loopback) - DNS resolve tekshiriladi -- hostname-to-private-IP redirect larni ushlash uchun - Redirect manzillar qayta tekshiriladi (maks 3 redirect) - Javob tanasi 2 MB ga cheklangan - 30 soniya timeout
Rasm toollar¶
gemini_api_key sozlanganda mavjud. Gemini rasm yaratish bilan ishlaydi.
generate_image¶
Matn tavsifidan yangi rasm yaratadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
prompt |
string | Ha | Yaratiladigan rasmning batafsil matnli tavsifi |
model |
string | Yo'q | Rasm modeli (default: gemini-3-pro-image-preview) |
Qo'llab-quvvatlanadigan modellar:
- gemini-3-pro-image-preview -- Nano Banana Pro (eng yuqori sifat)
- gemini-3.1-flash-image-preview -- Nano Banana 2 (tez)
- gemini-2.5-flash-image -- Nano Banana (tezlik uchun optimallashtirilgan)
Natija: {"status": "ok", "image_path": "...", "model": "...", "description": "...", "size_bytes": 123456}. Rasm workspace/generated/ ga saqlanadi va Telegram orqali userga avtomatik yuboriladi.
edit_image¶
Userning oxirgi yuborgan rasmini matn ko'rsatmasi asosida tahrirlaydi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
prompt |
string | Ha | Tahrirlash ko'rsatmasi (masalan, "qora-oq qil") |
model |
string | Yo'q | Rasm modeli (generate_image bilan bir xil variantlar) |
Tool suhbat tarixidan orqaga qarab oxirgi user rasmini qidiradi. Rasm topilmasa, avval rasm yuborishni so'raydi. Tahrirlangan rasm saqlanadi va userga yuboriladi.
Cron toollar¶
Bu toollar agent ga rejalashtirilgan vazifalarni yaratish va boshqarish imkonini beradi. Cron joblar qanday bajarilishi haqida Scheduler ga qarang.
cron_create¶
Yangi rejalashtirilgan vazifa yoki bir martalik eslatma yaratadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
name |
string | Ha | Noyob vazifa nomi (maks 200 belgi) |
schedule |
string | Yo'q* | Cron ifodasi (masalan, 0 */4 * * *) |
at |
string | Yo'q* | Bir martalik eslatma uchun ISO 8601 vaqt belgisi (masalan, 2026-03-12T17:00:00+05:00) |
prompt |
string | Ha | Eslatma matni yoki vazifa prompt (maks 10,000 belgi) |
mode |
string | Yo'q | isolated (toollar bilan to'liq agent) yoki systemEvent (faqat matn yetkazish). Default: systemEvent |
delete_after_run |
boolean | Yo'q | Bajarilgandan keyin avto-o'chirish (default: at eslatmalari uchun true) |
timezone |
string | Yo'q | IANA timezone (masalan, Asia/Tashkent) |
*schedule yoki at dan biri majburiy.
{
"name": "daily-summary",
"schedule": "0 20 * * *",
"prompt": "Write a summary of today's conversations and save to MEMORY.md",
"mode": "isolated"
}
Yaratilgandan keyin scheduler avtomatik qayta yuklanadi.
cron_list¶
Barcha rejalashtirilgan vazifalarni ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
To'liq jobs.json mazmunini qaytaradi.
cron_update¶
Mavjud vazifani yangilaydi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
name |
string | Ha | Yangilanadigan vazifa nomi |
schedule |
string | Yo'q | Yangi cron ifodasi |
mode |
string | Yo'q | Yangi bajarish rejimi (systemEvent yoki isolated) |
prompt |
string | Yo'q | Yangi prompt |
enabled |
boolean | Yo'q | Yoqish/o'chirish |
cron_delete¶
Rejalashtirilgan vazifani o'chiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
name |
string | Ha | O'chiriladigan vazifa nomi |
RAG toollar¶
rag_enabled: true va mos embedding provider mavjud bo'lganda ishlaydi. To'liq hujjatlar uchun RAG ga qarang.
rag_index¶
Faylni RAG tizimiga indekslaydi. Bir xil faylni qayta indekslash oldingi chunklarni almashtiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
path |
string | Ha | Fayl yo'li (.txt, .md, .csv, .pdf) -- workspace ichida bo'lishi kerak |
name |
string | Yo'q | Ko'rsatiladigan nom / manba identifikatori (default: fayl nomi) |
Natija: {"indexed": true, "source": "Employee Handbook", "chunks": 42}. PDF uchun PyMuPDF kerak (pip install PyMuPDF). Workspace dan tashqariga chiqish oldini olinadi.
rag_search¶
Indekslangan hujjatlardan gibrid semantik + kalit so'z qidiruv.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
query |
string | Ha | Qidiruv so'rovi (maks 10,000 belgi) |
top_k |
integer | Yo'q | Natijalar soni (1-100, default: 5) |
text, source, va score (0-1, yuqori = yaxshi) bilan natijalar massivini qaytaradi.
rag_list¶
Barcha indekslangan hujjat manbalarini chunk sonlari bilan ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
rag_forget¶
Hujjat manbasini RAG indeksdan o'chiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
source |
string | Ha | O'chiriladigan manba nomi |
Natija: {"deleted": true, "source": "...", "chunks_removed": 42}.
Delegatsiya toollar¶
Multi-agent hamkorlik toollari. Asosiy agent boshqa agentlarga vazifa topshiradi, ko'p navbatli suhbatlar olib boradi, va natijalarni project board orqali ulashadi.
delegate_to_agent¶
Bir martalik vazifa delegatsiyasi -- vazifani boshqa agentga topshiradi va natijani kutadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
task |
string | Ha | Vazifa tavsifi (batafsil) |
agent_id |
string | Ha | Maqsad agent identifikatori |
context |
string | Yo'q | Vazifaga tegishli qo'shimcha kontekst (maks 4,000 belgi) |
{
"task": "Write SEO-optimized meta descriptions for these 5 product pages",
"agent_id": "seo-expert",
"context": "Target market is Uzbekistan, write in Uzbek language"
}
Agent natijasini qaytaradi (maks 8,000 belgi). 120 soniya timeout. Maks delegatsiya chuqurligi 2 (agentlar boshqa agentlarga delegatsiya qila oladi, lekin cheksiz emas). Sikl aniqlash aylanma delegatsiyalarni oldini oladi. Natijalar umumiy project board ga joylashtiriladi.
converse_with_agent¶
Boshqa agent bilan ko'p navbatli suhbat (5 gacha navbat).
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
message |
string | Ha | Agentga yuboriladigan xabar |
agent_id |
string | Ha | Maqsad agent identifikatori |
max_turns |
integer | Yo'q | Maks suhbat navbatlari (1-5, default: 3) |
{
"message": "Let's design the database schema for a blog platform",
"agent_id": "architect",
"max_turns": 5
}
To'liq suhbat transkriptini qaytaradi. Agentlar orasida hamkorlik va muzokaralar uchun foydali.
view_project_board¶
Umumiy project board -- barcha agentlar bajargan ishlar natijalarini ko'rish.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
agent_id |
string | Yo'q | Agent ID bo'yicha filtrlash |
agent_id, task, result, va timestamp bilan yozuvlar massivini qaytaradi. Har user uchun maks 20 yozuv. 6 soat harakatsizlikdan keyin ma'lumotlar o'chiriladi.
clear_project_board¶
Umumiy project board ni tozalaydi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
list_agents¶
Barcha mavjud agentlarni model, roli va imkoniyatlari bilan ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
id, name, model, prompt (qisqartirilgan), va tools_allow/tools_deny bilan agent ta'riflari massivini qaytaradi.
agent_session_history¶
Boshqa agentning suhbat transkriptini o'qish.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
agent_id |
string | Ha | Tarixi o'qiladigan agent |
Agentning oxirgi 20 xabarini qaytaradi: rol, mazmun, vaqt belgisi, va toollar ishlatilganmi.
agent_sessions_list¶
Barcha faol agent sessionlarini metadata bilan ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
Har bir faol agent uchun session ma'lumoti: xabar soni, oxirgi faollik vaqti.
view_agent_activity¶
Agent faollik logini ko'rish -- barcha agent interaksiyalarini real-time monitoring.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
limit |
integer | Yo'q | Maks qaytariladigan yozuvlar (default: 20, maks: 50) |
agent_id |
string | Yo'q | Agent ID bo'yicha filtrlash |
Delegatsiya hodisalari, natijalar, xatolar va vaqt ma'lumotlarini qaytaradi.
set_monitor_group¶
Real-time agent monitoring uchun Telegram guruh sozlash.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
group_id |
integer | Ha | Telegram guruh ID (manfiy raqam, masalan, -1001234567890) |
O'rnatilganda, agent-agent interaksiyalari bu guruhga forward qilinadi -- real-time kuzatish mumkin. Har bir agent boti guruhga qo'shilgan bo'lishi kerak.
Sub-Agent toollar¶
spawn_sub_agent¶
Murakkab, uzoq davom etadigan vazifalar uchun izolyatsiyalangan background sub-agent ishga tushiradi. Sub-agent mustaqil ishlaydi va tugagandan keyin natijani Telegram orqali userga yetkazadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
task |
string | Ha | Vazifa tavsifi -- batafsil va mustaqil (maks 10,000 belgi) |
{"task": "Research Python vs Rust performance benchmarks -- use web_search to find recent comparisons and summarize findings with sources"}
Natija: {"status": "spawned", "task_id": "abc12345", "message": "..."}. Sub-agent 5 daqiqa timeout ga ega. Har user uchun maks 3 ta bir vaqtda ishlaydigan sub-agent. Mavjud toollar: web_search, web_fetch, read_file, memory_search.
list_sub_agents¶
Joriy user uchun faol sub-agentlarni ko'rsatadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
Natija: {"active": 2, "agents": [{"task_id": "abc12345", "status": "running"}, ...]}.
Agent boshqaruv toollar¶
Dinamik agent hayot sikli boshqaruvi -- botni qayta ishga tushirmasdan runtime da agent yaratish, yangilash va o'chirish.
create_agent¶
O'z shaxsiyati, modeli va ixtiyoriy ravishda o'z Telegram boti bilan yangi agent yaratadi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
id |
string | Ha | Agent ID (kichik harflar + raqamlar + tire, maks 32 belgi) |
name |
string | Ha | Agent ko'rsatiladigan nomi |
prompt |
string | Yo'q | Agent shaxsiyati va ko'rsatmalar (berilmasa avto-yaratiladi) |
model |
string | Yo'q | LLM model (default: asosiy agent modeli) |
provider |
string | Yo'q | LLM provider (default: asosiy agent provideri) |
bot_token |
string | Yo'q | Telegram bot token -- berilsa, mustaqil Telegram bot sifatida ishga tushadi |
tools_allow |
array[string] | Yo'q | Ruxsat berilgan toollar (bo'sh = barcha toollar) |
tools_deny |
array[string] | Yo'q | Taqiqlangan toollar |
timeout |
integer | Yo'q | Timeout soniyalarda (default: 120) |
{
"id": "seo-expert",
"name": "SEO Mutaxassis",
"prompt": "You are an SEO expert specializing in the Uzbekistan market...",
"model": "claude-haiku-4-5"
}
Agentlar config.json ga saqlanadi va qayta ishga tushirmasdan hot-launch qilinadi. bot_token berilsa, agent mustaqil Telegram bot sifatida ishlaydi. Token bo'lmasa, delegate_to_agent orqali foydalaniladigan ichki agent bo'ladi. workspace/agents/<id>/ da SOUL.md fayl yaratiladi.
update_agent¶
Mavjud agentning config ni yangilaydi. Faqat o'zgartirmoqchi bo'lgan maydonlarni bering.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
id |
string | Ha | Yangilanadigan agent ID |
name |
string | Yo'q | Yangi ko'rsatiladigan nom |
prompt |
string | Yo'q | Yangi shaxsiyat/ko'rsatmalar (SOUL.md ham yangilanadi) |
model |
string | Yo'q | Yangi LLM model |
provider |
string | Yo'q | Yangi LLM provider |
bot_token |
string | Yo'q | Yangi Telegram bot token (bo'sh string token ni olib tashlaydi va botni to'xtatadi) |
tools_allow |
array[string] | Yo'q | Yangi ruxsat berilgan toollar |
tools_deny |
array[string] | Yo'q | Yangi taqiqlangan toollar |
timeout |
integer | Yo'q | Yangi timeout |
Natija: {"status": "updated", "agent_id": "...", "changes": ["model"]}.
delete_agent¶
Agentni o'chiradi. Telegram boti ishlayotgan bo'lsa, to'xtatiladi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
id |
string | Ha | O'chiriladigan agent ID |
Natija: {"status": "deleted", "agent_id": "...", "bot_stopped": true}.
restart_self¶
Butun bot jarayonini qayta ishga tushiradi. Config o'zgarishlaridan keyin, yangi agent yaratilgandan keyin yoki xatolikdan tiklash uchun foydali. Bot o'ziga SIGTERM yuboradi va service manager (systemd/launchd) qayta ishga tushiradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
reason |
string | Yo'q | Qayta ishga tushirish sababi |
Darhol natija qaytaradi. Bot 2 soniyadan keyin qayta ishga tushadi.
Doctor tool¶
doctor¶
Tizim salomatligi diagnostikasi. 7 ta quyi tizimni tekshiradi va har biri uchun holat (ok/warning/error) beradi.
| Parametr | Tur | Majburiy | Tavsif |
|---|---|---|---|
| (yo'q) | -- | -- | Parametr yo'q |
Tekshirishlar: - config -- bot_token, API keylar, workspace_dir yozish ruxsati, sessions_dir, kerakli workspace fayllar (SOUL.md, TOOLS.md, IDENTITY.md) - memory -- MEMORY.md o'qilishi va hajmi, SESSION-STATE.md hajmi (>100KB da ogohlantiradi), kunlik qaydlar soni (30 kun), memory/ papka hajmi - context -- Joriy context foydalanish %, token sonlari, buffer holati, compaction rejimi - provider -- Bitta yoki ko'p provider rejimi, model nomlari - rag -- RAG database mavjudligi va hajmi, FTS5 mavjudligi, embedding kesh yozuvlari - sessions -- Sessions papka hajmi, yaqindagi session fayllar soni (7 kun), oxirgi session vaqt belgisi - disk -- Workspace hajmi, mavjud disk xotirasi (<100MB da ogohlantiradi)
Natija:
{
"status": "healthy",
"checks": {
"config": {"status": "ok", "details": "..."},
"memory": {"status": "ok", "details": "..."},
"context": {"status": "ok", "details": "..."},
"provider": {"status": "ok", "details": "..."},
"rag": {"status": "ok", "details": "..."},
"sessions": {"status": "ok", "details": "..."},
"disk": {"status": "ok", "details": "..."}
},
"warnings": [],
"timestamp": "2026-03-16T12:00:00+00:00"
}
Maxsus tool yaratish¶
Maxsus toollar plugin tizimi orqali qo'shiladi. Tez bir martalik toollar uchun ToolRegistry ga to'g'ridan-to'g'ri ro'yxatga olish ham mumkin:
from qanot.agent import ToolRegistry
registry = ToolRegistry()
async def my_tool(params: dict) -> str:
name = params.get("name", "world")
return f"Hello, {name}!"
registry.register(
name="greet",
description="Greet someone by name.",
parameters={
"type": "object",
"required": ["name"],
"properties": {
"name": {"type": "string", "description": "Name to greet"},
},
},
handler=my_tool,
)
Tool handlerlar dict parametr qabul qilib str qaytaradigan async funksiyalar bo'lishi kerak. Strukturalangan ma'lumotlar uchun JSON odatiy format. Xatolar uchun exception tashlang -- ular ushlanib {"error": "..."} sifatida qaytariladi.
Tool xavfsizligi¶
- 3 bosqichli buyruq xavfsizligi:
run_commandexec_security(open/cautious/strict) orqali qaysi buyruqlarga ruxsat berilishini nazorat qiladi.rm -rf /, fork bomblar va hujum toollari har doim bloklanadi. - Fayl yozish tekshiruvi:
write_fileyo'llarnifs_safe.validate_write_path()bilan tekshiradi -- tizim papkalari bloklanadi, symlinklar tekshiriladi. - SSRF himoya:
web_fetchURL larni shaxsiy tarmoqlar, bloklangan portlar va ichki hostlarga qarshi tekshiradi. DNS resolve tekshiriladi, redirect manzillar qayta tekshiriladi. - Timeout: Buyruq bajarilishi 120 soniyada timeout. Web fetch 30 soniyada timeout.
- Natija qisqartirish: Katta natijalar 50,000 belgiga qisqartiriladi -- context shishishini oldini oladi.
- Sikl aniqlash: Agent loop takroriy bir xil tool chaqiruvlarni aniqlaydi (3 ta ketma-ket yoki navbatlashadigan patternlar) va siklni userga xabar bilan to'xtatadi.
- Deterministik xato maslahatlar: "not found" yoki "permission denied" kabi xatolarda LLM ga bir xil parametrlar bilan qayta urinmaslikni aytadigan maslahat beriladi.
- Delegatsiya cheklovlar: Maks chuqurlik 2, sikl aniqlash, 120 soniya timeout, natija hajmi chegaralari.
- Sub-agent cheklovlar: Har user uchun maks 3 ta bir vaqtda, 5 daqiqa timeout.
- Fayl hajmi cheklovlar:
send_fileTelegram ning 50 MB yuklash chegarasini nazorat qiladi.