| layout | default |
|---|---|
| title | Chapter 4: Assistants, Topics, and Workflow Design |
| nav_order | 4 |
| parent | Cherry Studio Tutorial |
Welcome to Chapter 4: Assistants, Topics, and Workflow Design. In this part of Cherry Studio Tutorial: Multi-Provider AI Desktop Workspace for Teams, you will build an intuitive mental model first, then move into concrete implementation details and practical production tradeoffs.
This chapter focuses on structuring assistants and conversations for high throughput.
- use preconfigured assistants effectively
- create focused custom assistants for specific task types
- organize topics for retrieval and long-running work
- support multi-model conversation strategies
- choose assistant role aligned to task
- bind preferred model/provider profile
- organize conversation in topic hierarchy
- iterate and refine prompts with reusable templates
You now have a practical structure for assistant- and topic-driven workflows in Cherry Studio.
Next: Chapter 5: Documents, MCP, and Tool Integrations
The getBaseVersion function in scripts/update-app-upgrade-config.ts handles a key part of this chapter's functionality:
}
const baseVersion = getBaseVersion(releaseInfo.version)
return baseVersion ?? releaseInfo.version
}
function getBaseVersion(version: string): string | null {
const parsed = semver.parse(version, { loose: true })
if (!parsed) {
return null
}
return `${parsed.major}.${parsed.minor}.${parsed.patch}`
}
function createEmptyVersionEntry(): VersionEntry {
return {
minCompatibleVersion: '',
description: '',
channels: {
latest: null,
rc: null,
beta: null
}
}
}
function ensureChannelSlots(
channels: Record<UpgradeChannel, ChannelConfig | null>
): Record<UpgradeChannel, ChannelConfig | null> {
return CHANNELS.reduce(
(acc, channel) => {
acc[channel] = channels[channel] ?? nullThis function is important because it defines how Cherry Studio Tutorial: Multi-Provider AI Desktop Workspace for Teams implements the patterns covered in this chapter.
The createEmptyVersionEntry function in scripts/update-app-upgrade-config.ts handles a key part of this chapter's functionality:
entry = { ...versionsCopy[existingKey], channels: { ...versionsCopy[existingKey].channels } }
} else {
entry = createEmptyVersionEntry()
}
entry.channels = ensureChannelSlots(entry.channels)
const channelUpdated = await applyChannelUpdate(entry, segment, releaseInfo, skipReleaseValidation)
if (!channelUpdated) {
return { versions, updated: false }
}
if (shouldRename && existingKey) {
delete versionsCopy[existingKey]
}
entry.metadata = {
segmentId: segment.id,
segmentType: segment.type
}
entry.minCompatibleVersion = segment.minCompatibleVersion
entry.description = segment.description
versionsCopy[targetKey] = entry
return {
versions: sortVersionMap(versionsCopy),
updated: true
}
}
function findVersionKeyBySegment(versions: Record<string, VersionEntry>, segmentId: string): string | null {
for (const [key, value] of Object.entries(versions)) {This function is important because it defines how Cherry Studio Tutorial: Multi-Provider AI Desktop Workspace for Teams implements the patterns covered in this chapter.
The ensureChannelSlots function in scripts/update-app-upgrade-config.ts handles a key part of this chapter's functionality:
}
entry.channels = ensureChannelSlots(entry.channels)
const channelUpdated = await applyChannelUpdate(entry, segment, releaseInfo, skipReleaseValidation)
if (!channelUpdated) {
return { versions, updated: false }
}
if (shouldRename && existingKey) {
delete versionsCopy[existingKey]
}
entry.metadata = {
segmentId: segment.id,
segmentType: segment.type
}
entry.minCompatibleVersion = segment.minCompatibleVersion
entry.description = segment.description
versionsCopy[targetKey] = entry
return {
versions: sortVersionMap(versionsCopy),
updated: true
}
}
function findVersionKeyBySegment(versions: Record<string, VersionEntry>, segmentId: string): string | null {
for (const [key, value] of Object.entries(versions)) {
if (value.metadata?.segmentId === segmentId) {
return key
}This function is important because it defines how Cherry Studio Tutorial: Multi-Provider AI Desktop Workspace for Teams implements the patterns covered in this chapter.
The applyChannelUpdate function in scripts/update-app-upgrade-config.ts handles a key part of this chapter's functionality:
entry.channels = ensureChannelSlots(entry.channels)
const channelUpdated = await applyChannelUpdate(entry, segment, releaseInfo, skipReleaseValidation)
if (!channelUpdated) {
return { versions, updated: false }
}
if (shouldRename && existingKey) {
delete versionsCopy[existingKey]
}
entry.metadata = {
segmentId: segment.id,
segmentType: segment.type
}
entry.minCompatibleVersion = segment.minCompatibleVersion
entry.description = segment.description
versionsCopy[targetKey] = entry
return {
versions: sortVersionMap(versionsCopy),
updated: true
}
}
function findVersionKeyBySegment(versions: Record<string, VersionEntry>, segmentId: string): string | null {
for (const [key, value] of Object.entries(versions)) {
if (value.metadata?.segmentId === segmentId) {
return key
}
}
return nullThis function is important because it defines how Cherry Studio Tutorial: Multi-Provider AI Desktop Workspace for Teams implements the patterns covered in this chapter.
flowchart TD
A[getBaseVersion]
B[createEmptyVersionEntry]
C[ensureChannelSlots]
D[applyChannelUpdate]
E[buildFeedUrls]
A --> B
B --> C
C --> D
D --> E