Partners & Channels
Partners are persistent DeepTutor companions that can live in the web UI and in external IM apps. They are not a second bot engine. Every incoming message becomes a normal chat-agent turn scoped to that Partner:
IM / Web message -> PartnerRunner -> ChatOrchestrator -> AgenticChatPipeline -> tools -> reply
This page is the operator guide. For the product tour of what a Partner is — its soul, library, memory, and web Chat view — see Explore → Partners. A Partner can also be consulted as a subagent from a normal chat turn.
What changed from TutorBot
Section titled “What changed from TutorBot”| Old TutorBot | New Partner |
|---|---|
Separate bot engine and data/tutorbot/<id>/ workspace | Same Chat loop, scoped workspace under data/partners/<id>/workspace/ |
Bot-specific CLI commands such as deeptutor bot ... | deeptutor partner list/create/start/stop |
| Channels edited in bot YAML | Schema-driven channel cards in the Partners UI |
| Bot skills / memory handled separately | Assigned KBs, skills, notebooks, tools, and memory are mounted like normal chat context |
Old /docs/tutorbot/* links are retained as short migration notices so external links do not hard 404.
Recommended setup flow
Section titled “Recommended setup flow”- Create the Partner in Partners -> New partner.
- Fill Identity and Soul before enabling any channel. The first IM reply uses this soul.
- In Mind, pick a model and keep optional tools minimal while testing.
- In Library, assign one small KB or skill first. Assets are copied into the Partner workspace.
- In Channels, enable exactly one channel and start with a private/local test.
- Keep
send_progressandsend_tool_hintson during debugging, then quiet them down for production. - Replace
allow_from: ["*"]with explicit sender ids before opening a channel to real users.

Channel entry points
Section titled “Channel entry points”| Channel | Use when | Page |
|---|---|---|
weixin) | Personal WeChat via QR-code login and HTTP long-poll | |
wecom) | Enterprise WeChat / WeChat Work AI Bot platform | WeCom |
qq) | Official Tencent QQ bot account via botpy | QQ / NapCat |
napcat) | Personal QQ account through OneBot v11 / NapCat | QQ / NapCat |
telegram) | Fastest setup — BotFather token, no public IP | Telegram |
discord) | Discord servers and DMs via Gateway WebSocket | Discord |
slack) | Slack teams over Socket Mode, threaded replies | Slack |
feishu) | Feishu / Lark with CardKit streaming cards | Feishu |
dingtalk) | DingTalk enterprise bot over Stream Mode | DingTalk |
matrix) | Decentralized rooms, optional E2EE | Matrix |
zulip) | Stream + topic structured team chat | Zulip |
mattermost) | Self-hosted Mattermost via native v4 WebSocket | Mattermost |
whatsapp) | WhatsApp through a bridge runtime | |
email) | Async inbox workflows over IMAP/SMTP | |
mochat) | Customer-service style chat panels | Mochat |
msteams) | Teams via Bot Framework webhook listener | Microsoft Teams |
For a side-by-side comparison of connection models, required fields, and delivery switches, see the Channel Matrix.
Runtime state
Section titled “Runtime state”data/partners/<partner_id>/├── config.yaml # Partner identity, model, channels, tools├── sessions.db # Partner conversation store├── workspace/│ ├── knowledge_bases/ # Copied assigned KBs│ └── user/│ ├── workspace/SOUL.md│ ├── workspace/skills/<name>/SKILL.md│ ├── workspace/notebook/│ └── workspace/memory/└── runtime/ └── <channel>/... # QR tokens, cursors, conversation refsThe Partner workspace stores copies of assigned resources. This is intentional: the Partner keeps a stable library even if the original user’s workspace later changes.
Web UI vs CLI
Section titled “Web UI vs CLI”Use the Web UI for channel configuration because it renders the live schema from /api/v1/partners/channels/schema and masks secret-looking fields. Use the CLI for lifecycle checks:
deeptutor partner listdeeptutor partner start math-tutordeeptutor partner stop math-tutor