{"id":185,"date":"2026-01-13T20:58:33","date_gmt":"2026-01-13T20:58:33","guid":{"rendered":"https:\/\/marcelhoffman.pl\/?p=185"},"modified":"2026-01-13T20:58:33","modified_gmt":"2026-01-13T20:58:33","slug":"kompletna-instrukcja-system-5-agentow-ai","status":"publish","type":"post","link":"https:\/\/marcelhoffman.pl\/index.php\/2026\/01\/13\/kompletna-instrukcja-system-5-agentow-ai\/","title":{"rendered":"KOMPLETNA INSTRUKCJA: SYSTEM 5 AGENT\u00d3W AI"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\ud83e\udd16 KOMPLETNA INSTRUKCJA: SYSTEM 5 AGENT\u00d3W AI<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccb SPIS TRE\u015aCI<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#wymagania\">Czego potrzebujesz<\/a><\/li>\n\n\n\n<li><a href=\"#instalacja\">Instalacja krok po kroku<\/a><\/li>\n\n\n\n<li><a href=\"#agenci\">Opis agent\u00f3w i ich zadania<\/a><\/li>\n\n\n\n<li><a href=\"#u%C5%BCytkowanie\">Uruchamianie i komendy<\/a><\/li>\n\n\n\n<li><a href=\"#koszty\">Koszty i optymalizacja<\/a><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfaf CZEGO POTRZEBUJESZ {#wymagania}<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sprz\u0119t:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mac z macOS Big Sur (11.x) lub nowszy<\/li>\n\n\n\n<li>8GB+ RAM (16GB polecane)<\/li>\n\n\n\n<li>Po\u0142\u0105czenie internetowe<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Oprogramowanie:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Terminal (wbudowany w macOS)<\/li>\n\n\n\n<li>Python 3.14+ (zostanie zainstalowane)<\/li>\n\n\n\n<li>Node.js 18+ (zostanie zainstalowane)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Konta i klucze:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 Konto Anthropic (<a href=\"https:\/\/console.anthropic.com\">https:\/\/console.anthropic.com<\/a>)<\/li>\n\n\n\n<li>\u2705 API Key od Anthropic<\/li>\n\n\n\n<li>\u2705 Kredyty API (minimum $5, polecane $10-20)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Wiedza:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podstawowa obs\u0142uga Terminala<\/li>\n\n\n\n<li>Nie musisz umie\u0107 programowa\u0107!<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 INSTALACJA KROK PO KROKU<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 1: Otw\u00f3rz Terminal<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Naci\u015bnij <strong>Command (\u2318) + Spacja<\/strong><\/li>\n\n\n\n<li>Wpisz: <strong>Terminal<\/strong><\/li>\n\n\n\n<li>Naci\u015bnij <strong>Enter<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 2: Zainstaluj Homebrew (mened\u017cer pakiet\u00f3w)<\/strong><\/h3>\n\n\n\n<p>Wklej w Terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash\n\n\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Poczekaj (mo\u017ce potrwa\u0107 5-15 minut)<\/li>\n\n\n\n<li>Je\u015bli poprosi o has\u0142o &#8211; wpisz has\u0142o do Maca<\/li>\n\n\n\n<li>Po zako\u0144czeniu, wykonaj komendy kt\u00f3re Terminal Ci poka\u017ce (echo >> ~\/.bash_profile&#8230;)<\/li>\n<\/ul>\n\n\n\n<p><strong>Dodaj Homebrew do PATH:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<br><br>echo 'eval \"$(\/usr\/local\/bin\/brew shellenv bash)\"' >> ~\/.bash_profile<br>eval \"$(\/usr\/local\/bin\/brew shellenv bash)\"<br><br><\/code><\/pre>\n\n\n\n<p><strong>Sprawd\u017a czy dzia\u0142a:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash\n\nbrew --version\n<\/code><\/pre>\n\n\n\n<p>Powiniene\u015b zobaczy\u0107 numer wersji.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 3: Zainstaluj Node.js przez nvm<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.7\/install.sh | bash<\/code><\/pre>\n\n\n\n<p><strong>Dodaj nvm do profilu:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'export NVM_DIR=\"$HOME\/.nvm\"' &gt;&gt; ~\/.bash_profile\necho '&#91; -s \"$NVM_DIR\/nvm.sh\" ] &amp;&amp; \\. \"$NVM_DIR\/nvm.sh\"' &gt;&gt; ~\/.bash_profile\nsource ~\/.bash_profile<\/code><\/pre>\n\n\n\n<p><strong>Zainstaluj Node.js 18:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm install 18\nnvm use 18\nnvm alias default 18<\/code><\/pre>\n\n\n\n<p><strong>Sprawd\u017a:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node --version<\/code><\/pre>\n\n\n\n<p>Powiniene\u015b zobaczy\u0107 <code>v18.x.x<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 4: Stw\u00f3rz wirtualne \u015brodowisko Python<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 -m venv ~\/ai_env<\/code><\/pre>\n\n\n\n<p><strong>Aktywuj \u015brodowisko:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/ai_env\/bin\/activate<\/code><\/pre>\n\n\n\n<p>Zobaczysz <code>(ai_env)<\/code> na pocz\u0105tku linii.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 5: Zainstaluj biblioteki Python<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install anthropic pandas numpy openpyxl PyPDF2 ddgs<\/code><\/pre>\n\n\n\n<p>Poczekaj a\u017c si\u0119 zainstaluj\u0105 (2-3 minuty).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 6: Pobierz API Key od Anthropic<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Wejd\u017a na: <a href=\"https:\/\/console.anthropic.com\">https:\/\/console.anthropic.com<\/a><\/li>\n\n\n\n<li>Zaloguj si\u0119 \/ Zarejestruj<\/li>\n\n\n\n<li>Id\u017a do <strong>Settings<\/strong> \u2192 <strong>API Keys<\/strong><\/li>\n\n\n\n<li>Kliknij <strong>Create Key<\/strong><\/li>\n\n\n\n<li>Skopiuj klucz (zaczyna si\u0119 od <code>sk-ant-api03-...<\/code>)<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 7: Ustaw API Key w systemie<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>read -s ANTHROPIC_API_KEY &amp;&amp; export ANTHROPIC_API_KEY<\/code><\/pre>\n\n\n\n<p>Wklej sw\u00f3j klucz API i naci\u015bnij Enter (nie zobaczysz go podczas wklejania &#8211; to normalne).<\/p>\n\n\n\n<p><strong>Dodaj na sta\u0142e do profilu:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"export ANTHROPIC_API_KEY='TWOJ_KLUCZ_TUTAJ'\" &gt;&gt; ~\/.bash_profile<\/code><\/pre>\n\n\n\n<p>\u26a0\ufe0f Zamie\u0144 <code>TWOJ_KLUCZ_TUTAJ<\/code> na prawdziwy klucz!<\/p>\n\n\n\n<p><strong>Za\u0142aduj profil:<\/strong><\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/.bash_profile<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 8: Ustaw polskie znaki (UTF-8)<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'export LC_ALL=pl_PL.UTF-8' &gt;&gt; ~\/.bash_profile\necho 'export LANG=pl_PL.UTF-8' &gt;&gt; ~\/.bash_profile\nsource ~\/.bash_profile<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 9: Stw\u00f3rz folder workspace<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p ~\/Desktop\/AI<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>KROK 10: Stw\u00f3rz plik z kodem systemu agent\u00f3w<\/strong><\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt; ~\/Desktop\/ai_team.py &lt;&lt; 'ENDCODE'\n<em>#!\/usr\/bin\/env python3<\/em>\n<em># -*- coding: utf-8 -*-<\/em>\n\nimport sys\nimport os\nimport locale\nimport hashlib\n\ntry:\n    locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')\nexcept:\n    try:\n        locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')\n    except:\n        pass\n\nsys.stdin.reconfigure(encoding='utf-8')\nsys.stdout.reconfigure(encoding='utf-8')\nsys.stderr.reconfigure(encoding='utf-8')\nos.environ&#91;'PYTHONIOENCODING'] = 'utf-8'\n\nimport anthropic\nimport json\nfrom datetime import datetime\nfrom pathlib import Path\nimport re\nfrom ddgs import DDGS\nimport pandas as pd\nimport numpy as np\n\nclass WebSearch:\n    @staticmethod\n    def search(query, max_results=5):\n        try:\n            print(f\"   \ud83c\udf10 Szukam: '{query}'...\", flush=True)\n            ddgs = DDGS()\n            results = &#91;]\n            for r in ddgs.text(query, max_results=max_results):\n                results.append({\n                    \"title\": r.get(\"title\", \"\"),\n                    \"url\": r.get(\"href\", \"\"),\n                    \"snippet\": r.get(\"body\", \"\")\n                })\n            print(f\"   \u2705 {len(results)} wynik\u00f3w\", flush=True)\n            return results\n        except Exception as e:\n            print(f\"   \u26a0\ufe0f  B\u0142\u0105d: {e}\", flush=True)\n            return &#91;]\n\nclass DataAnalyzer:\n    @staticmethod\n    def load_csv(filepath):\n        try:\n            df = pd.read_csv(filepath)\n            print(f\"   \ud83d\udcca CSV: {len(df)} \u00d7 {len(df.columns)}\", flush=True)\n            return df\n        except Exception as e:\n            print(f\"   \u26a0\ufe0f  {e}\", flush=True)\n            return None\n    \n    @staticmethod\n    def load_excel(filepath):\n        try:\n            df = pd.read_excel(filepath)\n            print(f\"   \ud83d\udcca Excel: {len(df)} wierszy\", flush=True)\n            return df\n        except Exception as e:\n            print(f\"   \u26a0\ufe0f  {e}\", flush=True)\n            return None\n    \n    @staticmethod\n    def analyze_dataframe(df):\n        return {\n            \"rows\": len(df),\n            \"columns\": list(df.columns),\n            \"dtypes\": {str(k): str(v) for k, v in df.dtypes.to_dict().items()},\n            \"missing\": {str(k): int(v) for k, v in df.isnull().sum().to_dict().items()},\n            \"sample\": df.head(3).to_dict()\n        }\n\nclass FileCache:\n    def __init__(self):\n        self.cache = {}\n        self.hashes = {}\n    \n    def get_file_hash(self, filepath):\n        try:\n            with open(filepath, 'rb') as f:\n                return hashlib.md5(f.read()).hexdigest()\n        except:\n            return None\n    \n    def is_changed(self, filepath):\n        current_hash = self.get_file_hash(filepath)\n        old_hash = self.hashes.get(str(filepath))\n        if current_hash != old_hash:\n            self.hashes&#91;str(filepath)] = current_hash\n            return True\n        return False\n    \n    def get(self, key):\n        return self.cache.get(key)\n    \n    def set(self, key, value):\n        self.cache&#91;key] = value\n\nclass Agent:\n    def __init__(self, name, role, system_prompt, api_key=None, thinking_budget=5000):\n        self.name = name\n        self.role = role\n        self.system_prompt = system_prompt\n        self.client = anthropic.Anthropic(api_key=api_key)\n        self.memory = &#91;]\n        self.thinking_budget = thinking_budget\n        self.web_search = WebSearch()\n        self.data_analyzer = DataAnalyzer()\n    \n    def think(self, message, context=None, use_extended_thinking=True, allow_search=True, cached_context=None):\n        conversation = &#91;]\n        for mem in self.memory&#91;-3:]:\n            conversation.append({\"role\": \"user\", \"content\": mem&#91;\"input\"]})\n            conversation.append({\"role\": \"assistant\", \"content\": mem&#91;\"output\"]})\n        \n        anti_hallucination = \"\"\"\nZASADY: 1. Nie wiesz? PRZYZNAJ SI\u0118 2. NIE WYMY\u015aLAJ 3. Web: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; q &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt; 4. Czytaj: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; n &lt;&lt;&lt;END_READ&gt;&gt;&gt; 5. Analizuj: &lt;&lt;&lt;ANALYZE&gt;&gt;&gt; f.csv &lt;&lt;&lt;END_ANALYZE&gt;&gt;&gt;\"\"\"\n        \n        try:\n            print(f\"   \ud83e\udde0 {self.name} my\u015bli{'(cache)' if cached_context else ''}...\", flush=True)\n            \n            system_blocks = &#91;\n                {\n                    \"type\": \"text\",\n                    \"text\": self.system_prompt,\n                    \"cache_control\": {\"type\": \"ephemeral\"}\n                }\n            ]\n            \n            message_content = &#91;]\n            \n            if cached_context:\n                message_content.append({\n                    \"type\": \"text\",\n                    \"text\": cached_context,\n                    \"cache_control\": {\"type\": \"ephemeral\"}\n                })\n            \n            full_msg = message + anti_hallucination\n            if context and not cached_context:\n                full_msg = f\"KONTEKST:\\n{context}\\n\\nZADANIE:\\n{message}{anti_hallucination}\"\n            \n            message_content.append({\n                \"type\": \"text\",\n                \"text\": full_msg\n            })\n            \n            conversation.append({\n                \"role\": \"user\",\n                \"content\": message_content\n            })\n            \n            api_params = {\n                \"model\": \"claude-sonnet-4-20250514\",\n                \"max_tokens\": 16000,\n                \"system\": system_blocks,\n                \"messages\": conversation,\n            }\n            \n            if use_extended_thinking:\n                api_params&#91;\"thinking\"] = {\n                    \"type\": \"enabled\",\n                    \"budget_tokens\": self.thinking_budget\n                }\n            \n            response = self.client.messages.create(**api_params)\n            \n            if hasattr(response, 'usage'):\n                usage = response.usage\n                if hasattr(usage, 'cache_creation_input_tokens') and usage.cache_creation_input_tokens:\n                    print(f\"   \ud83d\udcbe Cache utworzony: {usage.cache_creation_input_tokens} token\u00f3w\", flush=True)\n                if hasattr(usage, 'cache_read_input_tokens') and usage.cache_read_input_tokens:\n                    print(f\"   \u26a1 Cache hit: {usage.cache_read_input_tokens} token\u00f3w (90% taniej!)\", flush=True)\n            \n            text_content = None\n            for block in response.content:\n                if block.type == \"thinking\":\n                    print(f\"   \ud83d\udcad {len(block.thinking)} zn\", flush=True)\n                elif block.type == \"text\":\n                    text_content = block.text\n            \n            output = text_content if text_content else response.content&#91;0].text\n            \n            if allow_search and \"&lt;&lt;&lt;SEARCH&gt;&gt;&gt;\" in output:\n                search_pattern = r'&lt;&lt;&lt;SEARCH&gt;&gt;&gt;\\s*(.*?)\\s*&lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;'\n                searches = re.findall(search_pattern, output, re.DOTALL)\n                \n                results_text = \"\\n=== WYNIKI ===\\n\"\n                for q in searches&#91;:2]:\n                    results = self.web_search.search(q.strip(), max_results=3)\n                    results_text += f\"\\n{q}:\\n\"\n                    for i, r in enumerate(results, 1):\n                        results_text += f\"{i}. {r&#91;'title']}\\n{r&#91;'snippet']&#91;:200]}\\n{r&#91;'url']}\\n\"\n                \n                output = re.sub(search_pattern, '', output, flags=re.DOTALL)\n                api_params&#91;\"thinking\"] = None\n                conversation.append({\"role\": \"assistant\", \"content\": output})\n                conversation.append({\"role\": \"user\", \"content\": f\"Wyniki:{results_text}\\nOdpowiedz.\"})\n                \n                response2 = self.client.messages.create(**api_params)\n                output = response2.content&#91;0].text if response2.content&#91;0].type == \"text\" else output\n            \n            print(f\"   \u2705 {self.name} gotowy!\", flush=True)\n            \n            self.memory.append({\n                \"timestamp\": datetime.now().isoformat(),\n                \"input\": message&#91;:500],\n                \"output\": output&#91;:500],\n                \"context\": None\n            })\n            \n            return output\n            \n        except Exception as e:\n            return f\"\u274c B\u0142\u0105d {self.name}: {str(e)}\"\n    \n    def save_memory(self, filepath):\n        recent_memory = self.memory&#91;-20:]\n        with open(filepath, 'w', encoding='utf-8') as f:\n            json.dump(recent_memory, f, ensure_ascii=False, indent=2)\n    \n    def load_memory(self, filepath):\n        if os.path.exists(filepath):\n            with open(filepath, 'r', encoding='utf-8') as f:\n                self.memory = json.load(f)\n\nclass AgentTeam:\n    def __init__(self, workspace_dir=\"~\/Desktop\/AI\"):\n        self.workspace_dir = Path(workspace_dir).expanduser()\n        self.workspace_dir.mkdir(exist_ok=True)\n        \n        api_key = os.environ.get(\"ANTHROPIC_API_KEY\")\n        if not api_key:\n            print(\"\u26a0\ufe0f  UWAGA: Ustaw ANTHROPIC_API_KEY\")\n            return\n        \n        self.data_analyzer = DataAnalyzer()\n        self.file_cache = FileCache()\n        self.cached_context = None\n        self.context_loaded = False\n        \n        self.agents = {\n            \"analityk\": Agent(\n                \"Analityk\", \"Analiza\",\n                \"\"\"Ekspert analityki danych. Specjalizacje:\n- Analiza CSV\/Excel (Pandas)\n- Statystyki i trendy (NumPy)\n- Raporty oparte na FAKTACH\n\nNARZ\u0118DZIA:\nWeb: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; query &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;\nCzytaj: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; nazwa &lt;&lt;&lt;END_READ&gt;&gt;&gt;\nAnalizuj: &lt;&lt;&lt;ANALYZE&gt;&gt;&gt; plik.csv &lt;&lt;&lt;END_ANALYZE&gt;&gt;&gt;\nZapisz: &lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\nAktualizuj: &lt;&lt;&lt;UPDATE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\n\nNIE WYMY\u015aLAJ liczb i danych! \ud83d\udcca\"\"\",\n                api_key, 8000\n            ),\n            \n            \"ceo\": Agent(\n                \"CEO\", \"Strategia\",\n                \"\"\"CEO-mentor z do\u015bwiadczeniem budowania firm wartych miliardy.\nMy\u015blisz strategicznie, BIG PICTURE, 10x nie 10%.\n\nNARZ\u0118DZIA:\nWeb: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; query &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;\nCzytaj: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; nazwa &lt;&lt;&lt;END_READ&gt;&gt;&gt;\nZapisz: &lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\n\nKwestionujesz ma\u0142e my\u015blenie, wskazujesz skalowanie.\nPrzyznaj si\u0119 gdy nie znasz bran\u017cy u\u017cytkownika. \ud83d\ude80\"\"\",\n                api_key, 10000\n            ),\n            \n            \"coo\": Agent(\n                \"COO\", \"Operacje\",\n                \"\"\"COO - mistrz egzekucji, planowania i koordynacji.\n\nMO\u017bLIWO\u015aCI:\nDELEGACJA: DELEGATION: &#91;lista agent\u00f3w]\nWEB: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; query &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;\nCZYTAJ: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; nazwa &lt;&lt;&lt;END_READ&gt;&gt;&gt;\nZAPISZ: &lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\nAKTUALIZUJ: &lt;&lt;&lt;UPDATE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\n\nZAWSZE masz dost\u0119p do profilu u\u017cytkownika (mapa_celow.md, profil_zyciowy.md).\nPrzek\u0142adasz wizj\u0119 na konkretne plany z action items i timeline'ami.\nKoordynujesz zesp\u00f3\u0142. Zarz\u0105dzasz chaosem. \u2699\ufe0f\"\"\",\n                api_key, 7000\n            ),\n            \n            \"trener\": Agent(\n                \"Trener\", \"Zdrowie\",\n                \"\"\"Trener zdrowia, fitness i optymalizacji organizmu.\n\nNARZ\u0118DZIA:\nWeb: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; query &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;\nCzytaj: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; nazwa &lt;&lt;&lt;END_READ&gt;&gt;&gt;\nZapisz: &lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\n\nWA\u017bNE: NIE DIAGNOZUJESZ chor\u00f3b (to lekarz).\nTworzysz plany treningowe, suplementacj\u0119, od\u017cywianie.\nPomagasz osi\u0105ga\u0107 peak performance. \ud83d\udcaa\"\"\",\n                api_key, 6000\n            ),\n            \n            \"sprzedawca\": Agent(\n                \"Sprzedawca\", \"Marketing\",\n                \"\"\"Mistrz sprzeda\u017cy i marketingu.\n\nNARZ\u0118DZIA:\nWeb: &lt;&lt;&lt;SEARCH&gt;&gt;&gt; query &lt;&lt;&lt;END_SEARCH&gt;&gt;&gt;\nCzytaj: &lt;&lt;&lt;READ_FILE&gt;&gt;&gt; nazwa &lt;&lt;&lt;END_READ&gt;&gt;&gt;\nZapisz: &lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt; nazwa.md &lt;&lt;&lt;CONTENT&gt;&gt;&gt; tre\u015b\u0107 &lt;&lt;&lt;END&gt;&gt;&gt;\n\nKampanie (FB, Google, YouTube), copywriting, funnel optimization.\nROI i prognozy - b\u0105d\u017a realistyczny. Growth hacking oparty na faktach. \ud83d\udcb0\"\"\",\n                api_key, 7000\n            )\n        }\n        \n        self.load_all_memories()\n        print(\"\\n\ud83d\udcda Wczytuj\u0119 pliki z workspace (cache)...\")\n        self.load_all_files_to_cache()\n    \n    def load_all_memories(self):\n        memory_dir = self.workspace_dir \/ \"memories\"\n        memory_dir.mkdir(exist_ok=True)\n        for name, agent in self.agents.items():\n            agent.load_memory(memory_dir \/ f\"{name}_memory.json\")\n    \n    def save_all_memories(self):\n        memory_dir = self.workspace_dir \/ \"memories\"\n        memory_dir.mkdir(exist_ok=True)\n        for name, agent in self.agents.items():\n            agent.save_memory(memory_dir \/ f\"{name}_memory.json\")\n    \n    def load_all_files_to_cache(self):\n        all_content = \"\"\n        files_loaded = 0\n        \n        all_content += \"=== PROFIL U\u017bYTKOWNIKA ===\\n\\n\"\n        for fname in &#91;\"mapa_celow.md\", \"profil_zyciowy.md\"]:\n            content = self.read_file_smart(fname)\n            if content:\n                all_content += f\"--- {fname} ---\\n{content}\\n\\n\"\n                files_loaded += 1\n        \n        all_content += \"=== WSZYSTKIE PLIKI ===\\n\\n\"\n        for path in self.workspace_dir.rglob('*'):\n            if path.is_file() and path.name not in &#91;\"mapa_celow.md\", \"profil_zyciowy.md\"]:\n                rel = str(path.relative_to(self.workspace_dir))\n                content = self.read_file_smart(rel)\n                if content:\n                    if len(content) &gt; 10000:\n                        content = content&#91;:5000] + f\"\\n...&#91;skr\u00f3cono {len(content)-5000} zn]...\\n\" + content&#91;-1000:]\n                    all_content += f\"--- {rel} ---\\n{content}\\n\\n\"\n                    files_loaded += 1\n                    \n                    if files_loaded &gt;= 50:\n                        break\n        \n        self.cached_context = all_content\n        self.context_loaded = True\n        \n        print(f\"\u2705 Za\u0142adowano {files_loaded} plik\u00f3w - gotowe do cache!\\n\")\n    \n    def read_file_smart(self, filename):\n        filepath = self.workspace_dir \/ filename\n        \n        if not filepath.exists():\n            matches = list(self.workspace_dir.rglob(filename))\n            if matches:\n                filepath = matches&#91;0]\n            else:\n                return None\n        \n        cache_key = str(filepath)\n        if not self.file_cache.is_changed(filepath):\n            cached = self.file_cache.get(cache_key)\n            if cached:\n                return cached\n        \n        try:\n            ext = filepath.suffix.lower()\n            \n            if ext in &#91;'.txt', '.md', '.json', '.py', '.js', '.html', '.css', '.yaml']:\n                with open(filepath, 'r', encoding='utf-8') as f:\n                    content = f.read()\n                self.file_cache.set(cache_key, content)\n                return content\n            \n            elif ext == '.csv':\n                df = self.data_analyzer.load_csv(filepath)\n                if df is not None:\n                    summary = self.data_analyzer.analyze_dataframe(df)\n                    content = f\"CSV: {json.dumps(summary, indent=2)}\\nPr\u00f3bka:\\n{df.head(5).to_string()}\"\n                    self.file_cache.set(cache_key, content)\n                    return content\n            \n            elif ext in &#91;'.xlsx', '.xls']:\n                df = self.data_analyzer.load_excel(filepath)\n                if df is not None:\n                    summary = self.data_analyzer.analyze_dataframe(df)\n                    content = f\"Excel: {json.dumps(summary, indent=2)}\\nPr\u00f3bka:\\n{df.head(5).to_string()}\"\n                    self.file_cache.set(cache_key, content)\n                    return content\n            \n            elif ext == '.pdf':\n                try:\n                    import PyPDF2\n                    with open(filepath, 'rb') as f:\n                        reader = PyPDF2.PdfReader(f)\n                        text = \"\"\n                        for page in reader.pages&#91;:3]:\n                            text += page.extract_text()\n                    content = f\"PDF (3 str): {text&#91;:3000]}\"\n                    self.file_cache.set(cache_key, content)\n                    return content\n                except:\n                    return None\n            \n            return None\n                \n        except Exception as e:\n            return None\n    \n    def save_file(self, filename, content):\n        filepath = self.workspace_dir \/ filename\n        filepath.parent.mkdir(parents=True, exist_ok=True)\n        try:\n            with open(filepath, 'w', encoding='utf-8') as f:\n                f.write(content)\n            print(f\"\\n\u2705 ZAPISANO: {filepath}\\n\", flush=True)\n            self.context_loaded = False\n            return str(filepath)\n        except Exception as e:\n            print(f\"\\n\u274c {e}\\n\", flush=True)\n            return None\n    \n    def update_file(self, filename, content):\n        filepath = self.workspace_dir \/ filename\n        filepath.parent.mkdir(parents=True, exist_ok=True)\n        try:\n            with open(filepath, 'w', encoding='utf-8') as f:\n                f.write(content)\n            print(f\"\\n\u2705 ZAKTUALIZOWANO: {filepath}\\n\", flush=True)\n            self.context_loaded = False\n            return str(filepath)\n        except Exception as e:\n            print(f\"\\n\u274c {e}\\n\", flush=True)\n            return None\n    \n    def process_file_operations(self, text):\n        save_p = r'&lt;&lt;&lt;SAVE_FILE&gt;&gt;&gt;\\s*(&#91;^\\n&lt;]+)\\s*&lt;&lt;&lt;CONTENT&gt;&gt;&gt;\\s*(.*?)\\s*&lt;&lt;&lt;END&gt;&gt;&gt;'\n        update_p = r'&lt;&lt;&lt;UPDATE_FILE&gt;&gt;&gt;\\s*(&#91;^\\n&lt;]+)\\s*&lt;&lt;&lt;CONTENT&gt;&gt;&gt;\\s*(.*?)\\s*&lt;&lt;&lt;END&gt;&gt;&gt;'\n        \n        for match in re.finditer(save_p, text, re.DOTALL | re.IGNORECASE):\n            self.save_file(match.group(1).strip(), match.group(2).strip())\n        \n        for match in re.finditer(update_p, text, re.DOTALL | re.IGNORECASE):\n            self.update_file(match.group(1).strip(), match.group(2).strip())\n        \n        text = re.sub(save_p, '', text, flags=re.DOTALL | re.IGNORECASE)\n        text = re.sub(update_p, '', text, flags=re.DOTALL | re.IGNORECASE)\n        return text.strip()\n    \n    def process_message(self, msg, use_extended_thinking=True):\n        print(f\"\\n{'='*60}\\n\ud83d\udc64 TY: {msg}\\n{'='*60}\\n\")\n        \n        if not self.context_loaded:\n            print(\"\u267b\ufe0f  Od\u015bwie\u017cam cache...\")\n            self.load_all_files_to_cache()\n        \n        coo = self.agents&#91;\"coo\"]\n        \n        prompt = f\"\"\"USER: {msg}\n\nAGENCI: analityk\ud83d\udcca, ceo\ud83d\ude80, trener\ud83d\udcaa, sprzedawca\ud83d\udcb0\nDELEGACJA: DELEGATION: &#91;lista]\"\"\"\n        \n        print(\"\u2699\ufe0f  COO...\\n\")\n        \n        resp = coo.think(\n            prompt, \n            use_extended_thinking=use_extended_thinking,\n            cached_context=self.cached_context\n        )\n        \n        if \"DELEGATION:\" in resp:\n            needed = &#91;]\n            if \"analityk\" in resp.lower():\n                needed.append(\"analityk\")\n            if \"ceo\" in resp.lower():\n                needed.append(\"ceo\")\n            if \"trener\" in resp.lower():\n                needed.append(\"trener\")\n            if \"sprzedaw\" in resp.lower():\n                needed.append(\"sprzedawca\")\n            \n            print(f\"\ud83c\udfaf Delegacja: {', '.join(needed)}\\n\")\n            \n            answers = {}\n            for aname in needed:\n                agent = self.agents&#91;aname]\n                task = f\"Zadanie: {msg}\"\n                \n                aresp = agent.think(\n                    task, \n                    use_extended_thinking=use_extended_thinking,\n                    cached_context=self.cached_context\n                )\n                \n                answers&#91;aname] = aresp\n                print(f\"\\n\ud83d\udcdd {agent.name}\\n\")\n            \n            print(\"\\n\u2699\ufe0f  COO syntetyzuje...\\n\")\n            \n            synth = f\"\"\"User: {msg}\nODPOWIEDZI: {json.dumps(answers, ensure_ascii=False, indent=2)}\n\nPlan:\n<em>## \ud83c\udfaf PODSUMOWANIE<\/em>\n<em>## \ud83d\udccb PLAN<\/em>\n<em>## \u23f0 TIMELINE<\/em>\n<em>## \u2705 KROKI\"\"\"<\/em>\n            \n            final = coo.think(synth, use_extended_thinking=False, cached_context=None)\n        else:\n            final = resp\n        \n        final = self.process_file_operations(final)\n        self.save_all_memories()\n        os.system('afplay \/System\/Library\/Sounds\/Glass.aiff &amp;')\n        \n        print(f\"\\n{'='*60}\\n\u2699\ufe0f  COO:\\n{'='*60}\\n{final}\\n{'='*60}\\n\")\n        return final\n    \n    def talk_to_agent(self, aname, msg, use_extended_thinking=True):\n        if aname not in self.agents:\n            print(f\"\u274c Nie ma: {aname}\")\n            return\n        \n        agent = self.agents&#91;aname]\n        print(f\"\\n{'='*60}\\n\ud83d\udc64 \u2192 {agent.name}: {msg}\\n{'='*60}\\n\")\n        \n        if not self.context_loaded:\n            self.load_all_files_to_cache()\n        \n        resp = agent.think(\n            msg, \n            use_extended_thinking=use_extended_thinking,\n            cached_context=self.cached_context\n        )\n        \n        resp = self.process_file_operations(resp)\n        self.save_all_memories()\n        os.system('afplay \/System\/Library\/Sounds\/Glass.aiff &amp;')\n        \n        print(f\"\\n{agent.name}:\\n{resp}\\n{'='*60}\\n\")\n        return resp\n\ndef main():\n    print(\"\"\"\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551   \ud83d\ude80 SYSTEM 5 AGENT\u00d3W AI with PROMPT CACHING \ud83d\ude80        \u2551\n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\n\nOPTYMALIZACJE:\n\ud83d\udcbe Prompt Caching - 90% taniej po 1. wiadomo\u015bci\n\ud83d\udcda Wszystkie pliki na starcie\n\u26a1 Smart compression\n\ud83d\udcb0 Oszcz\u0119dno\u015b\u0107 80-95% token\u00f3w\n\nAGENCI:\n\ud83d\udcca Analityk (8k thinking)\n\ud83d\ude80 CEO (10k thinking)\n\u2699\ufe0f  COO (7k thinking)\n\ud83d\udcaa Trener (6k thinking)\n\ud83d\udcb0 Sprzedawca (7k thinking)\n\nMOCE:\n\ud83d\udcca Pandas\/NumPy - analiza CSV\/Excel\n\ud83d\udcc4 Wszystkie typy plik\u00f3w (.py .json .csv .xlsx .pdf .txt .md)\n\ud83c\udf10 Web search\n\ud83e\udde0 Extended thinking\n\ud83d\udeab Antyhalucynacja\n\ud83d\udcbe Pami\u0119\u0107 mi\u0119dzy sesjami\n\ud83d\udd14 Powiadomienia d\u017awi\u0119kowe\n\nKOMENDY:\n- @agent &#91;wiadomo\u015b\u0107] - z extended thinking\n- @agent! &#91;wiadomo\u015b\u0107] - bez extended thinking<\/code><\/pre>\n\n\n\n<p>To run code, enable code execution and file creation in Settings &gt; Capabilities.<\/p>\n\n\n\n<p>Continue<\/p>\n\n\n\n<p>15:42<\/p>\n\n\n\n<p>(szybciej)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>exit \/ quit<\/li>\n<\/ul>\n\n\n\n<p>Cache trwa 5 min &#8211; kolejne wiadomo\u015bci 90% ta\u0144sze! WORKSPACE: ~\/Desktop\/AI\/ &#8222;&#8221;&#8221;)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if not os.environ.get(\"ANTHROPIC_API_KEY\"):\n    print(\"\u26a0\ufe0f  Ustaw API KEY\")\n    return\n\nteam = AgentTeam()\n\nwhile True:\n    try:\n        sys.stdout.write(\"\\n\ud83d\udcac TY: \")\n        sys.stdout.flush()\n        inp = sys.stdin.readline().strip()\n        \n        if not inp:\n            continue\n        \n        if inp.lower() in &#91;'exit', 'quit', 'q']:\n            print(\"\\n\ud83d\udc4b Do zobaczenia!\\n\")\n            break\n        \n        use_ext = True\n        if inp.startswith('@') and '!' in inp:\n            use_ext = False\n            inp = inp.replace('!', '')\n        \n        if inp.startswith('@'):\n            parts = inp&#91;1:].split(' ', 1)\n            if len(parts) == 2:\n                team.talk_to_agent(parts&#91;0].lower(), parts&#91;1], use_extended_thinking=use_ext)\n            else:\n                print(\"\u274c U\u017cyj: @agent wiadomo\u015b\u0107\")\n        else:\n            team.process_message(inp, use_extended_thinking=use_ext)\n            \n    except KeyboardInterrupt:\n        print(\"\\n\\n\ud83d\udc4b Do zobaczenia!\\n\")\n        break\n    except Exception as e:\n        print(f\"\\n\u274c B\u0142\u0105d: {str(e)}\\n\")<\/code><\/pre>\n\n\n\n<p>if <strong>name<\/strong> == &#8222;<strong>main<\/strong>&#8222;: main() ENDCODE<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n---\n\n### **KROK 11: Stw\u00f3rz skr\u00f3t do uruchamiania**\n```bash\necho \"alias agents='source ~\/ai_env\/bin\/activate &amp;&amp; python ~\/Desktop\/ai_team.py'\" &gt;&gt; ~\/.bash_profile\nsource ~\/.bash_profile\n```\n\n---\n\n### **KROK 12: GOTOWE! Uruchom system**\n```bash\nagents\n```\n\nLub:\n```bash\nsource ~\/ai_env\/bin\/activate\npython ~\/Desktop\/ai_team.py\n```\n\n---\n\n## \ud83e\udd16 OPIS AGENT\u00d3W I ICH ZADANIA {#agenci}\n\n### **\ud83d\udcca ANALITYK**\n**Rola:** Ekspert analityki danych\n\n**Zadania:**\n- Analiza CSV i Excel (Pandas, NumPy)\n- Tworzenie statystyk i raport\u00f3w\n- Wizualizacja danych\n- Analiza trend\u00f3w\n\n**Extended Thinking:** 8000 token\u00f3w\n\n**Zasady:**\n- \u2705 Bazuje TYLKO na faktycznych danych\n- \u274c NIE WYMY\u015aLA liczb i statystyk\n- \u2705 Przyznaje si\u0119 gdy brakuje danych\n- \u2705 Mo\u017ce zapisywa\u0107 raporty\n\n**Przyk\u0142adowe u\u017cycie:**<\/code><\/pre>\n\n\n\n<p>@analityk Przeanalizuj dane z pliku sprzedaz_2024.csv i stw\u00f3rz raport<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n---\n\n### **\ud83d\ude80 CEO-MENTOR-MILIARDER**\n**Rola:** Strategiczny doradca biznesowy\n\n**Zadania:**\n- Definiowanie wizji i cel\u00f3w\n- My\u015blenie strategiczne (10x, nie 10%)\n- Kwestionowanie ma\u0142ego my\u015blenia\n- Wskazywanie mo\u017cliwo\u015bci skalowania\n- Inspirowanie do odwa\u017cnych ruch\u00f3w\n\n**Extended Thinking:** 10000 token\u00f3w (najd\u0142u\u017csze my\u015blenie)\n\n**Zasady:**\n- \u2705 My\u015bli BIG PICTURE\n- \u2705 Kwestionuje ograniczaj\u0105ce przekonania\n- \u274c Przyznaje si\u0119 gdy nie zna bran\u017cy\n- \u2705 Inspiruje i motywuje\n\n**Przyk\u0142adowe u\u017cycie:**<\/code><\/pre>\n\n\n\n<p>@ceo Jak osi\u0105gn\u0105\u0107 1M przychodu w 2025?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n---\n\n### **\u2699\ufe0f COO**\n**Rola:** Chief Operating Officer - egzekucja i koordynacja\n\n**Zadania:**\n- Przek\u0142adanie wizji na konkretne plany\n- Koordynacja pracy innych agent\u00f3w (delegacja)\n- Tworzenie timeline'\u00f3w i action items\n- Zarz\u0105dzanie chaosem i priorytetami\n- Raportowanie do u\u017cytkownika\n\n**Extended Thinking:** 7000 token\u00f3w\n\n**Specjalne mo\u017cliwo\u015bci:**\n- \u2705 Mo\u017ce delegowa\u0107 zadania do innych agent\u00f3w\n- \u2705 ZAWSZE ma dost\u0119p do profilu u\u017cytkownika\n- \u2705 Orkiestruje zesp\u00f3\u0142\n\n**Zasady:**\n- \u2705 Plany oparte na faktach\n- \u2705 Konkretne action items z timeline'ami\n- \u2705 Zarz\u0105dza zespo\u0142em\n- \u274c Nie spekuluje - bazuje na danych\n\n**Przyk\u0142adowe u\u017cycie:**<\/code><\/pre>\n\n\n\n<p>@coo Stw\u00f3rz plan na Q1 2025 z timeline&#8217;em<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nLub bez @:<\/code><\/pre>\n\n\n\n<p>Potrzebuj\u0119 planu marketingowego na marzec<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COO sam zdecyduje czy potrzebuje pomocy innych agent\u00f3w.\n\n---\n\n### **\ud83d\udcaa TRENER**\n**Rola:** Ekspert zdrowia i fitness\n\n**Zadania:**\n- Analiza parametr\u00f3w zdrowotnych\n- Planowanie trening\u00f3w\n- Suplementacja i od\u017cywianie\n- Optymalizacja snu i regeneracji\n- Energy management dla peak performance\n\n**Extended Thinking:** 6000 token\u00f3w\n\n**Zasady:**\n- \u274c NIE DIAGNOZUJE chor\u00f3b (to lekarz!)\n- \u2705 Tworzy plany treningowe\n- \u2705 Radzi w kwestii suplementacji\n- \u2705 Optymalizuje zdrowie dla sukcesu\n\n**Przyk\u0142adowe u\u017cycie:**<\/code><\/pre>\n\n\n\n<p>@trener Mam ma\u0142o energii ostatnio, co robi\u0107?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n---\n\n### **\ud83d\udcb0 SPRZEDAWCA**\n**Rola:** Mistrz sprzeda\u017cy i marketingu\n\n**Zadania:**\n- Kampanie reklamowe (FB, Google, YouTube)\n- Copywriting kt\u00f3ry konwertuje\n- Strategie sprzeda\u017cowe\n- Funnel optimization\n- Growth hacking\n- ROI optimization\n\n**Extended Thinking:** 7000 token\u00f3w\n\n**Zasady:**\n- \u2705 Kampanie oparte na faktach\n- \u2705 Realistyczne prognozy ROI\n- \u274c Nie obiecuje cud\u00f3w\n- \u2705 Konkretne metryki i cele\n\n**Przyk\u0142adowe u\u017cycie:**<\/code><\/pre>\n\n\n\n<p>@sprzedawca Stw\u00f3rz kampani\u0119 na Facebook dla mojego kursu<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n---\n\n## \ud83c\udfae URUCHAMIANIE I KOMENDY {#u\u017cytkowanie}\n\n### **Uruchamianie:**\n\n**Spos\u00f3b 1 (skr\u00f3t):**\n```bash\nagents\n```\n\n**Spos\u00f3b 2 (pe\u0142na komenda):**\n```bash\nsource ~\/ai_env\/bin\/activate\npython ~\/Desktop\/ai_team.py\n```\n\n---\n\n### **Podstawowe komendy:**\n\n**Normalna rozmowa (COO orkiestruje):**<\/code><\/pre>\n\n\n\n<p>Chc\u0119 zwi\u0119kszy\u0107 przychody o 50k w Q1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COO sam zdecyduje kt\u00f3rzy agenci pomog\u0105.\n\n**Bezpo\u015brednia rozmowa z agentem:**<\/code><\/pre>\n\n\n\n<p>@ceo Jaka jest najlepsza strategia skalowania? @analityk Przeanalizuj dane ze sprzeda\u017cy @trener Zaplanuj mi treningi na tydzie\u0144<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n**Szybsza odpowied\u017a (bez extended thinking):**<\/code><\/pre>\n\n\n\n<p>@agent! kr\u00f3tkie pytanie<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Oszcz\u0119dza ~80% koszt\u00f3w, ale agent my\u015bli kr\u00f3cej.\n\n**Wyj\u015bcie:**<\/code><\/pre>\n\n\n\n<p>exit<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lub `quit` lub `q`\n\n---\n\n### **Workspace (pliki):**\n\nAgenci automatycznie:\n- \u2705 Czytaj\u0105 pliki z `~\/Desktop\/AI\/`\n- \u2705 ZAWSZE wczytuj\u0105 `mapa_celow.md` i `profil_zyciowy.md`\n- \u2705 Mog\u0105 zapisywa\u0107 i aktualizowa\u0107 pliki\n- \u2705 Analizuj\u0105 CSV, Excel, PDF\n\n**Dodaj pliki do workspace:**\n```bash\n# Stw\u00f3rz profil\nnano ~\/Desktop\/AI\/profil_zyciowy.md\n\n# Skopiuj istniej\u0105cy plik\ncp ~\/Documents\/raport.csv ~\/Desktop\/AI\/\n```\n\n---\n\n## \ud83d\udcb0 KOSZTY I OPTYMALIZACJA {#koszty}\n\n### **Model i ceny:**\n- **Claude Sonnet 4**\n- Input: $3 \/ milion token\u00f3w\n- Output: $15 \/ milion token\u00f3w\n\n### **Prompt Caching:**\n- **Pierwsza wiadomo\u015b\u0107:** pe\u0142na cena (~$0.15-0.30)\n- **Nast\u0119pne (w 5 min):** 90% taniej (~$0.01-0.03)\n- **Cache trwa:** 5 minut od ostatniego u\u017cycia\n\n### **Przyk\u0142adowe koszty:**\n\n**Intensywna sesja (20 wiadomo\u015bci w 30 min):**\n- 1. wiadomo\u015b\u0107: $0.20\n- 19 wiadomo\u015bci: 19 \u00d7 $0.02 = $0.38\n- **RAZEM: $0.58**\n\n**Dzienne u\u017cytkowanie (50 wiadomo\u015bci, 3 sesje):**\n- 3 \u00d7 $0.20 = $0.60 (budowanie cache)\n- 47 \u00d7 $0.02 = $0.94 (cache hits)\n- **RAZEM: $1.54\/dzie\u0144**\n\n**Miesi\u0119cznie:**\n- $1.54 \u00d7 30 = **~$46\/miesi\u0105c** (intensywne u\u017cytkowanie)\n- **$10-20 starczy na 200-600 wiadomo\u015bci**\n\n### **Optymalizacje:**\n\n\u2705 **Prompt Caching** - 90% taniej (ju\u017c wbudowane)\n\u2705 **Smart Compression** - skraca d\u0142ugie pliki\n\u2705 **Antyhalucynacja** - nie marnuje token\u00f3w na b\u0142\u0119dne odpowiedzi\n\u2705 **Pami\u0119\u0107 limitowana** - tylko ostatnie 20 rozm\u00f3w\n\u2705 **@agent!** - bez extended thinking = 5x taniej\n\n### **Rate Limit:**\n- 30,000 token\u00f3w\/minut\u0119 (darmowy tier)\n- Je\u015bli przekroczysz = czekaj 60 sekund\n- Rozwi\u0105zanie: u\u017cyj `@agent!` lub popro\u015b Anthropic o wy\u017cszy limit\n\n---\n\n## \ud83c\udf93 NAJLEPSZE PRAKTYKI\n\n### **Oszcz\u0119dzanie token\u00f3w:**\n1. U\u017cywaj `@agent!` dla prostych pyta\u0144\n2. Grupuj pytania w jednej wiadomo\u015bci\n3. Pytaj cz\u0119sto w 5-minutowych oknach (cache)\n4. Unikaj web search gdy nie potrzeba\n\n### **Efektywna praca z agentami:**\n1. **Stw\u00f3rz profil:** `~\/Desktop\/AI\/profil_zyciowy.md` i `~\/Desktop\/AI\/mapa_celow.md`\n2. **Deleguj do specjalist\u00f3w:** @analityk dla danych, @ceo dla strategii\n3. **Pozw\u00f3l COO orkiestrowa\u0107:** pisz normalnie, COO sam zbierze zesp\u00f3\u0142\n4. **Zapisuj wa\u017cne rzeczy:** agenci mog\u0105 tworzy\u0107 pliki .md w workspace\n\n### **Utrzymanie systemu:**\n1. Pami\u0119\u0107 czyszczona automatycznie (ostatnie 20 rozm\u00f3w)\n2. Pliki w workspace - ty zarz\u0105dzasz\n3. Do\u0142aduj kredyty gdy saldo &lt;$2\n4. Cache expire po 5 min - to normalne\n\n---\n\n## \ud83c\udd98 ROZWI\u0104ZYWANIE PROBLEM\u00d3W\n\n### **\"command not found: agents\"**\n```bash\nsource ~\/.bash_profile\nagents\n```\n\n### **\"No module named 'anthropic'\"**\n```bash\nsource ~\/ai_env\/bin\/activate\npip install anthropic\n```\n\n### **\"Rate limit exceeded\"**\nCzekaj 60 sekund lub u\u017cyj `@agent!` (bez extended thinking)\n\n### **\"Credit balance too low\"**\nDo\u0142aduj kredyty: https:\/\/console.anthropic.com\/settings\/billing\n\n### **Polskie znaki nie dzia\u0142aj\u0105**\n```bash\nexport LC_ALL=pl_PL.UTF-8\nexport LANG=pl_PL.UTF-8\n```\n\n### **Cache nie dzia\u0142a**\nTo normalne je\u015bli min\u0119\u0142o &gt;5 min. Pierwsza wiadomo\u015b\u0107 odbuduje cache.\n\n---\n\n## \u2705 CHECKLIST KO\u0143COWY\n\nPrzed pierwszym u\u017cyciem sprawd\u017a:\n\n- &#91; ] Homebrew zainstalowane (`brew --version`)\n- &#91; ] Node.js 18 zainstalowane (`node --version`)\n- &#91; ] Python venv aktywne (widzisz `(ai_env)`)\n- &#91; ] Biblioteki zainstalowane (`pip list | grep anthropic`)\n- &#91; ] API Key ustawiony (`echo $ANTHROPIC_API_KEY`)\n- &#91; ] Folder ~\/Desktop\/AI istnieje\n- &#91; ] Plik ~\/Desktop\/ai_team.py istnieje\n- &#91; ] Alias `agents` dzia\u0142a\n- &#91; ] Kredyty API &gt;$5\n\n---\n\n## \ud83c\udf89 GOTOWE!\n\nGratulacje! Masz najlepszy mo\u017cliwy system agent\u00f3w AI:\n\n\u2705 5 wyspecjalizowanych agent\u00f3w\n\u2705 Extended thinking (m\u0105drzejsze odpowiedzi)\n\u2705 Web search (aktualne informacje)\n\u2705 Prompt caching (90% oszcz\u0119dno\u015bci)\n\u2705 Antyhalucynacja (brak wymy\u015blonych danych)\n\u2705 Analiza danych (CSV, Excel, PDF)\n\u2705 Pami\u0119\u0107 mi\u0119dzy sesjami\n\u2705 Zapisywanie plik\u00f3w\n\u2705 Wszystkie typy plik\u00f3w\n\n**Koszt:** $10-20\/miesi\u0105c przy normalnym u\u017cytkowaniu\n\n**Uruchom:**\n```bash\nagents\n```\n\n**I zacznij pracowa\u0107 z najlepszymi agentami AI! \ud83d\ude80**<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udd16 KOMPLETNA INSTRUKCJA: SYSTEM 5 AGENT\u00d3W AI \ud83d\udccb SPIS TRE\u015aCI \ud83c\udfaf CZEGO POTRZEBUJESZ {#wymagania} Sprz\u0119t: Oprogramowanie: Konta i klucze: Wiedza: \ud83d\ude80 INSTALACJA KROK PO KROKU KROK 1: Otw\u00f3rz Terminal KROK 2: Zainstaluj Homebrew (mened\u017cer pakiet\u00f3w) Wklej w Terminal: Dodaj Homebrew do PATH: Sprawd\u017a czy dzia\u0142a: Powiniene\u015b zobaczy\u0107 numer wersji. KROK 3: Zainstaluj Node.js przez nvm [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-185","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/posts\/185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":1,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/posts\/185\/revisions"}],"predecessor-version":[{"id":186,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/posts\/185\/revisions\/186"}],"wp:attachment":[{"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/media?parent=185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/categories?post=185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marcelhoffman.pl\/index.php\/wp-json\/wp\/v2\/tags?post=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}