@thesashadev/girl-agent 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js
CHANGED
|
@@ -8599,7 +8599,561 @@ init_llm();
|
|
|
8599
8599
|
init_stages();
|
|
8600
8600
|
init_communication();
|
|
8601
8601
|
init_llm2();
|
|
8602
|
+
init_realism();
|
|
8602
8603
|
init_runtime_bus();
|
|
8604
|
+
|
|
8605
|
+
// src/webui/assistant-knowledge.ts
|
|
8606
|
+
init_esm_shims();
|
|
8607
|
+
init_communication();
|
|
8608
|
+
init_llm2();
|
|
8609
|
+
init_mcp();
|
|
8610
|
+
init_stages();
|
|
8611
|
+
var CORE_KNOWLEDGE_BASE = [
|
|
8612
|
+
{
|
|
8613
|
+
category: "overview",
|
|
8614
|
+
subcategory: "product",
|
|
8615
|
+
title: "\u0427\u0442\u043E \u0442\u0430\u043A\u043E\u0435 girl-agent",
|
|
8616
|
+
keywords: ["\u043F\u0440\u043E\u0435\u043A\u0442", "girl-agent", "\u0431\u043E\u0442", "\u0447\u0442\u043E \u044D\u0442\u043E", "\u043A\u043E\u043D\u0446\u0435\u043F\u0446\u0438\u044F", "\u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430", "\u0438\u0434\u0435\u044F"],
|
|
8617
|
+
body: "girl-agent \u2014 \u0434\u0432\u0438\u0436\u043E\u043A Telegram-\u043F\u0435\u0440\u0441\u043E\u043D\u044B, \u0430 \u043D\u0435 \u043E\u0431\u044B\u0447\u043D\u044B\u0439 \u0447\u0430\u0442-\u0431\u043E\u0442. \u041E\u043D \u0441\u0438\u043C\u0443\u043B\u0438\u0440\u0443\u0435\u0442 \u0436\u0438\u0432\u043E\u0435 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0434\u0435\u0432\u0443\u0448\u043A\u0438: \u043E\u043D\u043B\u0430\u0439\u043D/\u043E\u0444\u043B\u0430\u0439\u043D, \u0441\u043E\u043D, \u0437\u0430\u043D\u044F\u0442\u043E\u0441\u0442\u044C, \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435, \u043F\u0430\u043C\u044F\u0442\u044C, \u0441\u0442\u0430\u0434\u0438\u0438 \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0439, \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u044B, \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438, \u0440\u0435\u0430\u043A\u0446\u0438\u0438, \u0441\u0442\u0438\u043A\u0435\u0440\u044B, \u043E\u043F\u0435\u0447\u0430\u0442\u043A\u0438 \u0438 \u043F\u0440\u043E\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F. README \u043F\u0440\u044F\u043C\u043E \u043F\u043E\u0434\u0447\u0451\u0440\u043A\u0438\u0432\u0430\u0435\u0442: \u043E\u043D\u0430 \u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435, \u0438\u043D\u043E\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438 \u043C\u043E\u043B\u0447\u0438\u0442 \u2014 \u044D\u0442\u043E \u0437\u0430\u0434\u0443\u043C\u0430\u043D\u043E."
|
|
8618
|
+
},
|
|
8619
|
+
{
|
|
8620
|
+
category: "overview",
|
|
8621
|
+
subcategory: "layers",
|
|
8622
|
+
title: "\u0421\u043B\u043E\u0438\u0441\u0442\u0430\u044F \u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430",
|
|
8623
|
+
keywords: ["\u0441\u043B\u043E\u0438", "\u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430", "runtime", "prompt", "behavior", "presence", "memory"],
|
|
8624
|
+
body: "\u041F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0438\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0441\u043B\u043E\u0451\u0432: Telegram adapter \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F; Runtime \u043E\u0440\u043A\u0435\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 state; presence \u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C; behavior-tick \u0432\u044B\u0431\u0438\u0440\u0430\u0435\u0442 intent/delay/reaction; prompt \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442 persona/speech/boundaries/relationship/memory; LLM \u043F\u0438\u0448\u0435\u0442 \u0442\u0435\u043A\u0441\u0442; storage \u0444\u0438\u043A\u0441\u0438\u0440\u0443\u0435\u0442 \u043B\u043E\u0433\u0438, score, memory, agenda. \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443 \u043D\u0435\u043B\u044C\u0437\u044F \u043E\u0431\u044A\u044F\u0441\u043D\u044F\u0442\u044C \u043E\u0434\u043D\u0438\u043C system prompt \u2014 \u043F\u043E\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043D\u0430\u0434\u043E \u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0441\u043B\u043E\u0439, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0438\u043C\u043F\u0442\u043E\u043C."
|
|
8625
|
+
},
|
|
8626
|
+
{
|
|
8627
|
+
category: "overview",
|
|
8628
|
+
subcategory: "tech-stack",
|
|
8629
|
+
title: "\u0422\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430",
|
|
8630
|
+
keywords: ["\u0441\u0442\u0435\u043A", "typescript", "node", "react", "vite", "grammy", "gramjs", "tsup", "rust", "desktop"],
|
|
8631
|
+
body: "Runtime: Node.js >=20, TypeScript strict, ESM. Build: tsup \u0432 dist/cli.js. WebUI: React + Vite. Telegram: grammY \u0434\u043B\u044F bot mode \u0438 GramJS/telegram \u0434\u043B\u044F userbot. LLM: OpenAI-compatible \u0438 Anthropic SDK. Desktop: Rust/iced \u0432 desktop-rs. \u0418\u043C\u043F\u043E\u0440\u0442\u044B TypeScript \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 .js extension."
|
|
8632
|
+
},
|
|
8633
|
+
{
|
|
8634
|
+
category: "overview",
|
|
8635
|
+
subcategory: "project-structure",
|
|
8636
|
+
title: "\u041A\u0430\u0440\u0442\u0430 \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u0439",
|
|
8637
|
+
keywords: ["\u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u0438", "\u0444\u0430\u0439\u043B\u044B", "\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430", "src", "engine", "webui", "telegram", "storage"],
|
|
8638
|
+
body: "src/engine \u2014 \u044F\u0434\u0440\u043E \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F: runtime, presence, behavior-tick, prompt, memory-palace, conflict, agenda, daily-life. src/telegram \u2014 bot/userbot adapters. src/llm \u2014 \u043A\u043B\u0438\u0435\u043D\u0442\u044B \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u043E\u0432. src/storage/md.ts \u2014 \u0444\u0430\u0439\u043B\u043E\u0432\u043E\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043F\u0440\u043E\u0444\u0438\u043B\u0435\u0439. src/webui \u2014 HTTP API, runtime bus, routes. webui/src \u2014 React \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B. src/presets \u2014 stages, llm, communication, mcp."
|
|
8639
|
+
},
|
|
8640
|
+
{
|
|
8641
|
+
category: "overview",
|
|
8642
|
+
subcategory: "commands",
|
|
8643
|
+
title: "\u041A\u043E\u043C\u0430\u043D\u0434\u044B \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430",
|
|
8644
|
+
keywords: ["\u043A\u043E\u043C\u0430\u043D\u0434\u044B", "npm", "build", "typecheck", "dev", "start", "server", "update", "addon"],
|
|
8645
|
+
body: "\u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B: npm install, npm run dev, npm run build, npm run typecheck, npm run start. CLI: npx girl-agent \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 WebUI; --profile \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 \u043F\u0440\u043E\u0444\u0438\u043B\u044C; server --print-config/--config/--headless \u0434\u043B\u044F \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432; update \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442 data-\u043C\u0438\u0433\u0440\u0430\u0446\u0438\u0438; addon init/pack \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0441 .gaa \u0430\u0434\u0434\u043E\u043D\u0430\u043C\u0438."
|
|
8646
|
+
},
|
|
8647
|
+
{
|
|
8648
|
+
category: "storage",
|
|
8649
|
+
subcategory: "data-root",
|
|
8650
|
+
title: "\u0413\u0434\u0435 \u043B\u0435\u0436\u0430\u0442 \u0434\u0430\u043D\u043D\u044B\u0435",
|
|
8651
|
+
keywords: ["data", "GIRL_AGENT_DATA", "\u043F\u0430\u043F\u043A\u0430", "\u043F\u0440\u043E\u0444\u0438\u043B\u0438", "windows", "macos", "linux", "\u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435"],
|
|
8652
|
+
body: "\u041A\u043E\u0440\u0435\u043D\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u0435\u0439 \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u0438\u0437 GIRL_AGENT_DATA, \u0438\u043D\u0430\u0447\u0435 \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u0438\u043A\u0430\u0445 \u044D\u0442\u043E ./data, \u0432 npm/global \u0437\u0430\u043F\u0443\u0441\u043A\u0435 \u2014 XDG data dir, \u043D\u0430 Windows %APPDATA%/girl-agent/data, \u043D\u0430 macOS ~/Library/Application Support/girl-agent/data. \u041A\u0430\u0436\u0434\u044B\u0439 \u043F\u0440\u043E\u0444\u0438\u043B\u044C \u0436\u0438\u0432\u0451\u0442 \u0432 data/<slug>/."
|
|
8653
|
+
},
|
|
8654
|
+
{
|
|
8655
|
+
category: "storage",
|
|
8656
|
+
subcategory: "profile-files",
|
|
8657
|
+
title: "\u0424\u0430\u0439\u043B\u044B \u043F\u0440\u043E\u0444\u0438\u043B\u044F",
|
|
8658
|
+
keywords: ["config.json", "persona.md", "speech.md", "boundaries.md", "communication.md", "relationship.md", "agenda.json"],
|
|
8659
|
+
body: "config.json \u0445\u0440\u0430\u043D\u0438\u0442 ProfileConfig. persona.md \u2014 \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C, speech.md \u2014 \u0440\u0435\u0447\u044C, boundaries.md \u2014 \u0433\u0440\u0430\u043D\u0438\u0446\u044B, communication.md \u2014 \u0441\u0442\u0438\u043B\u044C \u043E\u0431\u0449\u0435\u043D\u0438\u044F. relationship.md \u0445\u0440\u0430\u043D\u0438\u0442 stage \u0438 score. agenda.json \u2014 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043F\u0440\u043E\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0435 \u043F\u0438\u043D\u0433\u0438. conflict.json \u2014 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442 \u0438 coldUntil."
|
|
8660
|
+
},
|
|
8661
|
+
{
|
|
8662
|
+
category: "storage",
|
|
8663
|
+
subcategory: "memory-files",
|
|
8664
|
+
title: "\u0424\u0430\u0439\u043B\u044B \u043F\u0430\u043C\u044F\u0442\u0438",
|
|
8665
|
+
keywords: ["memory", "long-term", "facts", "uncertain", "timeline", "promises", "open-loops"],
|
|
8666
|
+
body: "\u0413\u043B\u0430\u0432\u043D\u044B\u0435 memory-\u0444\u0430\u0439\u043B\u044B: memory/long-term.md, memory/facts.md, memory/uncertain.md, relationship/timeline.md, time/open-loops.md, time/promises.md. \u0415\u0441\u0442\u044C legacy long-term.md. MemoryPage \u0438 assistant \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044E\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439 whitelist \u043F\u0443\u0442\u0435\u0439, \u043F\u043B\u044E\u0441 memory/daily/YYYY-MM-DD.md, memory/episodes/*.md, memory/palace/*."
|
|
8667
|
+
},
|
|
8668
|
+
{
|
|
8669
|
+
category: "storage",
|
|
8670
|
+
subcategory: "logs-and-days",
|
|
8671
|
+
title: "\u041B\u043E\u0433\u0438 \u0438 \u0434\u043D\u0435\u0432\u043D\u044B\u0435 summary",
|
|
8672
|
+
keywords: ["log", "daily", "summary", "session", "\u0434\u043D\u0435\u0432\u043D\u0438\u043A", "\u0434\u0430\u0442\u0430", "05:00"],
|
|
8673
|
+
body: "log/YYYY-MM-DD.md \u2014 \u0441\u0435\u0441\u0441\u0438\u043E\u043D\u043D\u044B\u0435 \u043B\u043E\u0433\u0438. sessionDate \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0435\u043D\u044C \u043F\u043E timezone \u043F\u0440\u043E\u0444\u0438\u043B\u044F; \u0434\u043E 05:00 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u044F\u0442\u0441\u044F \u043A \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u043C\u0443 \u0434\u043D\u044E. memory/daily/YYYY-MM-DD.md \u2014 \u0434\u043D\u0435\u0432\u043D\u044B\u0435 summary \u0434\u043B\u044F \u0434\u043E\u043B\u0433\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 \u0438 \u043F\u043E\u0438\u0441\u043A\u0430 \u043F\u043E \u043F\u0440\u043E\u0448\u043B\u044B\u043C \u0434\u043D\u044F\u043C."
|
|
8674
|
+
},
|
|
8675
|
+
{
|
|
8676
|
+
category: "config",
|
|
8677
|
+
subcategory: "profile-config",
|
|
8678
|
+
title: "ProfileConfig",
|
|
8679
|
+
keywords: ["ProfileConfig", "config", "slug", "name", "age", "nationality", "tz", "mode"],
|
|
8680
|
+
body: "ProfileConfig \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 slug, name, age, nationality RU/UA, timezone, mode bot/userbot, stage, llm, telegram, mcp, ownerId, privacy, sleepFrom/sleepTo, nightWakeChance, ignoreTendency, vibe, communication, personaNotes \u0438 busySchedule. \u041F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 storage \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u0443\u0435\u0442 ownerId, communication \u0438 ignoreTendency."
|
|
8681
|
+
},
|
|
8682
|
+
{
|
|
8683
|
+
category: "config",
|
|
8684
|
+
subcategory: "sleep-and-schedule",
|
|
8685
|
+
title: "\u0421\u043E\u043D \u0438 \u0437\u0430\u043D\u044F\u0442\u043E\u0441\u0442\u044C",
|
|
8686
|
+
keywords: ["sleepFrom", "sleepTo", "nightWakeChance", "busySchedule", "\u0441\u043E\u043D", "\u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435", "\u0437\u0430\u043D\u044F\u0442\u043E\u0441\u0442\u044C"],
|
|
8687
|
+
body: "sleepFrom/sleepTo \u2014 \u0447\u0430\u0441\u044B \u0441\u043D\u0430 0..23, \u043C\u043E\u0433\u0443\u0442 \u043F\u0435\u0440\u0435\u0441\u0435\u043A\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u043E\u0447\u044C. nightWakeChance \u2014 \u0448\u0430\u043D\u0441 \u043F\u0440\u043E\u0441\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u043E\u0447\u044C\u044E \u0431\u0435\u0437 :wake. busySchedule \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 label, days, from/to \u0438 checkAfterMin; daily-life \u0438 presence \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u0435\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u044A\u044F\u0441\u043D\u044F\u0442\u044C \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 \u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430."
|
|
8688
|
+
},
|
|
8689
|
+
{
|
|
8690
|
+
category: "telegram",
|
|
8691
|
+
subcategory: "bot-mode",
|
|
8692
|
+
title: "Bot mode",
|
|
8693
|
+
keywords: ["bot", "grammy", "Bot API", "\u0442\u043E\u043A\u0435\u043D", "message_reaction", "\u0431\u043E\u0442"],
|
|
8694
|
+
body: "bot mode \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 grammY \u0438 telegram.botToken. \u041F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 message \u0438 message_reaction, \u0443\u043C\u0435\u0435\u0442 sendMessage, typing action, setMessageReaction, editMessageText \u0438 sendSticker. \u041F\u0440\u043E\u0449\u0435 \u0432 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0435, \u043D\u043E \u0432\u044B\u0433\u043B\u044F\u0434\u0438\u0442 \u043A\u0430\u043A \u0431\u043E\u0442 \u0438 \u0438\u043C\u0435\u0435\u0442 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F Bot API."
|
|
8695
|
+
},
|
|
8696
|
+
{
|
|
8697
|
+
category: "telegram",
|
|
8698
|
+
subcategory: "userbot-mode",
|
|
8699
|
+
title: "Userbot mode",
|
|
8700
|
+
keywords: ["userbot", "gramjs", "mtproto", "apiId", "apiHash", "sessionString", "\u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0439 \u0430\u043A\u043A\u0430\u0443\u043D\u0442"],
|
|
8701
|
+
body: "userbot mode \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 GramJS/MTProto \u043A\u0430\u043A \u043E\u0431\u044B\u0447\u043D\u044B\u0439 Telegram \u0430\u043A\u043A\u0430\u0443\u043D\u0442. \u041D\u0443\u0436\u043D\u044B apiId/apiHash \u0438 sessionString, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043D\u044B\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u044E. \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 readHistory, typing, reactions, stickers, block/unblock/reportSpam \u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0443 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0445 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 raw updates."
|
|
8702
|
+
},
|
|
8703
|
+
{
|
|
8704
|
+
category: "telegram",
|
|
8705
|
+
subcategory: "wss-and-proxy",
|
|
8706
|
+
title: "WSS \u0438 proxy",
|
|
8707
|
+
keywords: ["wss", "useWSS", "proxy", "socks", "\u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0438", "443"],
|
|
8708
|
+
body: "telegram.useWSS \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E true \u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 WebSocket \u0447\u0435\u0440\u0435\u0437 443 \u0432\u043C\u0435\u0441\u0442\u043E TCP 80 \u2014 \u044D\u0442\u043E \u043F\u043E\u043C\u043E\u0433\u0430\u0435\u0442 \u043F\u0440\u0438 \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0430\u0445 Telegram. \u0414\u043B\u044F userbot \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0434\u0430\u0442\u044C SOCKS proxy \u0432 config \u0438\u043B\u0438 \u0447\u0435\u0440\u0435\u0437 GIRL_AGENT_TG_PROXY."
|
|
8709
|
+
},
|
|
8710
|
+
{
|
|
8711
|
+
category: "telegram",
|
|
8712
|
+
subcategory: "privacy",
|
|
8713
|
+
title: "Privacy \u0438 owner",
|
|
8714
|
+
keywords: ["privacy", "owner", "ownerId", "allow-strangers", "strangers", "\u0447\u0443\u0436\u0438\u0435", "primary"],
|
|
8715
|
+
body: "privacy=owner-only \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E ownerId/primary owner. allow-strangers \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0435 \u043B\u0438\u0447\u043D\u044B\u0435 \u0447\u0430\u0442\u044B, \u043D\u043E \u0441 relationshipScope=acquaintance: \u0431\u0435\u0437 \u043F\u0430\u043C\u044F\u0442\u0438 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u043D\u044F, \u0431\u0435\u0437 \u0440\u043E\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438 \u0441 \u0433\u0440\u0430\u043D\u0438\u0446\u0430\u043C\u0438, \u0435\u0441\u043B\u0438 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 relationship \u0443\u0436\u0435 committed."
|
|
8716
|
+
},
|
|
8717
|
+
{
|
|
8718
|
+
category: "runtime",
|
|
8719
|
+
subcategory: "runtime-bus",
|
|
8720
|
+
title: "RuntimeBus \u0432 WebUI",
|
|
8721
|
+
keywords: ["runtimebus", "runtime", "start", "stop", "pause", "resume", "restart", "logs"],
|
|
8722
|
+
body: "RuntimeBus \u0434\u0435\u0440\u0436\u0438\u0442 Runtime \u043D\u0430 \u043A\u0430\u0436\u0434\u044B\u0439 \u043F\u0440\u043E\u0444\u0438\u043B\u044C, \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F running/paused/stopped/error \u0438 ring-buffer \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0445 500 \u0441\u043E\u0431\u044B\u0442\u0438\u0439. WebUI \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u0433\u043E \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442/\u043E\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u0444\u0438\u043B\u0438, \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 status \u0438 recentLogs, \u0430 WebSocket \u0440\u0430\u0437\u0434\u0430\u0451\u0442 \u0441\u043E\u0431\u044B\u0442\u0438\u044F UI."
|
|
8723
|
+
},
|
|
8724
|
+
{
|
|
8725
|
+
category: "runtime",
|
|
8726
|
+
subcategory: "message-flow",
|
|
8727
|
+
title: "\u041F\u0443\u0442\u044C \u0432\u0445\u043E\u0434\u044F\u0449\u0435\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F",
|
|
8728
|
+
keywords: ["handleIncoming", "incoming", "message flow", "\u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435", "\u043E\u0442\u0432\u0435\u0442"],
|
|
8729
|
+
body: "Telegram adapter \u0441\u043E\u0437\u0434\u0430\u0451\u0442 IncomingMessage. Runtime \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u043F\u0440\u0438\u0432\u0430\u0442\u043D\u043E\u0441\u0442\u044C/owner, media, deletion/reaction, \u0438\u0441\u0442\u043E\u0440\u0438\u044E, presence, conflict, active dialog \u0438 behavior-tick. \u0415\u0441\u043B\u0438 shouldReply=false \u2014 \u043B\u043E\u0433\u0438\u0440\u0443\u0435\u0442 ignored/read. \u0415\u0441\u043B\u0438 reply \u2014 scheduleReply \u0441 delay, \u043F\u043E\u0442\u043E\u043C generateAndSend \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442 prompt, \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442 LLM, \u0441\u0430\u043D\u0438\u0442\u0430\u0439\u0437\u0438\u0442 \u043E\u0442\u0432\u0435\u0442, \u0440\u0435\u0436\u0435\u0442 \u043D\u0430 bubbles \u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442."
|
|
8730
|
+
},
|
|
8731
|
+
{
|
|
8732
|
+
category: "runtime",
|
|
8733
|
+
subcategory: "behavior-tick",
|
|
8734
|
+
title: "Behavior tick",
|
|
8735
|
+
keywords: ["behavior", "intent", "reply", "ignore", "short", "left-on-read", "reaction-only", "delay", "moodDelta"],
|
|
8736
|
+
body: "behavior-tick \u2014 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0439 decision layer. \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 JSON: intent, shouldReply, shouldRead, delaySec, bubbles, typing, reaction, reactionTargetMessageId, ignoreReason \u0438 moodDelta. \u041E\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 stage defaults, score, ignoreTendency, presence, conflict, active dialog \u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F."
|
|
8737
|
+
},
|
|
8738
|
+
{
|
|
8739
|
+
category: "runtime",
|
|
8740
|
+
subcategory: "presence",
|
|
8741
|
+
title: "Presence simulation",
|
|
8742
|
+
keywords: ["presence", "online", "offline", "phone-attached", "burst-checker", "rare-checker", "evening-only", "night"],
|
|
8743
|
+
body: "PresenceProfile \u0434\u0435\u0442\u0435\u0440\u043C\u0438\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E \u0432\u044B\u0431\u0438\u0440\u0430\u0435\u0442 pattern: phone-attached, burst-checker, rare-checker, evening-only \u0438\u043B\u0438 phone-attached-night. \u041E\u043D \u0437\u0430\u0434\u0430\u0451\u0442 checkEveryMin, onlineWindowMin, offlineReplyChance \u0438 nightWakeChance. Communication notifications \u0438 stage \u043C\u043E\u0433\u0443\u0442 \u0443\u0441\u043A\u043E\u0440\u044F\u0442\u044C/\u0437\u0430\u043C\u0435\u0434\u043B\u044F\u0442\u044C \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C."
|
|
8744
|
+
},
|
|
8745
|
+
{
|
|
8746
|
+
category: "runtime",
|
|
8747
|
+
subcategory: "ignore-tendency",
|
|
8748
|
+
title: "ignoreTendency",
|
|
8749
|
+
keywords: ["ignoreTendency", "\u0438\u0433\u043D\u043E\u0440", "\u043C\u043E\u043B\u0447\u0438\u0442", "\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442", "read", "left-on-read"],
|
|
8750
|
+
body: "ignoreTendency 0..100 \u2014 \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u043D\u044B\u0439 \u0432\u0435\u0441, \u0430 \u043D\u0435 \u043F\u0440\u044F\u043C\u043E\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442. 0 \u043F\u043E\u0447\u0442\u0438 \u043D\u0435 \u0438\u0433\u043D\u043E\u0440\u0438\u0442 \u0431\u0435\u0437 \u043F\u0440\u0438\u0447\u0438\u043D\u044B, 35 \u0434\u0435\u0444\u043E\u043B\u0442, 70+ \u0441\u0443\u0445\u0430\u044F \u0438 \u0447\u0430\u0441\u0442\u043E \u043F\u0440\u043E\u043F\u0430\u0434\u0430\u0435\u0442. \u0421\u043E\u043D, busy, \u0441\u0442\u0430\u0434\u0438\u044F, \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442 \u0438 score \u0441\u0438\u043B\u044C\u043D\u0435\u0435. \u041F\u0440\u0438 \u0436\u0430\u043B\u043E\u0431\u0435 '\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442' \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0439 runtime state, recent logs, sleep/busy/conflict/stage/score."
|
|
8751
|
+
},
|
|
8752
|
+
{
|
|
8753
|
+
category: "runtime",
|
|
8754
|
+
subcategory: "active-dialog",
|
|
8755
|
+
title: "\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0434\u0438\u0430\u043B\u043E\u0433",
|
|
8756
|
+
keywords: ["\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0434\u0438\u0430\u043B\u043E\u0433", "activeDialog", "\u0431\u0443\u0440\u0441\u0442", "\u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u043E\u0442\u0432\u0435\u0442", "\u043D\u0435 \u043F\u0440\u043E\u043F\u0430\u0434\u0430\u0435\u0442"],
|
|
8757
|
+
body: "\u0415\u0441\u043B\u0438 \u043E\u043D\u0430 \u0443\u0436\u0435 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u043E\u0442\u0432\u0435\u0442\u0438\u043B\u0430, \u0430 \u043E\u043D \u043D\u0430\u043F\u0438\u0441\u0430\u043B \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u043C\u0438\u043D\u0443\u0442, Runtime \u043F\u043E\u043C\u0435\u0447\u0430\u0435\u0442 activeDialog. Behavior-layer \u0434\u043E\u043B\u0436\u0435\u043D \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443 \u0438 \u043D\u0435 \u0443\u0445\u043E\u0434\u0438\u0442\u044C \u0432 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u044B\u0439 \u0438\u0433\u043D\u043E\u0440 \u0431\u0435\u0437 \u0432\u0435\u0441\u043A\u043E\u0439 \u043F\u0440\u0438\u0447\u0438\u043D\u044B. \u042D\u0442\u043E \u0434\u0435\u043B\u0430\u0435\u0442 \u0434\u0438\u0430\u043B\u043E\u0433 \u043F\u043E\u0445\u043E\u0436\u0438\u043C \u043D\u0430 \u0440\u0435\u0430\u043B\u044C\u043D\u0443\u044E \u043F\u0435\u0440\u0435\u043F\u0438\u0441\u043A\u0443, \u0430 \u043D\u0435 \u043D\u0430 \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u044B\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u044B."
|
|
8758
|
+
},
|
|
8759
|
+
{
|
|
8760
|
+
category: "runtime",
|
|
8761
|
+
subcategory: "bubbles",
|
|
8762
|
+
title: "\u041F\u0443\u0437\u044B\u0440\u0438 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
|
|
8763
|
+
keywords: ["bubbles", "\u043F\u0443\u0437\u044B\u0440\u044C", "split", "---", "\u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F", "\u0434\u0440\u043E\u0431\u0438\u0442\u044C"],
|
|
8764
|
+
body: "LLM \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0435: \u0435\u0441\u043B\u0438 bubbles > 1, \u0440\u0430\u0437\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0441\u0442\u0440\u043E\u043A\u043E\u0439 '---'. smartSplitBubbles \u0438 dedupeBubbles \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044E\u0442 \u043E\u0442\u0432\u0435\u0442 \u0432 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 TG-\u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F. \u041F\u0435\u0440\u0435\u043D\u043E\u0441\u044B \u0441\u0442\u0440\u043E\u043A \u0431\u0435\u0437 '---' \u0437\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u044B, \u043F\u043E\u0442\u043E\u043C\u0443 \u0447\u0442\u043E \u0432 Telegram \u044D\u0442\u043E \u043E\u0434\u043D\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0441\u0442\u043E\u043B\u0431\u0438\u043A\u043E\u043C \u0438 \u043F\u0430\u043B\u0438\u0442 \u0418\u0418."
|
|
8765
|
+
},
|
|
8766
|
+
{
|
|
8767
|
+
category: "runtime",
|
|
8768
|
+
subcategory: "typing-and-delays",
|
|
8769
|
+
title: "Typing \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438",
|
|
8770
|
+
keywords: ["typing", "delay", "\u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0430", "\u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442", "scheduleReply", "sendBubbles"],
|
|
8771
|
+
body: "delaySec \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0438\u0437 behavior-tick \u0438 \u043C\u043E\u0436\u0435\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u0438\u0437-\u0437\u0430 offline/busy. scheduleReply \u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0430\u0439\u043C\u0435\u0440. sendBubbles \u0438\u043C\u0438\u0442\u0438\u0440\u0443\u0435\u0442 typing: \u043F\u0435\u0440\u0435\u0434 \u043F\u0435\u0440\u0432\u044B\u043C \u043F\u0443\u0437\u044B\u0440\u0451\u043C \u043A\u043E\u0440\u043E\u0442\u043A\u0430\u044F \u043F\u0430\u0443\u0437\u0430, \u043C\u0435\u0436\u0434\u0443 \u043F\u0443\u0437\u044B\u0440\u044F\u043C\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u043F\u043E \u0434\u043B\u0438\u043D\u0435 \u0442\u0435\u043A\u0441\u0442\u0430 \u0438 WPM. \u0415\u0441\u043B\u0438 userbot \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D, \u043F\u0435\u0440\u0435\u0434 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u043E\u0439 \u043C\u043E\u0436\u0435\u0442 readHistory."
|
|
8772
|
+
},
|
|
8773
|
+
{
|
|
8774
|
+
category: "runtime",
|
|
8775
|
+
subcategory: "anti-ai",
|
|
8776
|
+
title: "Anti-AI \u0438 \u0441\u0430\u043D\u0438\u0442\u0430\u0439\u0437\u0438\u043D\u0433",
|
|
8777
|
+
keywords: ["anti-ai", "sanitize", "markdown", "jailbreak", "system prompt", "chatgpt", "\u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430"],
|
|
8778
|
+
body: "ANTI_AI_RULES \u0437\u0430\u043F\u0440\u0435\u0449\u0430\u044E\u0442 ChatGPT-\u043F\u043E\u0432\u0430\u0434\u043A\u0438, markdown \u0438 \u043C\u0435\u0442\u0430-\u0444\u0440\u0430\u0437\u044B. security.ts \u0432\u044B\u0447\u0438\u0449\u0430\u0435\u0442 code fences, action leak narration, system/developer labels, CJK \u043C\u0443\u0441\u043E\u0440 \u0438 technical error replies. Jailbreak-\u043F\u043E\u0434\u043E\u0431\u043D\u044B\u0435 \u0434\u043B\u0438\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B \u043E\u0442\u0431\u0440\u0430\u0441\u044B\u0432\u0430\u044E\u0442\u0441\u044F; \u043F\u0440\u0438 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043E\u0448\u0438\u0431\u043A\u0430\u0445 Runtime \u0443\u0445\u043E\u0434\u0438\u0442 \u0432 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0439 fallback/ignored."
|
|
8779
|
+
},
|
|
8780
|
+
{
|
|
8781
|
+
category: "runtime",
|
|
8782
|
+
subcategory: "media",
|
|
8783
|
+
title: "\u041C\u0435\u0434\u0438\u0430",
|
|
8784
|
+
keywords: ["media", "photo", "voice", "video", "video_note", "sticker", "document", "\u0444\u043E\u0442\u043E", "\u0433\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0435"],
|
|
8785
|
+
body: "IncomingMedia \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u0444\u043E\u0442\u043E, \u0432\u0438\u0434\u0435\u043E, \u0433\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0435, \u043A\u0440\u0443\u0436\u043E\u043A, \u0441\u0442\u0438\u043A\u0435\u0440 \u0438\u043B\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442. \u0424\u043E\u0442\u043E \u0441 base64 \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044F LLM \u043A\u0430\u043A image part, \u0435\u0441\u043B\u0438 \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u041D\u0430 \u0433\u043E\u043B\u043E\u0441\u043E\u0432\u044B\u0435 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043E\u0432\u043A\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u043C. \u041D\u0430 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0435 \u043F\u0440\u043E\u0441\u044C\u0431\u044B \u0444\u043E\u0442\u043E/\u0432\u0438\u0434\u0435\u043E/voice Runtime \u0447\u0430\u0449\u0435 \u0434\u0430\u0451\u0442 \u043E\u0442\u043A\u0430\u0437 \u0432\u0440\u043E\u0434\u0435 '\u043D\u0435 \u0445\u043E\u0447\u0443 \u0444\u043E\u0442\u043A\u0430\u0442\u044C\u0441\u044F \u0449\u0430'."
|
|
8786
|
+
},
|
|
8787
|
+
{
|
|
8788
|
+
category: "runtime",
|
|
8789
|
+
subcategory: "deleted-messages",
|
|
8790
|
+
title: "\u0423\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F",
|
|
8791
|
+
keywords: ["\u0443\u0434\u0430\u043B\u0438\u043B", "deleted", "delete", "saw-and-read", "saw-not-read", "missed"],
|
|
8792
|
+
body: "deletion-handler \u043A\u043B\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435: saw-and-read \u2014 \u043E\u043D\u0430 \u0443\u0436\u0435 \u043F\u0440\u043E\u0447\u043B\u0430 \u0438 \u043C\u043E\u0436\u0435\u0442 \u0441\u043A\u0430\u0437\u0430\u0442\u044C '\u043F\u043E\u0437\u0434\u043D\u043E, \u044F \u0432\u0438\u0434\u0435\u043B\u0430'; saw-not-read \u2014 \u0432\u0438\u0434\u0435\u043B\u0430 \u0444\u0430\u043A\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F, \u043D\u043E \u043D\u0435 \u043F\u0440\u043E\u0447\u043B\u0430 \u0438 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C; missed \u2014 \u043D\u0435 \u0437\u0430\u043C\u0435\u0442\u0438\u043B\u0430 \u0438 \u043C\u043E\u043B\u0447\u0438\u0442. Userbot \u043A\u044D\u0448\u0438\u0440\u0443\u0435\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u043F\u043E raw update."
|
|
8793
|
+
},
|
|
8794
|
+
{
|
|
8795
|
+
category: "runtime",
|
|
8796
|
+
subcategory: "emoji-reactions",
|
|
8797
|
+
title: "\u0420\u0435\u0430\u043A\u0446\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F",
|
|
8798
|
+
keywords: ["emoji", "reaction", "\u0440\u0435\u0430\u043A\u0446\u0438\u044F", "\u0442\u043E\u043A\u0441\u0438\u0447\u043D\u0430\u044F", "positive", "react-back", "silent-mood"],
|
|
8799
|
+
body: "emoji-reaction-handler \u0434\u0435\u043B\u0438\u0442 \u0440\u0435\u0430\u043A\u0446\u0438\u0438 \u043D\u0430 toxic, positive, funny, sad, neutral. \u0422\u043E\u043A\u0441\u0438\u0447\u043D\u044B\u0435 \u044D\u043C\u043E\u0434\u0437\u0438 \u043D\u0430 \u0435\u0451 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431\u044B\u0447\u043D\u043E \u043C\u043E\u043B\u0447\u0430 \u0443\u0445\u0443\u0434\u0448\u0430\u044E\u0442 mood; \u043D\u043E \u0435\u0441\u043B\u0438 \u044D\u043C\u043E\u0434\u0437\u0438 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0441\u044F \u043A \u0432\u043D\u0435\u0448\u043D\u0435\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438\u0437 \u0435\u0451 \u0442\u0435\u043A\u0441\u0442\u0430, annoyance \u043D\u0435 \u0440\u0430\u0441\u0442\u0451\u0442. Positive \u0438\u043D\u043E\u0433\u0434\u0430 react-back/\u043A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0442\u0435\u043A\u0441\u0442, \u043D\u043E \u0447\u0430\u0449\u0435 \u043C\u043E\u043B\u0447\u0430. \u0421\u043D\u044F\u0442\u0438\u0435 \u0440\u0435\u0430\u043A\u0446\u0438\u0438 \u043E\u0431\u044B\u0447\u043D\u043E \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F."
|
|
8800
|
+
},
|
|
8801
|
+
{
|
|
8802
|
+
category: "runtime",
|
|
8803
|
+
subcategory: "typos",
|
|
8804
|
+
title: "\u0420\u0435\u0430\u043B\u0438\u0441\u0442\u0438\u0447\u043D\u044B\u0435 \u043E\u043F\u0435\u0447\u0430\u0442\u043A\u0438",
|
|
8805
|
+
keywords: ["typos", "\u043E\u043F\u0435\u0447\u0430\u0442\u043A\u0438", "\u043A\u043B\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430", "qwerty", "\u0439\u0446\u0443\u043A\u0435\u043D", "\u043E\u0448\u0438\u0431\u043A\u0438"],
|
|
8806
|
+
body: "typos.ts \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u043F\u0435\u0447\u0430\u0442\u043A\u0438 \u043F\u043E\u0441\u043B\u0435 LLM, \u0447\u0442\u043E\u0431\u044B \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043B\u043E\u0442\u043D\u043E\u0441\u0442\u044C. \u0422\u0438\u043F\u044B: \u0441\u043E\u0441\u0435\u0434\u043D\u044F\u044F \u043A\u043B\u0430\u0432\u0438\u0448\u0430, \u043F\u0440\u043E\u043F\u0443\u0441\u043A, \u0434\u0443\u0431\u043B\u044C, \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0445 \u0431\u0443\u043A\u0432, \u0440\u0435\u0434\u043A\u0430\u044F \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430\u044F \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0430 RU/EN. \u041D\u0435 \u043B\u043E\u043C\u0430\u0435\u0442 \u043A\u043E\u0440\u043E\u0442\u043A\u0438\u0435 \u0441\u043B\u043E\u0432\u0430, \u0441\u0441\u044B\u043B\u043A\u0438, \u0441\u043C\u0430\u0439\u043B\u044B \u0438 \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u044E. \u0418\u043D\u0442\u0435\u043D\u0441\u0438\u0432\u043D\u043E\u0441\u0442\u044C \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 communication messageStyle \u0438 vibe."
|
|
8807
|
+
},
|
|
8808
|
+
{
|
|
8809
|
+
category: "relationship",
|
|
8810
|
+
subcategory: "stages",
|
|
8811
|
+
title: "\u0421\u0442\u0430\u0434\u0438\u0438 \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0439",
|
|
8812
|
+
keywords: ["stage", "\u0441\u0442\u0430\u0434\u0438\u044F", "\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044F", "\u043C\u0435\u0442", "cold", "warming", "dating", "long-term", "dumped"],
|
|
8813
|
+
body: "\u0421\u0442\u0430\u0434\u0438\u044F \u0437\u0430\u0434\u0430\u0451\u0442 \u0431\u043B\u0438\u0437\u043E\u0441\u0442\u044C, \u0442\u043E\u043D, \u0448\u0430\u043D\u0441 \u0438\u0433\u043D\u043E\u0440\u0430 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438. \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u043F\u043E\u0440\u044F\u0434\u043E\u043A: met-irl-got-tg \u2192 tg-given-cold \u2192 tg-given-warming \u2192 convinced \u2192 first-date-done \u2192 dating-early \u2192 dating-stable \u2192 long-term. dumped \u2014 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u0430\u044F \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u0430\u044F \u0441\u0442\u0430\u0434\u0438\u044F \u0441 \u043F\u043E\u043B\u043D\u044B\u043C \u0438\u0433\u043D\u043E\u0440\u043E\u043C."
|
|
8814
|
+
},
|
|
8815
|
+
{
|
|
8816
|
+
category: "relationship",
|
|
8817
|
+
subcategory: "score",
|
|
8818
|
+
title: "Score \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0439",
|
|
8819
|
+
keywords: ["score", "interest", "trust", "attraction", "annoyance", "cringe", "\u043C\u0435\u0442\u0440\u0438\u043A\u0438"],
|
|
8820
|
+
body: "RelationshipScore: interest \u2014 \u0438\u043D\u0442\u0435\u0440\u0435\u0441, trust \u2014 \u0434\u043E\u0432\u0435\u0440\u0438\u0435, attraction \u2014 \u0440\u043E\u043C\u0430\u043D\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435/\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u043F\u0440\u0438\u0442\u044F\u0436\u0435\u043D\u0438\u0435, annoyance \u2014 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043D\u0438\u0435, cringe \u2014 \u043D\u0430\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043E\u043D \u043A\u0440\u0438\u043D\u0436\u0443\u0435\u0442/\u0434\u0430\u0432\u0438\u0442. Score \u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437 moodDelta \u0438 reflection, \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 conflict, stage transitions, stressLoad \u0433\u043E\u0440\u043C\u043E\u043D\u043E\u0432, ignore \u0438 \u0442\u043E\u043D."
|
|
8821
|
+
},
|
|
8822
|
+
{
|
|
8823
|
+
category: "relationship",
|
|
8824
|
+
subcategory: "stage-transitions",
|
|
8825
|
+
title: "\u0410\u0432\u0442\u043E\u0441\u043C\u0435\u043D\u0430 \u0441\u0442\u0430\u0434\u0438\u0439",
|
|
8826
|
+
keywords: ["stage transition", "\u0430\u0432\u0442\u043E\u0441\u043C\u0435\u043D\u0430", "\u043F\u043E\u0432\u044B\u0441\u0438\u0442\u044C", "\u043F\u043E\u043D\u0438\u0437\u0438\u0442\u044C", "\u0440\u0435\u0433\u0440\u0435\u0441\u0441", "upgrade", "downgrade"],
|
|
8827
|
+
body: "decideStageTransition \u043D\u0435 \u0440\u0430\u043D\u0434\u043E\u043C\u043D\u044B\u0439: \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 downgrade, \u043F\u043E\u0442\u043E\u043C upgrade. \u0414\u043B\u044F upgrade \u043D\u0443\u0436\u043D\u043E \u043C\u0438\u043D\u0438\u043C\u0443\u043C 6 \u0435\u0451 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u0432 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438, \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0438\u0435 score \u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430. Downgrade \u0441\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u0438 \u0432\u044B\u0441\u043E\u043A\u043E\u043C annoyance, \u043D\u0438\u0437\u043A\u0438\u0445 interest/trust \u0438\u043B\u0438 \u0431\u043E\u043B\u044C\u0448\u043E\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0433\u043D\u043E\u0440\u043E\u0432 \u043D\u0430 \u0442\u0451\u043F\u043B\u043E\u0439 \u0441\u0442\u0430\u0434\u0438\u0438. dumped \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043D\u0435 \u043F\u043E\u0432\u044B\u0448\u0430\u0435\u0442\u0441\u044F."
|
|
8828
|
+
},
|
|
8829
|
+
{
|
|
8830
|
+
category: "relationship",
|
|
8831
|
+
subcategory: "dumped",
|
|
8832
|
+
title: "dumped",
|
|
8833
|
+
keywords: ["dumped", "\u043E\u0442\u0448\u0438\u043B\u0430", "\u0440\u0430\u0437\u0440\u044B\u0432", "\u0441\u0431\u0440\u043E\u0441", "reset", "\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442"],
|
|
8834
|
+
body: "dumped \u2014 \u0441\u043B\u0443\u0436\u0435\u0431\u043D\u0430\u044F \u0441\u0442\u0430\u0434\u0438\u044F '\u043E\u0442\u0448\u0438\u043B\u0430': ignoreChance=1.0 \u0438 \u043E\u0433\u0440\u043E\u043C\u043D\u044B\u0435 delays. Runtime \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C dumped \u043F\u0440\u0438 annoyance > 80 \u0438 interest < -30. \u0412\u044B\u0445\u043E\u0434 \u2014 :reset \u0438\u043B\u0438 \u0440\u0443\u0447\u043D\u043E\u0439 set_stage. reset \u0447\u0438\u0441\u0442\u0438\u0442 score, long-term memory, conflict \u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0437 dumped \u0432 tg-given-cold."
|
|
8835
|
+
},
|
|
8836
|
+
{
|
|
8837
|
+
category: "relationship",
|
|
8838
|
+
subcategory: "timeline",
|
|
8839
|
+
title: "relationship/timeline.md",
|
|
8840
|
+
keywords: ["timeline", "\u0438\u0441\u0442\u043E\u0440\u0438\u044F \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0439", "relationship", "\u0441\u0442\u0430\u0434\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0430\u0441\u044C"],
|
|
8841
|
+
body: "maybeAdvanceRelationshipTimeline \u043F\u0440\u0438 \u0441\u043C\u0435\u043D\u0435 \u0441\u0442\u0430\u0434\u0438\u0438 \u043C\u0438\u0433\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0443\u044E \u043F\u0430\u043C\u044F\u0442\u044C \u0432 Memory Palace \u0438 \u043F\u0438\u0448\u0435\u0442 \u0432 relationship/timeline.md \u0441\u0442\u0440\u043E\u043A\u0443 \u0432\u0438\u0434\u0430 '\u0441\u0442\u0430\u0434\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0430\u0441\u044C previous \u2192 next'. \u042D\u0442\u043E \u0432\u0430\u0436\u043D\u043E \u0434\u043B\u044F \u043E\u0442\u0432\u0435\u0442\u0430 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0430 \u043E \u0442\u043E\u043C, \u043A\u0430\u043A \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043B\u0438\u0441\u044C \u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044F."
|
|
8842
|
+
},
|
|
8843
|
+
{
|
|
8844
|
+
category: "conflict",
|
|
8845
|
+
subcategory: "levels",
|
|
8846
|
+
title: "\u0423\u0440\u043E\u0432\u043D\u0438 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430",
|
|
8847
|
+
keywords: ["conflict", "\u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442", "coldUntil", "\u043E\u0431\u0438\u0434\u0430", "level", "\u043C\u043E\u043B\u0447\u0438\u0442"],
|
|
8848
|
+
body: "conflict.json \u0445\u0440\u0430\u043D\u0438\u0442 level 0..4, reason, since, coldUntil \u0438 history. level 1 \u2014 \u043B\u0451\u0433\u043A\u0430\u044F \u043E\u0431\u0438\u0434\u0430 \u043D\u0430 \u0447\u0430\u0441, 2 \u2014 \u043E\u0431\u0438\u0436\u0435\u043D\u0430 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0447\u0430\u0441\u043E\u0432/\u0441\u0443\u0442\u043A\u0438, 3 \u2014 \u0441\u0435\u0440\u044C\u0451\u0437\u043D\u044B\u0439 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442 \u043D\u0430 \u0434\u043D\u0438, 4 \u2014 \u043D\u0430 \u0433\u0440\u0430\u043D\u0438 \u0440\u0430\u0437\u0440\u044B\u0432\u0430. \u041F\u043E\u043A\u0430 coldUntil \u0430\u043A\u0442\u0438\u0432\u0435\u043D, behavior \u043F\u043E\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 ignore \u0438\u043B\u0438 \u0441\u0443\u0445\u043E\u0439 short."
|
|
8849
|
+
},
|
|
8850
|
+
{
|
|
8851
|
+
category: "conflict",
|
|
8852
|
+
subcategory: "escalation",
|
|
8853
|
+
title: "\u042D\u0441\u043A\u0430\u043B\u0430\u0446\u0438\u044F \u0438 \u043F\u0440\u0438\u043C\u0438\u0440\u0435\u043D\u0438\u0435",
|
|
8854
|
+
keywords: ["escalate", "soften", "annoyance", "cringe", "interestDrop", "\u043F\u043E\u043C\u0438\u0440\u0438\u0442\u044C\u0441\u044F"],
|
|
8855
|
+
body: "escalateFromMood \u0441\u043C\u043E\u0442\u0440\u0438\u0442 \u043D\u0430 delta annoyance/cringe/interestDrop \u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 score. trigger >= 8 \u0434\u0430\u0451\u0442 \u043B\u0451\u0433\u043A\u0443\u044E \u043E\u0431\u0438\u0434\u0443, >=15 \u2014 \u0441\u0435\u0440\u044C\u0451\u0437\u043D\u0435\u0435, >=25 \u0438\u043B\u0438 annoyance >70 \u2014 level 3. annoyance >85 + cringe >70 + interest < -30 \u0432\u0435\u0434\u0451\u0442 \u043A level 4. softenFromMood \u0441\u043D\u0438\u0436\u0430\u0435\u0442 level, \u0435\u0441\u043B\u0438 positive delta attraction+trust+interest >=12."
|
|
8856
|
+
},
|
|
8857
|
+
{
|
|
8858
|
+
category: "memory",
|
|
8859
|
+
subcategory: "memory-palace",
|
|
8860
|
+
title: "Memory Palace",
|
|
8861
|
+
keywords: ["memory palace", "mempalace", "palace", "hall", "drawer", "\u043F\u0430\u043C\u044F\u0442\u044C", "\u0434\u0432\u043E\u0440\u0435\u0446"],
|
|
8862
|
+
body: "Memory Palace \u2014 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u043D\u0430\u044F \u043F\u0430\u043C\u044F\u0442\u044C \u0432 memory/palace. \u041E\u043D\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043D\u0430 halls \u0438 drawers, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0436\u043D\u043E \u0438\u0441\u043A\u0430\u0442\u044C \u043F\u043E \u0432\u0445\u043E\u0434\u044F\u0449\u0435\u043C\u0443 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044E \u0438 \u043F\u043E\u0434\u043C\u0435\u0448\u0438\u0432\u0430\u0442\u044C \u0432 prompt. \u042D\u0442\u043E \u043D\u0435 \u0432\u0435\u043A\u0442\u043E\u0440\u043D\u0430\u044F \u0411\u0414: \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u043E\u0432\u043E\u0435, \u0432\u044B\u0431\u043E\u0440 \u0440\u0435\u043B\u0435\u0432\u0430\u043D\u0442\u043D\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430 \u043B\u0451\u0433\u043A\u0438\u0439 \u0438 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439."
|
|
8863
|
+
},
|
|
8864
|
+
{
|
|
8865
|
+
category: "memory",
|
|
8866
|
+
subcategory: "halls",
|
|
8867
|
+
title: "\u0417\u0430\u043B\u044B Memory Palace",
|
|
8868
|
+
keywords: ["hall_facts", "hall_events", "hall_discoveries", "hall_preferences", "hall_advice", "hall_promises", "hall_open_loops", "hall_feelings", "hall_uncertain"],
|
|
8869
|
+
body: "\u0417\u0430\u043B\u044B: hall_facts \u2014 \u0444\u0430\u043A\u0442\u044B; hall_events \u2014 \u0441\u043E\u0431\u044B\u0442\u0438\u044F; hall_discoveries \u2014 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u043E \u043D\u0451\u043C/\u043D\u0435\u0439; hall_preferences \u2014 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0442\u0435\u043D\u0438\u044F; hall_advice \u2014 \u0441\u043E\u0432\u0435\u0442\u044B; hall_promises \u2014 \u043E\u0431\u0435\u0449\u0430\u043D\u0438\u044F; hall_open_loops \u2014 \u043D\u0435\u0437\u0430\u043A\u0440\u044B\u0442\u044B\u0435 \u0442\u0435\u043C\u044B; hall_feelings \u2014 \u0447\u0443\u0432\u0441\u0442\u0432\u0430; hall_uncertain \u2014 \u0441\u043E\u043C\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435/\u043D\u0435\u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043D\u043D\u043E\u0435."
|
|
8870
|
+
},
|
|
8871
|
+
{
|
|
8872
|
+
category: "memory",
|
|
8873
|
+
subcategory: "recording",
|
|
8874
|
+
title: "\u0417\u0430\u043F\u0438\u0441\u044C \u043F\u0430\u043C\u044F\u0442\u0438",
|
|
8875
|
+
keywords: ["recordInteractionMemory", "maybeReflect", "memory", "reflect", "interaction"],
|
|
8876
|
+
body: "\u041F\u043E\u0441\u043B\u0435 primary interaction Runtime \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442 recordInteractionMemory. \u041A\u0430\u0436\u0434\u044B\u0435 ~6 turns maybeReflect \u043C\u043E\u0436\u0435\u0442 \u0434\u043E\u043F\u0438\u0441\u0430\u0442\u044C \u043E\u0441\u043C\u044B\u0441\u043B\u0435\u043D\u0438\u0435 \u0432 \u0434\u043E\u043B\u0433\u0443\u044E \u043F\u0430\u043C\u044F\u0442\u044C \u0441 \u0443\u0447\u0451\u0442\u043E\u043C conflict. \u0414\u043B\u044F agenda \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442\u0441\u044F \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F \u0438\u0437 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439; \u0434\u043B\u044F daily summaries \u2014 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u0435 stale/current sessions."
|
|
8877
|
+
},
|
|
8878
|
+
{
|
|
8879
|
+
category: "memory",
|
|
8880
|
+
subcategory: "retrieval",
|
|
8881
|
+
title: "\u0414\u043E\u0441\u0442\u0430\u0432\u0430\u043D\u0438\u0435 \u043F\u0430\u043C\u044F\u0442\u0438 \u0432 prompt",
|
|
8882
|
+
keywords: ["retrieval", "searchDailySummaries", "loadMemoryPalaceContext", "recall", "prompt"],
|
|
8883
|
+
body: "buildSystemPrompt \u0447\u0438\u0442\u0430\u0435\u0442 persona/speech/communication/relationship, legacy memory \u0438 \u043F\u0440\u0438 incoming \u0438\u0449\u0435\u0442 daily summaries. Runtime \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0451\u0442 loadRealismContext=loadMemoryPalaceContext, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0440\u0435\u043B\u0435\u0432\u0430\u043D\u0442\u043D\u044B\u0435 palace drawers. \u041C\u043E\u0434\u0435\u043B\u044C \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u043C\u044F\u0442\u044C \u043A\u0430\u043A \u0444\u043E\u043D, \u043D\u0435 \u0446\u0438\u0442\u0438\u0440\u0443\u044F '\u0432 \u043B\u043E\u0433\u0435 \u043D\u0430\u043F\u0438\u0441\u0430\u043D\u043E'."
|
|
8884
|
+
},
|
|
8885
|
+
{
|
|
8886
|
+
category: "life",
|
|
8887
|
+
subcategory: "daily-life",
|
|
8888
|
+
title: "Daily-life",
|
|
8889
|
+
keywords: ["daily-life", "\u0436\u0438\u0437\u043D\u044C", "\u0434\u0435\u043D\u044C", "blocks", "events", "wants", "weather", "\u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435"],
|
|
8890
|
+
body: "daily-life \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043E\u0434\u0438\u043D \u0434\u0435\u043D\u044C \u0436\u0438\u0437\u043D\u0438: weather, vibe, blocks \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u0438, events \u0438 wants. \u041A\u044D\u0448 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0432 data/<slug>/daily-life/YYYY-MM-DD.md. \u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 persona, \u0432\u043E\u0437\u0440\u0430\u0441\u0442, stage, timezone, sleep \u0438 busySchedule, \u0430 conflict \u0434\u0435\u043B\u0430\u0435\u0442 \u0434\u0435\u043D\u044C \u0442\u044F\u0436\u0435\u043B\u0435\u0435."
|
|
8891
|
+
},
|
|
8892
|
+
{
|
|
8893
|
+
category: "life",
|
|
8894
|
+
subcategory: "age-context",
|
|
8895
|
+
title: "\u0412\u043E\u0437\u0440\u0430\u0441\u0442 \u0438 \u0443\u0447\u0451\u0431\u0430",
|
|
8896
|
+
keywords: ["\u0432\u043E\u0437\u0440\u0430\u0441\u0442", "\u0448\u043A\u043E\u043B\u0430", "\u0443\u043D\u0438\u0432\u0435\u0440", "\u043A\u043E\u043B\u043B\u0435\u0434\u0436", "\u043F\u0430\u0440\u044B", "\u0443\u0440\u043E\u043A\u0438"],
|
|
8897
|
+
body: "prompt.ts \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0435\u0442 \u0443\u0447\u0435\u0431\u043D\u044B\u0439 \u044F\u0437\u044B\u043A. \u0414\u043E 17 \u043B\u0435\u0442 \u043E\u043D\u0430 \u0448\u043A\u043E\u043B\u044C\u043D\u0438\u0446\u0430: '\u0443\u0440\u043E\u043A', '\u0448\u043A\u043E\u043B\u0430', '\u043F\u0435\u0440\u0435\u043C\u0435\u043D\u0430', '\u0434\u043E\u043C\u0430\u0448\u043A\u0430', \u043D\u0435 '\u043F\u0430\u0440\u044B/\u0443\u043D\u0438\u0432\u0435\u0440/\u043B\u0435\u043A\u0446\u0438\u044F'. \u0412 17-22 \u043C\u043E\u0436\u043D\u043E \u043A\u043E\u043B\u043B\u0435\u0434\u0436/\u0443\u043D\u0438\u0432\u0435\u0440, \u0435\u0441\u043B\u0438 persona \u044D\u0442\u043E \u0434\u043E\u043F\u0443\u0441\u043A\u0430\u0435\u0442. Daily-life \u0442\u043E\u0436\u0435 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0435\u0442 \u044D\u0442\u043E \u0432 blocks."
|
|
8898
|
+
},
|
|
8899
|
+
{
|
|
8900
|
+
category: "life",
|
|
8901
|
+
subcategory: "agenda",
|
|
8902
|
+
title: "\u041F\u0440\u043E\u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F agenda",
|
|
8903
|
+
keywords: ["agenda", "\u043F\u0440\u043E\u0430\u043A\u0442\u0438\u0432", "\u0441\u0430\u043C\u0430 \u043F\u0438\u0448\u0435\u0442", "\u043F\u0438\u043D\u0433", "\u043D\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C", "\u0441\u043E\u0431\u044B\u0442\u0438\u0435"],
|
|
8904
|
+
body: "Agenda engine \u0434\u0435\u043B\u0430\u0435\u0442 mental notes \u043E \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u043F\u043E\u0432\u043E\u0434\u0430\u0445 \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0441\u0430\u043C\u043E\u0439. extractAgendaUpdates \u0441\u043E\u0437\u0434\u0430\u0451\u0442/update/cancel items \u043F\u043E\u0441\u043B\u0435 \u0435\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439; tickAgenda \u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E \u0440\u0430\u0437 \u0432 \u043C\u0438\u043D\u0443\u0442\u0443 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 due items; handleResponseToProactive \u043F\u043E\u043D\u0438\u043C\u0430\u0435\u0442 \u0435\u0433\u043E \u0440\u0435\u0430\u043A\u0446\u0438\u044E. \u041D\u0430 cold \u0441\u0442\u0430\u0434\u0438\u044F\u0445 agenda \u043F\u043E\u0447\u0442\u0438 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u0451\u0442."
|
|
8905
|
+
},
|
|
8906
|
+
{
|
|
8907
|
+
category: "life",
|
|
8908
|
+
subcategory: "autonomous-agenda",
|
|
8909
|
+
title: "\u0410\u0432\u0442\u043E\u043D\u043E\u043C\u043D\u044B\u0435 \u043F\u0438\u043D\u0433\u0438",
|
|
8910
|
+
keywords: ["autonomous", "\u0441\u0430\u043C\u043E\u0441\u0442\u043E\u044F\u0442\u0435\u043B\u044C\u043D\u043E", "\u043F\u0435\u0440\u0432\u043E\u0439", "initiative", "lifeSharing", "\u043F\u0438\u0448\u0435\u0442 \u0441\u0430\u043C\u0430"],
|
|
8911
|
+
body: "ensureAutonomousAgenda \u043C\u043E\u0436\u0435\u0442 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0441\u0430\u043C\u043E\u0441\u0442\u043E\u044F\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u043E\u0432\u043E\u0434\u044B \u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C, \u043D\u0435 \u043F\u0440\u0438\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u043A \u0435\u0433\u043E \u044F\u0432\u043D\u043E\u043C\u0443 \u0431\u0443\u0434\u0443\u0449\u0435\u043C\u0443 \u0441\u043E\u0431\u044B\u0442\u0438\u044E. \u042D\u0442\u043E \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043E\u0442 stage, communication initiative/lifeSharing, conflict \u0438 \u0434\u043D\u0435\u0432\u043D\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430. Runtime \u043D\u0435 \u0441\u043F\u0430\u043C\u0438\u0442: \u043F\u043E \u043E\u0434\u043D\u043E\u043C\u0443 due item \u0437\u0430 \u0442\u0438\u043A \u0438 \u043D\u0435 \u043B\u0435\u0437\u0435\u0442, \u0435\u0441\u043B\u0438 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u0431\u044B\u043B\u0430 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C."
|
|
8912
|
+
},
|
|
8913
|
+
{
|
|
8914
|
+
category: "persona",
|
|
8915
|
+
subcategory: "prompt-files",
|
|
8916
|
+
title: "persona/speech/boundaries/communication",
|
|
8917
|
+
keywords: ["persona", "speech", "boundaries", "communication.md", "\u043F\u0435\u0440\u0441\u043E\u043D\u0430", "\u0440\u0435\u0447\u044C", "\u0433\u0440\u0430\u043D\u0438\u0446\u044B"],
|
|
8918
|
+
body: "persona.md \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C \u0438 \u0431\u0438\u043E\u0433\u0440\u0430\u0444\u0438\u044E, speech.md \u2014 \u043C\u0430\u043D\u0435\u0440\u0443 \u0440\u0435\u0447\u0438 \u0438 \u0441\u043B\u043E\u0432\u0435\u0447\u043A\u0438, boundaries.md \u2014 \u0437\u0430\u043F\u0440\u0435\u0442\u044B \u0438 \u043B\u0438\u0447\u043D\u044B\u0435 \u0433\u0440\u0430\u043D\u0438\u0446\u044B, communication.md \u2014 \u0441\u0442\u0438\u043B\u044C \u043A\u043E\u043C\u043C\u0443\u043D\u0438\u043A\u0430\u0446\u0438\u0438. buildSystemPrompt \u0432\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 \u044D\u0442\u0438 \u0444\u0430\u0439\u043B\u044B \u043A\u0430\u043A \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0438\u0445 \u043B\u0443\u0447\u0448\u0435 \u0447\u0435\u0440\u0435\u0437 MemoryPage \u0438\u043B\u0438 assistant tools, \u0430 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u043A\u043E\u0434."
|
|
8919
|
+
},
|
|
8920
|
+
{
|
|
8921
|
+
category: "persona",
|
|
8922
|
+
subcategory: "generation",
|
|
8923
|
+
title: "\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F \u043F\u0435\u0440\u0441\u043E\u043D\u044B",
|
|
8924
|
+
keywords: ["generatePersonaPack", "generate_persona", "\u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u0435\u0440\u0441\u043E\u043D\u0443", "setup", "personaNotes"],
|
|
8925
|
+
body: "generatePersonaPack \u0447\u0435\u0440\u0435\u0437 LLM \u0441\u043E\u0437\u0434\u0430\u0451\u0442 persona.md, speech.md, boundaries.md \u0438 communication.md. Assistant tool generate_persona \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 name/age/nationality/personaNotes. SetupFlow \u0438 CLI \u0442\u043E\u0436\u0435 \u043C\u043E\u0433\u0443\u0442 \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0440\u0442\u043E\u0432\u044B\u0439 \u043F\u0440\u043E\u0444\u0438\u043B\u044C."
|
|
8926
|
+
},
|
|
8927
|
+
{
|
|
8928
|
+
category: "communication",
|
|
8929
|
+
subcategory: "fields",
|
|
8930
|
+
title: "CommunicationProfile",
|
|
8931
|
+
keywords: ["communication", "notifications", "messageStyle", "initiative", "lifeSharing"],
|
|
8932
|
+
body: "CommunicationProfile \u0441\u043E\u0441\u0442\u043E\u0438\u0442 \u0438\u0437 notifications muted/normal/priority, messageStyle one-liners/balanced/bursty/longform, initiative low/medium/high, lifeSharing low/medium/high. \u041E\u043D \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 presence, agenda, typo density, prompt \u0438 \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0432 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u043C \u0434\u0438\u0430\u043B\u043E\u0433\u0435."
|
|
8933
|
+
},
|
|
8934
|
+
{
|
|
8935
|
+
category: "communication",
|
|
8936
|
+
subcategory: "legacy-vibe",
|
|
8937
|
+
title: "legacy vibe",
|
|
8938
|
+
keywords: ["vibe", "short", "warm", "legacy", "deriveLegacyVibe"],
|
|
8939
|
+
body: "\u0421\u0442\u0430\u0440\u043E\u0435 \u043F\u043E\u043B\u0435 vibe \u043E\u0441\u0442\u0430\u0451\u0442\u0441\u044F \u0434\u043B\u044F \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u0438. vibe=warm \u043C\u0430\u043F\u0438\u0442\u0441\u044F \u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E \u0432 cute/\u0442\u0451\u043F\u043B\u044B\u0439 \u0441\u0442\u0438\u043B\u044C, vibe=short \u2014 \u0432 alt/one-liners/low initiative. \u041D\u043E\u0432\u0430\u044F \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u2014 communication, \u0430 vibe \u0442\u043E\u043B\u044C\u043A\u043E legacy."
|
|
8940
|
+
},
|
|
8941
|
+
{
|
|
8942
|
+
category: "llm",
|
|
8943
|
+
subcategory: "client",
|
|
8944
|
+
title: "LLM client",
|
|
8945
|
+
keywords: ["llm", "openai", "anthropic", "client", "timeout", "retries", "json"],
|
|
8946
|
+
body: "src/llm/index.ts \u0434\u0430\u0451\u0442 \u0435\u0434\u0438\u043D\u044B\u0439 LLMClient.chat \u0434\u043B\u044F OpenAI-compatible \u0438 Anthropic. \u0415\u0441\u0442\u044C timeout 120s, maxRetries=1 \u0438 \u0441\u0435\u0440\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0432\u044B\u0437\u043E\u0432\u043E\u0432 \u0447\u0435\u0440\u0435\u0437 \u043E\u0447\u0435\u0440\u0435\u0434\u044C, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043F\u0430\u0440\u0430\u043B\u043B\u0435\u043B\u044C\u043D\u044B\u043C\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0430\u043C\u0438. \u041E\u043F\u0446\u0438\u0438: temperature, maxTokens, json/jsonSchema."
|
|
8947
|
+
},
|
|
8948
|
+
{
|
|
8949
|
+
category: "llm",
|
|
8950
|
+
subcategory: "providers",
|
|
8951
|
+
title: "\u041F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u044B LLM",
|
|
8952
|
+
keywords: ["provider", "preset", "claudehub", "openrouter", "groq", "deepseek", "mistral", "gemini", "ollama"],
|
|
8953
|
+
body: "LLM presets \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 claudehub, openai, lmstudio, ollama, anthropic, openrouter, groq, deepseek, mistral, google, xai, together, fireworks, perplexity, cerebras \u0438 \u0434\u0440. \u0423 \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0435\u0441\u0442\u044C proto openai/anthropic, baseURL, defaultModel, models, apiKeyRequired \u0438 hints. GirlAI \u0441\u0435\u0439\u0447\u0430\u0441 disabled."
|
|
8954
|
+
},
|
|
8955
|
+
{
|
|
8956
|
+
category: "llm",
|
|
8957
|
+
subcategory: "oauth",
|
|
8958
|
+
title: "OAuth GirlAI",
|
|
8959
|
+
keywords: ["oauth", "girlai", "refresh token", "access token", "expires"],
|
|
8960
|
+
body: "LLM config \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 oauthRefreshToken \u0438 oauthExpiresAt. OpenAILike \u043F\u0435\u0440\u0435\u0434 \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u0434\u0435\u043B\u0430\u0435\u0442 ensureFreshToken: \u0435\u0441\u043B\u0438 \u0442\u043E\u043A\u0435\u043D \u0438\u0441\u0442\u0451\u043A, refreshAccessToken \u043E\u0431\u043D\u043E\u0432\u043B\u044F\u0435\u0442 access/refresh tokens. \u041F\u0440\u0438 \u043E\u0448\u0438\u0431\u043A\u0435 refresh \u043F\u043E\u043B\u044F oauth \u043E\u0447\u0438\u0449\u0430\u044E\u0442\u0441\u044F, \u0447\u0442\u043E\u0431\u044B \u043D\u0435 \u043B\u043E\u043C\u0430\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438."
|
|
8961
|
+
},
|
|
8962
|
+
{
|
|
8963
|
+
category: "diagnostics",
|
|
8964
|
+
subcategory: "runtime-commands",
|
|
8965
|
+
title: "Runtime \u043A\u043E\u043C\u0430\u043D\u0434\u044B",
|
|
8966
|
+
keywords: ["status", "why", "wake", "debug", "reset", "stage", "sticker", "amnesia", "\u043A\u043E\u043C\u0430\u043D\u0434\u044B"],
|
|
8967
|
+
body: "send_command \u0432 assistant \u043C\u043E\u0436\u0435\u0442 \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C runtime-\u043A\u043E\u043C\u0430\u043D\u0434\u044B: status, why, wake, debug, reset. Runtime \u0442\u0430\u043A\u0436\u0435 \u0438\u043C\u0435\u0435\u0442 :stage, :sticker, :amnesia \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 CLI/chat commands. status \u2014 \u043E\u0431\u0449\u0438\u0439 \u0441\u043D\u0438\u043C\u043E\u043A, why \u2014 \u043F\u0440\u0438\u0447\u0438\u043D\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u044F, debug \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 presence/stage/conflict/score/communication, wake \u2014 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u0431\u0443\u0434\u0438\u0442, reset \u2014 \u0447\u0438\u0441\u0442\u0438\u0442 score/memory/conflict."
|
|
8968
|
+
},
|
|
8969
|
+
{
|
|
8970
|
+
category: "diagnostics",
|
|
8971
|
+
subcategory: "not-replying",
|
|
8972
|
+
title: "\u0415\u0441\u043B\u0438 \u043E\u043D\u0430 \u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442",
|
|
8973
|
+
keywords: ["\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442", "\u043C\u043E\u043B\u0447\u0438\u0442", "ignore", "ignored", "\u043F\u043E\u0447\u0435\u043C\u0443", "why", "read_logs"],
|
|
8974
|
+
body: "\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C: \u043F\u0440\u043E\u0432\u0435\u0440\u044C RuntimeBus state \u0438 lastError; read_logs \u043D\u0430 ignored/error; \u043A\u043E\u043C\u0430\u043D\u0434\u0443 why/debug; sleep/busy/presence; conflict coldUntil; stage defaults ignoreChance; ignoreTendency; score annoyance/cringe/interest; LLM/provider errors; Telegram mode/token/session. \u041D\u0435 \u043D\u0430\u0434\u043E \u0441\u0440\u0430\u0437\u0443 \u0441\u043E\u0432\u0435\u0442\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u043D\u044F\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C, \u0435\u0441\u043B\u0438 \u043F\u0440\u0438\u0447\u0438\u043D\u0430 \u0432 stage/sleep/conflict."
|
|
8975
|
+
},
|
|
8976
|
+
{
|
|
8977
|
+
category: "diagnostics",
|
|
8978
|
+
subcategory: "llm-errors",
|
|
8979
|
+
title: "\u041E\u0448\u0438\u0431\u043A\u0438 LLM",
|
|
8980
|
+
keywords: ["401", "403", "429", "quota", "billing", "timeout", "api key", "baseURL", "model", "\u043E\u0448\u0438\u0431\u043A\u0430 \u043C\u043E\u0434\u0435\u043B\u0438"],
|
|
8981
|
+
body: "silentErrorLabel \u043A\u043B\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u043E\u0448\u0438\u0431\u043A\u0438 \u043A\u0430\u043A auth/quota/rate-limit/network/provider. \u041F\u0440\u0438 LLM \u043E\u0448\u0438\u0431\u043A\u0435 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0439 llm.presetId, proto, baseURL, apiKey, model, \u0431\u0430\u043B\u0430\u043D\u0441/\u043A\u0432\u043E\u0442\u044B \u0438 \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u043E\u0441\u0442\u044C max_tokens/max_completion_tokens. \u041B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0435 LM Studio/Ollama \u043C\u043E\u0433\u0443\u0442 \u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u0431\u0435\u0437 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0433\u043E \u043A\u043B\u044E\u0447\u0430."
|
|
8982
|
+
},
|
|
8983
|
+
{
|
|
8984
|
+
category: "diagnostics",
|
|
8985
|
+
subcategory: "telegram-errors",
|
|
8986
|
+
title: "\u041E\u0448\u0438\u0431\u043A\u0438 Telegram",
|
|
8987
|
+
keywords: ["telegram error", "BOT_TOKEN", "API_ID", "API_HASH", "session", "connect", "timeout"],
|
|
8988
|
+
body: "bot mode \u0442\u0440\u0435\u0431\u0443\u0435\u0442 telegram.botToken. userbot \u0442\u0440\u0435\u0431\u0443\u0435\u0442 apiId/apiHash/sessionString \u0438 \u043C\u043E\u0436\u0435\u0442 \u043F\u0430\u0434\u0430\u0442\u044C \u043D\u0430 connect/getMe. \u0414\u043B\u044F \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043E\u043A \u0432\u043A\u043B\u044E\u0447\u0430\u0439 useWSS \u0438\u043B\u0438 proxy. GIRL_AGENT_DEBUG=1 \u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442 debug userbot connect/getMe/handlers."
|
|
8989
|
+
},
|
|
8990
|
+
{
|
|
8991
|
+
category: "webui",
|
|
8992
|
+
subcategory: "pages",
|
|
8993
|
+
title: "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B WebUI",
|
|
8994
|
+
keywords: ["webui", "\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B", "assistant", "configuration", "diagnostics", "logs", "memory", "relationship", "addons"],
|
|
8995
|
+
body: "WebUI React \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B: SetupFlow \u2014 \u043F\u0435\u0440\u0432\u0438\u0447\u043D\u0430\u044F \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430; ConfigurationPage \u2014 config; AssistantPage \u2014 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u0441 tool blocks \u0438 question buttons; DiagnosticsPage \u2014 runtime/system diagnostics; LogsPage \u2014 \u0441\u043E\u0431\u044B\u0442\u0438\u044F; MemoryPage \u2014 editing/preview memory; RelationshipPage \u2014 stage/score/timeline; AddonsPage \u2014 marketplace/installed."
|
|
8996
|
+
},
|
|
8997
|
+
{
|
|
8998
|
+
category: "webui",
|
|
8999
|
+
subcategory: "assistant",
|
|
9000
|
+
title: "WebUI assistant",
|
|
9001
|
+
keywords: ["assistant", "\u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", "tool", "question", "\u043A\u043D\u043E\u043F\u043A\u0438", "assistant page"],
|
|
9002
|
+
body: "AssistantPage \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 /api/assistant/chat \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439. \u041E\u0442\u0432\u0435\u0442 \u043C\u043E\u0436\u0435\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C <tool> JSON-\u0431\u043B\u043E\u043A\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 UI \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 \u043A\u0430\u043A \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u043C\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F, \u0438 <question> \u0441 options, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0440\u0435\u043D\u0434\u0435\u0440\u044F\u0442\u0441\u044F \u043A\u043D\u043E\u043F\u043A\u0430\u043C\u0438. \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 tool calls, \u043E\u043D\u0438 \u043D\u0435 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u044E\u0442\u0441\u044F \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438."
|
|
9003
|
+
},
|
|
9004
|
+
{
|
|
9005
|
+
category: "webui",
|
|
9006
|
+
subcategory: "assistant-tools",
|
|
9007
|
+
title: "\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0430",
|
|
9008
|
+
keywords: ["set_field", "set_stage", "write_memory", "append_memory", "runtime_action", "read_logs", "read_memory", "list_presets"],
|
|
9009
|
+
body: "Backend assistant tools: set_field, set_stage, set_communication_preset, write_memory, append_memory, generate_persona, runtime_action, send_command, list_presets, read_logs, read_memory. ALLOWED_FIELDS \u0438 ALLOWED_MEMORY \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0442, \u0447\u0442\u043E \u043C\u043E\u0436\u043D\u043E \u043C\u0435\u043D\u044F\u0442\u044C, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u043D\u0435 \u043F\u0438\u0441\u0430\u043B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B."
|
|
9010
|
+
},
|
|
9011
|
+
{
|
|
9012
|
+
category: "webui",
|
|
9013
|
+
subcategory: "theme-and-css",
|
|
9014
|
+
title: "\u0422\u0435\u043C\u044B \u0438 \u043A\u043D\u043E\u043F\u043A\u0438 WebUI",
|
|
9015
|
+
keywords: ["theme", "dark", "light", "css", "\u043A\u043D\u043E\u043F\u043A\u0438", "\u0446\u0432\u0435\u0442", "bone", "ink"],
|
|
9016
|
+
body: "styles.css \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 bone/ink \u043F\u0430\u043B\u0438\u0442\u0440\u0443 \u0438 CSS variables. \u0412 light/dark \u043C\u0435\u043D\u044F\u044E\u0442\u0441\u044F --bone \u0438 --ink, \u0430 app colors \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 --ga-text, --ga-bg-* \u0438 --ga-border. Button text \u0434\u043E\u043B\u0436\u0435\u043D \u044F\u0432\u043D\u043E \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C/inherit \u0438\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C --ga-text, \u0438\u043D\u0430\u0447\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043D\u044B\u0439 default \u043C\u043E\u0436\u0435\u0442 \u0434\u0430\u0442\u044C \u043F\u043B\u043E\u0445\u043E\u0439 \u043A\u043E\u043D\u0442\u0440\u0430\u0441\u0442."
|
|
9017
|
+
},
|
|
9018
|
+
{
|
|
9019
|
+
category: "webui",
|
|
9020
|
+
subcategory: "api",
|
|
9021
|
+
title: "WebUI API",
|
|
9022
|
+
keywords: ["api", "routes", "profiles", "presets", "system", "tg-auth", "addons", "websocket"],
|
|
9023
|
+
body: "src/webui/routes \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 profiles, presets, assistant, addons, system, tg-auth. runtime-bus \u0434\u0430\u0451\u0442 runtime state/logs, websocket \u043E\u0442\u0434\u0430\u0451\u0442 live events. static.ts \u0440\u0430\u0437\u0434\u0430\u0451\u0442 webui/dist. system diagnostics \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442 platform, arch, node, dataRoot, ipv4 \u0438 memory."
|
|
9024
|
+
},
|
|
9025
|
+
{
|
|
9026
|
+
category: "addons",
|
|
9027
|
+
subcategory: "format",
|
|
9028
|
+
title: "\u0424\u043E\u0440\u043C\u0430\u0442 .gaa \u0430\u0434\u0434\u043E\u043D\u043E\u0432",
|
|
9029
|
+
keywords: ["addon", "gaa", "manifest", "files", "config.patch", "theme.css", "install.sh"],
|
|
9030
|
+
body: ".gaa \u2014 zip-\u0430\u0440\u0445\u0438\u0432 \u043F\u0430\u043F\u043A\u0438 \u0430\u0434\u0434\u043E\u043D\u0430. manifest.json \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u0435\u043D. files/ \u043A\u043E\u043F\u0438\u0440\u0443\u044E\u0442\u0441\u044F \u0432 data/<slug>/, config.patch.json deep-merge \u0432 config, code.patch \u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0442\u044C\u0441\u044F git apply, theme.css \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 CSS, install.sh \u043E\u043F\u0446\u0438\u043E\u043D\u0430\u043B\u0435\u043D. Marketplace \u0431\u0435\u0440\u0451\u0442\u0441\u044F \u0438\u0437 GIRL_AGENT_ADDON_REGISTRY \u0438\u043B\u0438 GitHub raw registry."
|
|
9031
|
+
},
|
|
9032
|
+
{
|
|
9033
|
+
category: "addons",
|
|
9034
|
+
subcategory: "manifest",
|
|
9035
|
+
title: "manifest.json \u0430\u0434\u0434\u043E\u043D\u0430",
|
|
9036
|
+
keywords: ["manifest", "addon", "id", "version", "compatibility", "settings"],
|
|
9037
|
+
body: "Manifest \u0442\u0440\u0435\u0431\u0443\u0435\u0442 id/name/description/version. \u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u043E: author, compatibility semver range, tags, dependencies, settings, icon, homepage. Settings \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0442 string/number/boolean/select \u0441 default/options/required."
|
|
9038
|
+
},
|
|
9039
|
+
{
|
|
9040
|
+
category: "mcp",
|
|
9041
|
+
subcategory: "client",
|
|
9042
|
+
title: "MCP servers",
|
|
9043
|
+
keywords: ["mcp", "tools", "stdio", "exa", "spotify", "instagram", "weather", "calendar"],
|
|
9044
|
+
body: "startMcpServers \u0447\u0438\u0442\u0430\u0435\u0442 cfg.mcp, \u043D\u0430\u0445\u043E\u0434\u0438\u0442 preset, \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 stdio transport, \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u0442 MCP Client \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0435\u0442 listTools. \u0421\u0435\u0439\u0447\u0430\u0441 \u0433\u043E\u0442\u043E\u0432 Exa Search \u0447\u0435\u0440\u0435\u0437 npx -y exa-mcp-server \u0438 EXA_API_KEY; spotify/instagram/weather/calendar \u043F\u043E\u043C\u0435\u0447\u0435\u043D\u044B soon."
|
|
9045
|
+
},
|
|
9046
|
+
{
|
|
9047
|
+
category: "migrations",
|
|
9048
|
+
subcategory: "data-migrations",
|
|
9049
|
+
title: "\u041C\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445",
|
|
9050
|
+
keywords: ["migration", "update", "0112", "0113", "0114", "\u043C\u0438\u0433\u0440\u0430\u0446\u0438\u0438"],
|
|
9051
|
+
body: "src/migrations \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 versioned data migrations. RuntimeBus \u043F\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043E\u043C \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 pending migrations \u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442 runMigrations. CLI update [--verbose] \u043F\u0440\u0438\u043C\u0435\u043D\u044F\u0435\u0442 \u043C\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432\u0440\u0443\u0447\u043D\u0443\u044E. \u041D\u0435\u0434\u0430\u0432\u043D\u0438\u0435: 0112 useWSS default, 0113 communication.md, 0114 Memory Palace."
|
|
9052
|
+
},
|
|
9053
|
+
{
|
|
9054
|
+
category: "desktop",
|
|
9055
|
+
subcategory: "wrapper",
|
|
9056
|
+
title: "desktop-rs",
|
|
9057
|
+
keywords: ["desktop", "rust", "iced", "windows", "installer", "json-events"],
|
|
9058
|
+
body: "README \u043E\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 desktop-rs: \u043D\u0430\u0442\u0438\u0432\u043D\u044B\u0439 Rust/iced \u043A\u043B\u0438\u0435\u043D\u0442 \u0438 installer wizard \u0434\u043B\u044F Windows. \u041E\u043D \u0441\u0442\u0430\u0432\u0438\u0442 Node package, \u0441\u043E\u0437\u0434\u0430\u0451\u0442 \u043F\u0440\u043E\u0444\u0438\u043B\u044C \u0438 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442 WebUI \u043D\u0430 127.0.0.1:7777. CLI \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 --json-events/--headless \u0434\u043B\u044F desktop wrapper."
|
|
9059
|
+
},
|
|
9060
|
+
{
|
|
9061
|
+
category: "release",
|
|
9062
|
+
subcategory: "install",
|
|
9063
|
+
title: "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C",
|
|
9064
|
+
keywords: ["install", "\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430", "curl", "docker", "npx", "node", "server", "systemd"],
|
|
9065
|
+
body: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430: curl install.sh \u0441\u0442\u0430\u0432\u0438\u0442 docker wrapper \u0438\u043B\u0438 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 Node 22 LTS \u0432 ~/.local/share/girl-agent/runtime, \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 sudo. \u0410\u043B\u044C\u0442\u0435\u0440\u043D\u0430\u0442\u0438\u0432\u044B: npx @thesashadev/girl-agent, docker run \u0441 volume /data, server --print-config/--print-systemd/--print-docker."
|
|
9066
|
+
}
|
|
9067
|
+
];
|
|
9068
|
+
function generatedKnowledge() {
|
|
9069
|
+
return [
|
|
9070
|
+
...STAGE_PRESETS.map((stage) => ({
|
|
9071
|
+
category: "relationship",
|
|
9072
|
+
subcategory: `stage-${stage.num}`,
|
|
9073
|
+
title: `${stage.num}. ${stage.id}`,
|
|
9074
|
+
keywords: ["stage", "\u0441\u0442\u0430\u0434\u0438\u044F", stage.id, stage.label, String(stage.num)],
|
|
9075
|
+
body: `${stage.label}: ${stage.description}. Defaults: interest=${stage.defaults.interest}, trust=${stage.defaults.trust}, attraction=${stage.defaults.attraction}, annoyance=${stage.defaults.annoyance}, cringeTolerance=${stage.defaults.cringeTolerance}, ignoreChance=${stage.defaults.ignoreChance}, replyDelaySec=${stage.defaults.replyDelaySec[0]}-${stage.defaults.replyDelaySec[1]}.`
|
|
9076
|
+
})),
|
|
9077
|
+
...COMMUNICATION_PRESETS.map((preset) => ({
|
|
9078
|
+
category: "communication",
|
|
9079
|
+
subcategory: `preset-${preset.id}`,
|
|
9080
|
+
title: `Communication preset ${preset.id}`,
|
|
9081
|
+
keywords: ["communication", "preset", "\u043E\u0431\u0449\u0435\u043D\u0438\u0435", preset.id, preset.label],
|
|
9082
|
+
body: `${preset.label}: ${preset.description}. notifications=${preset.profile.notifications}, messageStyle=${preset.profile.messageStyle}, initiative=${preset.profile.initiative}, lifeSharing=${preset.profile.lifeSharing}.`
|
|
9083
|
+
})),
|
|
9084
|
+
{
|
|
9085
|
+
category: "llm",
|
|
9086
|
+
subcategory: "preset-index",
|
|
9087
|
+
title: "\u0418\u043D\u0434\u0435\u043A\u0441 LLM presets",
|
|
9088
|
+
keywords: ["llm", "preset", "\u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u044B", ...LLM_PRESETS.map((p) => p.id)],
|
|
9089
|
+
body: LLM_PRESETS.map((p) => `${p.id}: ${p.name}, proto=${p.proto}, default=${p.defaultModel || "custom"}${p.baseURL ? `, baseURL=${p.baseURL}` : ""}${p.disabled ? `, disabled=${p.disabledReason ?? "yes"}` : ""}${p.hint ? `, hint=${p.hint}` : ""}`).join("\n")
|
|
9090
|
+
},
|
|
9091
|
+
{
|
|
9092
|
+
category: "mcp",
|
|
9093
|
+
subcategory: "preset-index",
|
|
9094
|
+
title: "\u0418\u043D\u0434\u0435\u043A\u0441 MCP presets",
|
|
9095
|
+
keywords: ["mcp", "preset", "\u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438", ...MCP_PRESETS.map((p) => p.id)],
|
|
9096
|
+
body: MCP_PRESETS.map((p) => `${p.id}: ${p.name}, ready=${p.ready ? "yes" : "soon"} \u2014 ${p.description}`).join("\n")
|
|
9097
|
+
}
|
|
9098
|
+
];
|
|
9099
|
+
}
|
|
9100
|
+
function knowledgeBase() {
|
|
9101
|
+
return [...CORE_KNOWLEDGE_BASE, ...generatedKnowledge()];
|
|
9102
|
+
}
|
|
9103
|
+
function renderRelevantKnowledge(query, limit = 8) {
|
|
9104
|
+
const articles = selectKnowledgeArticles(query, limit);
|
|
9105
|
+
return [
|
|
9106
|
+
"\u0411\u0430\u0437\u0430 \u0437\u043D\u0430\u043D\u0438\u0439 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 girl-agent:",
|
|
9107
|
+
renderKnowledgeIndex(),
|
|
9108
|
+
"\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0440\u0435\u043B\u0435\u0432\u0430\u043D\u0442\u043D\u044B\u0435 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438/\u043F\u043E\u0434\u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438:",
|
|
9109
|
+
...articles.map((a) => `## ${a.category} / ${a.subcategory}: ${a.title}
|
|
9110
|
+
${a.body}`),
|
|
9111
|
+
"\u0415\u0441\u043B\u0438 \u0432\u043E\u043F\u0440\u043E\u0441 \u043D\u0435 \u043F\u043E\u043A\u0440\u044B\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C\u0438 \u0441\u0442\u0430\u0442\u044C\u044F\u043C\u0438 \u2014 \u0441\u043A\u0430\u0436\u0438 \u043E\u0441\u0442\u043E\u0440\u043E\u0436\u043D\u043E \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u044B\u0439 \u043A\u043E\u043D\u0444\u0438\u0433, \u043F\u0430\u043C\u044F\u0442\u044C \u0438\u043B\u0438 runtime logs."
|
|
9112
|
+
].join("\n\n");
|
|
9113
|
+
}
|
|
9114
|
+
function renderKnowledgeIndex() {
|
|
9115
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
9116
|
+
for (const article of knowledgeBase()) {
|
|
9117
|
+
const list = grouped.get(article.category) ?? [];
|
|
9118
|
+
if (!list.includes(article.subcategory)) list.push(article.subcategory);
|
|
9119
|
+
grouped.set(article.category, list);
|
|
9120
|
+
}
|
|
9121
|
+
return [...grouped.entries()].map(([category, subcategories]) => `- ${category}: ${subcategories.join(", ")}`).join("\n");
|
|
9122
|
+
}
|
|
9123
|
+
function selectKnowledgeArticles(query, limit) {
|
|
9124
|
+
const normalized = normalizeSearchText(query);
|
|
9125
|
+
const terms = searchTerms(normalized);
|
|
9126
|
+
const scored = knowledgeBase().map((article) => ({ article, score: knowledgeScore(article, normalized, terms) })).filter((item) => item.score > 0).sort((a, b) => b.score - a.score).slice(0, limit).map((item) => item.article);
|
|
9127
|
+
if (scored.length) return scored;
|
|
9128
|
+
return knowledgeBase().filter((article) => article.category === "overview" || article.category === "diagnostics").slice(0, limit);
|
|
9129
|
+
}
|
|
9130
|
+
function knowledgeScore(article, normalizedQuery, terms) {
|
|
9131
|
+
const haystack = normalizeSearchText([
|
|
9132
|
+
article.category,
|
|
9133
|
+
article.subcategory,
|
|
9134
|
+
article.title,
|
|
9135
|
+
article.keywords.join(" "),
|
|
9136
|
+
article.body
|
|
9137
|
+
].join(" "));
|
|
9138
|
+
let score = 0;
|
|
9139
|
+
for (const keyword of article.keywords) {
|
|
9140
|
+
const normalizedKeyword = normalizeSearchText(keyword);
|
|
9141
|
+
if (normalizedKeyword && normalizedQuery.includes(normalizedKeyword)) score += 6;
|
|
9142
|
+
}
|
|
9143
|
+
for (const term of terms) {
|
|
9144
|
+
if (article.category.includes(term) || article.subcategory.includes(term)) score += 3;
|
|
9145
|
+
if (haystack.includes(term)) score += 1;
|
|
9146
|
+
}
|
|
9147
|
+
return score;
|
|
9148
|
+
}
|
|
9149
|
+
function searchTerms(text) {
|
|
9150
|
+
return [...new Set(text.split(/[^a-zа-яё0-9]+/i).filter((t) => t.length >= 3))];
|
|
9151
|
+
}
|
|
9152
|
+
function normalizeSearchText(text) {
|
|
9153
|
+
return text.toLowerCase().replace(/ё/g, "\u0435");
|
|
9154
|
+
}
|
|
9155
|
+
|
|
9156
|
+
// src/webui/routes/assistant.ts
|
|
8603
9157
|
var ASSISTANT_SYSTEM = `\u0422\u044B \u2014 \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0439 \u0418\u0418-\u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u043F\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0435 girl-agent (\u0440\u0430\u043D\u0442\u0430\u0439\u043C \u0434\u043B\u044F Telegram-\u0434\u0435\u0432\u0443\u0448\u043A\u0438 \u0441 \u0447\u0435\u043B\u043E\u0432\u0435\u0447\u043D\u044B\u043C \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435\u043C). \u0422\u0435\u0431\u044F \u0437\u043E\u0432\u0443\u0442 "\u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", \u043D\u0435 "\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442".
|
|
8604
9158
|
|
|
8605
9159
|
\u0422\u0432\u043E\u044F \u0437\u0430\u0434\u0430\u0447\u0430:
|
|
@@ -8607,6 +9161,7 @@ var ASSISTANT_SYSTEM = `\u0422\u044B \u2014 \u0432\u0441\u0442\u0440\u043E\u0435
|
|
|
8607
9161
|
- \u041C\u0435\u043D\u044F\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433 \u043F\u0440\u043E\u0444\u0438\u043B\u044F \u0438 \u0444\u0430\u0439\u043B\u044B \u043F\u0430\u043C\u044F\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B (\u0441\u043C. \u043D\u0438\u0436\u0435).
|
|
8608
9162
|
- \u041F\u043E\u043C\u043E\u0433\u0430\u0442\u044C \u0441 \u043F\u0435\u0440\u0432\u0438\u0447\u043D\u043E\u0439 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u043E\u0439 \u0438 \u0434\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u043A\u043E\u0439 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F.
|
|
8609
9163
|
- \u041E\u0431\u044A\u044F\u0441\u043D\u044F\u0442\u044C \u043E\u0448\u0438\u0431\u043A\u0438 \u0438\u0437 \u043B\u043E\u0433\u043E\u0432 \u0438 \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0442\u044C \u043F\u043E\u0447\u0438\u043D\u043A\u0443.
|
|
9164
|
+
- \u0414\u0430\u0432\u0430\u0442\u044C \u043E\u0442\u0432\u0435\u0442\u044B, \u043E\u043F\u0438\u0440\u0430\u044F\u0441\u044C \u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0441\u0442\u0430\u0442\u044C\u0438 \u0438\u0437 \u0431\u0430\u0437\u044B \u0437\u043D\u0430\u043D\u0438\u0439 \u043F\u0440\u043E\u0435\u043A\u0442\u0430, \u0430 \u043D\u0435 \u043D\u0430 \u0434\u043E\u0433\u0430\u0434\u043A\u0438.
|
|
8610
9165
|
|
|
8611
9166
|
\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u043E\u0442\u0432\u0435\u0442\u0430:
|
|
8612
9167
|
- \u041E\u0442\u0432\u0435\u0447\u0430\u0439 \u043A\u043E\u0440\u043E\u0442\u043A\u043E (2-5 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u0439), \u043D\u0430 \u0440\u0443\u0441\u0441\u043A\u043E\u043C.
|
|
@@ -8652,7 +9207,7 @@ var ASSISTANT_SYSTEM = `\u0422\u044B \u2014 \u0432\u0441\u0442\u0440\u043E\u0435
|
|
|
8652
9207
|
|
|
8653
9208
|
\u0412\u0430\u0436\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438:
|
|
8654
9209
|
- ignoreTendency: 0 \u2014 \u0432\u0441\u0435\u0433\u0434\u0430 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442; 100 \u2014 \u043F\u043E\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0433\u043D\u043E\u0440\u0438\u0442. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E 35.
|
|
8655
|
-
- \u0415\u0441\u043B\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0436\u0430\u043B\u0443\u0435\u0442\u0441\u044F \u0447\u0442\u043E "\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442" \u2192 \u043F\u0440\u043E\u0432\u0435\u0440\u044C runtime
|
|
9210
|
+
- \u0415\u0441\u043B\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0436\u0430\u043B\u0443\u0435\u0442\u0441\u044F \u0447\u0442\u043E "\u043D\u0435 \u043E\u0442\u0432\u0435\u0447\u0430\u0435\u0442" \u2192 \u043F\u0440\u043E\u0432\u0435\u0440\u044C runtime state \u0438 read_logs.
|
|
8656
9211
|
- \u0415\u0441\u043B\u0438 LLM \u043E\u0448\u0438\u0431\u043A\u0438 \u2192 \u043F\u0440\u043E\u0432\u0435\u0440\u044C llm.apiKey, llm.baseURL, llm.model.
|
|
8657
9212
|
- \u0415\u0441\u043B\u0438 \u0441\u043C\u0435\u043D\u0438\u043B\u0438 telegram.mode \u2014 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0443\u0436\u0435\u043D restart.`;
|
|
8658
9213
|
function registerAssistantRoutes(r) {
|
|
@@ -8675,22 +9230,69 @@ function registerAssistantRoutes(r) {
|
|
|
8675
9230
|
return { reply: reply2, toolCalls: [] };
|
|
8676
9231
|
}
|
|
8677
9232
|
const stage = findStage(cfg.stage);
|
|
9233
|
+
const status = bus.status(cfg.slug);
|
|
9234
|
+
const userQuestion = body.messages.slice().reverse().find((m) => m.role === "user")?.content ?? "";
|
|
9235
|
+
const relevantKnowledge = renderRelevantKnowledge(userQuestion);
|
|
8678
9236
|
let scoreLine = "";
|
|
9237
|
+
let memoryContext = "";
|
|
8679
9238
|
let recentLogs = "";
|
|
8680
9239
|
try {
|
|
8681
9240
|
const rel = await readRelationship(cfg.slug);
|
|
8682
9241
|
scoreLine = ` score=${JSON.stringify(rel.score)}`;
|
|
8683
9242
|
} catch {
|
|
8684
9243
|
}
|
|
9244
|
+
try {
|
|
9245
|
+
const [persona, speech, communication, boundaries, longTerm, facts, uncertain, timeline, openLoops, promises] = await Promise.all([
|
|
9246
|
+
readMd(cfg.slug, "persona.md"),
|
|
9247
|
+
readMd(cfg.slug, "speech.md"),
|
|
9248
|
+
readMd(cfg.slug, "communication.md"),
|
|
9249
|
+
readMd(cfg.slug, "boundaries.md"),
|
|
9250
|
+
readMd(cfg.slug, "memory/long-term.md"),
|
|
9251
|
+
readMd(cfg.slug, "memory/facts.md"),
|
|
9252
|
+
readMd(cfg.slug, "memory/uncertain.md"),
|
|
9253
|
+
readMd(cfg.slug, "relationship/timeline.md"),
|
|
9254
|
+
readMd(cfg.slug, "time/open-loops.md"),
|
|
9255
|
+
readMd(cfg.slug, "time/promises.md")
|
|
9256
|
+
]);
|
|
9257
|
+
memoryContext = renderAssistantMemoryContext({
|
|
9258
|
+
persona,
|
|
9259
|
+
speech,
|
|
9260
|
+
communication,
|
|
9261
|
+
boundaries,
|
|
9262
|
+
longTerm,
|
|
9263
|
+
facts,
|
|
9264
|
+
uncertain,
|
|
9265
|
+
timeline,
|
|
9266
|
+
openLoops,
|
|
9267
|
+
promises
|
|
9268
|
+
});
|
|
9269
|
+
} catch {
|
|
9270
|
+
}
|
|
8685
9271
|
try {
|
|
8686
9272
|
const buf = bus.recentLogs(cfg.slug, 25);
|
|
8687
9273
|
recentLogs = buf.map((e) => `[${e.type}] ${e.text ?? ""}`).join("\n");
|
|
8688
9274
|
} catch {
|
|
8689
9275
|
}
|
|
8690
|
-
const
|
|
8691
|
-
|
|
8692
|
-
|
|
8693
|
-
${
|
|
9276
|
+
const runtimeContext = [
|
|
9277
|
+
`\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u043F\u0440\u043E\u0444\u0438\u043B\u044C: ${cfg.name}, ${cfg.age}, ${cfg.nationality}, tz=${cfg.tz}`,
|
|
9278
|
+
`slug=${cfg.slug}, runtime=${status.state}${status.lastError ? `, lastError=${status.lastError}` : ""}`,
|
|
9279
|
+
`\u0441\u0442\u0430\u0434\u0438\u044F "${stage.label}" (${cfg.stage}), ${stage.description}`,
|
|
9280
|
+
`stage defaults: ignoreChance=${stage.defaults.ignoreChance}, replyDelaySec=${stage.defaults.replyDelaySec[0]}-${stage.defaults.replyDelaySec[1]}`,
|
|
9281
|
+
`privacy=${cfg.privacy ?? "owner-only"}, ownerId=${cfg.ownerId ?? "\u2014"}, ignoreTendency=${cfg.ignoreTendency ?? 35}`,
|
|
9282
|
+
`sleep=${cfg.sleepFrom}:00-${cfg.sleepTo}:00, nightWakeChance=${cfg.nightWakeChance}`,
|
|
9283
|
+
`communication=${cfg.communication ? JSON.stringify(cfg.communication) : "default"}, vibe=${cfg.vibe ?? "\u2014"}`,
|
|
9284
|
+
`llm=${cfg.llm.presetId}/${cfg.llm.model} (${cfg.llm.proto}), telegram=${cfg.mode ?? "bot"}, useWSS=${cfg.telegram.useWSS ?? true}`,
|
|
9285
|
+
`busySchedule=${cfg.busySchedule?.length ? JSON.stringify(cfg.busySchedule).slice(0, 1e3) : "[]"}`,
|
|
9286
|
+
scoreLine.trim()
|
|
9287
|
+
].filter(Boolean).join("\n");
|
|
9288
|
+
const ctxPrompt = [
|
|
9289
|
+
relevantKnowledge,
|
|
9290
|
+
`\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0433\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F:
|
|
9291
|
+
${runtimeContext}`,
|
|
9292
|
+
memoryContext,
|
|
9293
|
+
recentLogs ? `\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435 \u0441\u043E\u0431\u044B\u0442\u0438\u044F runtime'\u0430:
|
|
9294
|
+
${recentLogs.slice(-2500)}` : ""
|
|
9295
|
+
].filter(Boolean).join("\n\n");
|
|
8694
9296
|
const llm = makeLLM(cfg.llm);
|
|
8695
9297
|
const messages = [
|
|
8696
9298
|
{ role: "system", content: ASSISTANT_SYSTEM },
|
|
@@ -8786,12 +9388,14 @@ async function applyTool(cfg, call) {
|
|
|
8786
9388
|
const stage = String(call.args?.stage ?? "");
|
|
8787
9389
|
const found = STAGE_PRESETS.find((s) => s.id === stage);
|
|
8788
9390
|
if (!found) return { changed: false, message: `unknown stage: ${stage}. \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435: ${STAGE_PRESETS.map((s) => s.id).join(", ")}` };
|
|
9391
|
+
const prevStage = cfg.stage;
|
|
8789
9392
|
cfg.stage = stage;
|
|
8790
9393
|
try {
|
|
8791
9394
|
const rel = await readRelationship(cfg.slug);
|
|
8792
9395
|
await writeRelationship(cfg.slug, { ...rel, stage });
|
|
8793
9396
|
} catch {
|
|
8794
9397
|
}
|
|
9398
|
+
await maybeAdvanceRelationshipTimeline(cfg, prevStage, stage);
|
|
8795
9399
|
return { changed: true, message: `stage = ${stage} (${found.label})` };
|
|
8796
9400
|
}
|
|
8797
9401
|
case "set_communication_preset": {
|
|
@@ -8933,6 +9537,32 @@ ${preset.description}
|
|
|
8933
9537
|
return { changed: false, message: `unknown tool: ${call.tool}` };
|
|
8934
9538
|
}
|
|
8935
9539
|
}
|
|
9540
|
+
function renderAssistantMemoryContext(parts) {
|
|
9541
|
+
const sections = [
|
|
9542
|
+
["persona.md", parts.persona],
|
|
9543
|
+
["speech.md", parts.speech],
|
|
9544
|
+
["communication.md", parts.communication],
|
|
9545
|
+
["boundaries.md", parts.boundaries],
|
|
9546
|
+
["memory/facts.md", parts.facts],
|
|
9547
|
+
["memory/uncertain.md", parts.uncertain],
|
|
9548
|
+
["memory/long-term.md", parts.longTerm],
|
|
9549
|
+
["relationship/timeline.md", parts.timeline],
|
|
9550
|
+
["time/open-loops.md", parts.openLoops],
|
|
9551
|
+
["time/promises.md", parts.promises]
|
|
9552
|
+
].map(([name, text]) => renderContextSection(name, text)).filter(Boolean);
|
|
9553
|
+
return sections.length ? `\u041F\u0430\u043C\u044F\u0442\u044C \u0438 \u0444\u0430\u0439\u043B\u044B \u043F\u0440\u043E\u0444\u0438\u043B\u044F:
|
|
9554
|
+
${sections.join("\n\n")}` : "";
|
|
9555
|
+
}
|
|
9556
|
+
function renderContextSection(name, text) {
|
|
9557
|
+
const clean = text.trim();
|
|
9558
|
+
if (!clean) return "";
|
|
9559
|
+
return `## ${name}
|
|
9560
|
+
${tail(clean, 1400)}`;
|
|
9561
|
+
}
|
|
9562
|
+
function tail(text, limit) {
|
|
9563
|
+
if (text.length <= limit) return text;
|
|
9564
|
+
return text.slice(-limit);
|
|
9565
|
+
}
|
|
8936
9566
|
function setNested(obj, path13, value) {
|
|
8937
9567
|
const parts = path13.split(".");
|
|
8938
9568
|
let cur = obj;
|