Skip to content

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

The Partners page — companion cards with their connected channels

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.

Old TutorBotNew Partner
Separate bot engine and data/tutorbot/<id>/ workspaceSame 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 YAMLSchema-driven channel cards in the Partners UI
Bot skills / memory handled separatelyAssigned 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.

  1. Create the Partner in Partners -> New partner.
  2. Fill Identity and Soul before enabling any channel. The first IM reply uses this soul.
  3. In Mind, pick a model and keep optional tools minimal while testing.
  4. In Library, assign one small KB or skill first. Assets are copied into the Partner workspace.
  5. In Channels, enable exactly one channel and start with a private/local test.
  6. Keep send_progress and send_tool_hints on during debugging, then quiet them down for production.
  7. Replace allow_from: ["*"] with explicit sender ids before opening a channel to real users.

A partner's Channels tab — pick an IM app on the left and configure it on the right

ChannelUse whenPage
WeChat (weixin)Personal WeChat via QR-code login and HTTP long-pollWeChat
WeCom (wecom)Enterprise WeChat / WeChat Work AI Bot platformWeCom
QQ (qq)Official Tencent QQ bot account via botpyQQ / NapCat
NapCat (napcat)Personal QQ account through OneBot v11 / NapCatQQ / NapCat
Telegram (telegram)Fastest setup — BotFather token, no public IPTelegram
Discord (discord)Discord servers and DMs via Gateway WebSocketDiscord
Slack (slack)Slack teams over Socket Mode, threaded repliesSlack
Feishu (feishu)Feishu / Lark with CardKit streaming cardsFeishu
DingTalk (dingtalk)DingTalk enterprise bot over Stream ModeDingTalk
Matrix (matrix)Decentralized rooms, optional E2EEMatrix
Zulip (zulip)Stream + topic structured team chatZulip
Mattermost (mattermost)Self-hosted Mattermost via native v4 WebSocketMattermost
WhatsApp (whatsapp)WhatsApp through a bridge runtimeWhatsApp
Email (email)Async inbox workflows over IMAP/SMTPEmail
Mochat (mochat)Customer-service style chat panelsMochat
Microsoft Teams (msteams)Teams via Bot Framework webhook listenerMicrosoft Teams

For a side-by-side comparison of connection models, required fields, and delivery switches, see the Channel Matrix.

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 refs

The 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.

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:

Terminal window
deeptutor partner list
deeptutor partner start math-tutor
deeptutor partner stop math-tutor