@@ -5,17 +5,21 @@ Alice is a minimal, reusable AI agent application built with a hexagonal archite
55## What Alice Includes
66
77- Bob runtime orchestration (` bob-core ` , ` bob-runtime ` , ` bob-adapters ` )
8- - CLI interaction (` alice ` command behavior in ` bin/cli-app ` )
9- - Local memory system in ` crates/common ` with:
8+ - Hexagonal architecture with clean layer boundaries
9+ - Skill system integration — auto-selects relevant ` SKILL.md ` files per turn
10+ - Multi-channel adapters: CLI REPL, Discord, and Telegram
11+ - Local memory system with:
1012 - SQLite persistence
1113 - FTS5 full-text recall
1214 - sqlite-vec vector search
1315 - hybrid ranking (BM25 + vector similarity)
1416
1517## Workspace Layout
1618
17- - ` bin/cli-app ` : Alice CLI composition root
18- - ` crates/common ` : shared memory domain/service/SQLite adapter
19+ - ` bin/alice-cli ` : thin CLI binary — clap parsing and dispatch
20+ - ` crates/alice-core ` : innermost layer — domain types, port traits, service logic (zero adapter deps)
21+ - ` crates/alice-adapters ` : concrete implementations — SQLite memory store, CLI/Discord/Telegram channel adapters
22+ - ` crates/alice-runtime ` : composition root — config, bootstrap, commands, skill wiring, channel runner
1923- ` specs/ ` : design and task specs
2024
2125## Quick Start
@@ -29,21 +33,71 @@ just format
2933just lint
3034just test
3135
32- # Run Alice (interactive)
33- cargo run -p cli-app -- --config alice.toml
36+ # Run Alice (interactive chat )
37+ cargo run -p alice-cli -- --config alice.toml chat
3438
3539# Run one prompt and exit
36- cargo run -p cli-app -- --config alice.toml --once " summarize our current memory setup"
40+ cargo run -p alice-cli -- --config alice.toml run " summarize our current memory setup"
41+
42+ # Run with multi-channel support (CLI + enabled adapters)
43+ cargo run -p alice-cli -- --config alice.toml channel
3744```
3845
3946## Configuration
4047
4148Use ` alice.toml ` in repo root as a starting point. Key sections:
4249
43- - ` [runtime] ` : model and turn limits
50+ - ` [runtime] ` : model, turn limits, dispatch mode
4451- ` [memory] ` : sqlite path and hybrid recall weights
52+ - ` [skills] ` : skill system — enable/disable, source directories, token budget
53+ - ` [channels.discord] ` / ` [channels.telegram] ` : channel adapters (require env vars)
4554- ` [[mcp.servers]] ` : optional MCP tool servers
4655
47- ## Current Scope
56+ ### Skills
57+
58+ Place ` SKILL.md ` files in a directory and configure the path in ` alice.toml ` :
59+
60+ ``` toml
61+ [skills ]
62+ enabled = true
63+ max_selected = 3
64+ token_budget = 1800
65+
66+ [[skills .sources ]]
67+ path = " ./skills"
68+ recursive = true
69+ ```
70+
71+ ### Channels
72+
73+ Enable Discord and/or Telegram alongside the default CLI REPL:
74+
75+ ``` toml
76+ [channels .discord ]
77+ enabled = true
78+
79+ [channels .telegram ]
80+ enabled = true
81+ ```
82+
83+ Set the corresponding environment variables:
84+
85+ ``` bash
86+ export ALICE_DISCORD_TOKEN=" your-discord-bot-token"
87+ export ALICE_TELEGRAM_TOKEN=" your-telegram-bot-token"
88+ ```
89+
90+ ## Building with Channel Features
4891
49- Alice is intentionally CLI-first and local-first. Web gateways, multi-channel bots, and distributed memory are out of scope for this phase.
92+ Discord and Telegram adapters are behind feature flags:
93+
94+ ``` bash
95+ # Build with Discord support
96+ cargo build -p alice-cli --features discord
97+
98+ # Build with Telegram support
99+ cargo build -p alice-cli --features telegram
100+
101+ # Build with both
102+ cargo build -p alice-cli --features discord,telegram
103+ ```
0 commit comments