Arsitektur

Tujuan

Peta tentang bagaimana turn pengguna mengalir melalui snsagent dan di mana subsistem lintas-urusan (memory, TBM, advisor, tools) terhubung.

Alur tingkat tinggi

CLI (src/cli/entry.ts)
  → createAgentSession (src/sdk.ts)
      membangun TbmManager dari settings (tbm.* → resolveTbmConfigFromSettings)
      membangun transformContext = composeTransformContext({ tbm, emitContext, wrapSteering })
  → AgentSession (src/session/agent-session.ts)
      memiliki pi-agent-core Agent, tools, memory, advisor, compaction
  → Agent.prompt (turn loop, @oh-my-pi/pi-agent-core)
      pre-model  → transformContext → applyTbmPreModel
      model call → streamFn / convertToLlm
      post-tool  → Agent.afterToolCall → applyTbmToolCompression
      post-turn  → Agent.setOnTurnEnd → cacheTbmTurnResponse + advisor onTurnEnd

Agent session (src/session/agent-session.ts)

Titik koordinasi tunggal. Ia menghubungkan loop upstream @oh-my-pi/pi-agent-core ke subsistem snsagent:

HookSubsistemLokasi
transformContextTBM pre-model (comm-mode, tombstone, delta, pyramid, lazy-skills)src/tbm/session-hooks.tscomposeTransformContext
afterToolCallKompresi output tool TBM (+ pengingat TTSR)agent-session.ts #afterToolCall
setOnTurnEndStore response-cache TBM + review turn advisoragent-session.ts callback akhir turn
beforeAgentStartPromptInjeksi auto-recall memoryagent-session.tsagent.setSystemPrompt

Semua hook TBM adalah fungsi murni dari (TbmManager, messages) di src/tbm/session-hooks.ts, jadi mereka dapat diuji dengan bentuk AgentMessage yang nyata.

Subsistem utama

SubsistemPathCatatan
Settingssrc/config/settings.ts, settings-schema.tsPath dipisah titik, YAML/JSON
Toolssrc/tools/30 nama built-in di builtin-names.ts
Memorysrc/memory-backend/ + src/mnemopi/ + src/hindsight/resolver → backend; mnemopi menyuntikkan
TBMsrc/tbm/terintegrasi, default OFF
Slash commandssrc/slash-commands/builtin-registry.ts62 perintah + alias
TUIsrc/modes/, src/tui/, src/ui/mode interaktif
Telegramsrc/adapters/telegram/bot grammY; auth via allowlist
Subagents / multi-agentsrc/task/, src/agents/delegasi + strategi ensemble
Evalsrc/eval/runtime Python/JS/Ruby/Julia
MCPsrc/mcp/server Model Context Protocol
Cronsrc/cron/scheduler berbasis SQLite
Extensibilitysrc/extensibility/skills + plugins + marketplace
Collabsrc/collab/sesi host/join

Penghitungan token

estimateTokens milik TBM (src/tbm/context-delta.ts) mendelegasikan ke countTokens dari @oh-my-pi/pi-agent-core, estimator yang sama yang dipakai sesi untuk compaction.

Pengujian

bun test src            # unit inti + suite integrasi
bun test test/          # test integrasi yang di-commit
bun scripts/tbm-benchmark.ts   # benchmark harness TBM (bukan end-to-end)

Wiring turn-lifecycle dicakup oleh src/tbm/__tests__/tbm-agent-loop.test.ts dan tbm-session-integration.test.ts (efek tingkat hook). Jalur penuh memory dicakup oleh src/memory-backend/__tests__/memory-integration.test.ts.