工作区

Workspace 的概念

一个 workspace 就是一个用来容纳 assistants、dialogs 和 artifacts 的文件夹式容器。它在 src/utils/types.ts 中的数据模型是:

interface Workspace {
  id: string
  name: string
  avatar: Avatar
  type: 'workspace'
  parentId: string     // 顶层时为 '$root'
  vars: Record<string, string>       // 工作区级变量
  indexContent: string                // 工作区首页 markdown 内容
  defaultAssistantId?: string
  lastDialogId?: string
  listOpen: { assistants: boolean, artifacts: boolean, dialogs: boolean }
}

vars 会通过 {{varName}} 形式插入到助手 prompt 中。indexContent 则是在你打开 /workspaces/:wid/ 时展示的那张 markdown 首页。

创建一个 Workspace

  1. 打开左侧抽屉,在 workspace 选择器旁边点击 +,然后选择 Workspace
  2. 填写名称、图标(可以是文本 / SVG / URL / icon / image),也可以顺手填一段 home markdown
  3. 如果需要,还可以添加 workspace 变量。每个 key=value 都可以在这个 workspace 中的任意助手 prompt 里通过 {{key}} 引用

Assistant

Assistant 是一个把 provider、model、prompt、plugins、modelSettings 组合在一起的已保存配置:

interface Assistant {
  id: string
  name: string
  avatar: Avatar
  prompt: string
  promptVars: PromptVar[]
  promptTemplate: string
  provider: Provider
  model?: Model
  modelSettings: { temperature, topP, presencePenalty, frequencyPenalty, maxSteps, maxRetries }
  workspaceId: string
  plugins: AssistantPlugins
  promptRole: 'system' | 'user' | 'assistant'
  contextNum?: number
  stream: boolean
  description?: string
  author?: string
  homepage?: string
}

创建一个 Assistant

  1. 先打开一个 workspace
  2. 在左侧抽屉的 Assistants 区域点击 +
  3. 填写名称和 description(支持 markdown)
  4. 选择 provider 和 model
  5. 编写 prompt。变量有两层来源:一是 workspace 的 vars(始终可用),二是 assistant 自己定义的 promptVars(每次进入对话时要求用户填写)
  6. 选择 prompt template。内置的 default 模板会把 {{system_prompt}}{{history}}{{input}}{{tools}}{{currentTime}}{{workspace_vars}}{{input_vars}} 这些字段拼在一起
  7. 在 chip 区域启用需要的插件
  8. 设置模型参数,例如 temperature(默认 0.6)、topP(1.0)、maxSteps(4)、maxRetries(1)

Dialog

Dialog 就是一条具体的会话线程。它原生支持分支;如果你想理解分支是怎么工作的,可以去看 架构设计 页面中的 branching chat 说明。

创建一个 dialog 的流程:

  1. 在某个 workspace 中,打开左侧抽屉,进入 Dialogs 区域后点击 +
  2. 选择一个 assistant(默认会使用 workspace 的 defaultAssistantId
  3. 输入消息并发送。默认发送快捷键是 Ctrl+Enter(也可以在设置里改)
  4. 如果你在 dialog 头部右键,还可以直接创建一个 sibling dialog,也就是基于同一个 assistant 派生的并行对话

每次对话的临时覆盖

对话头部会显示当前模型名。点它会弹出一个菜单:

  • 可以改成别的模型(写入 dialog.modelOverride
  • 可以退回到 assistant 自己的默认模型(清除 override)
  • 如果 assistant 本身没配置模型,也可以退回到全局默认模型
  • 还可以从你的 Common Models 快捷列表中直接选

在对话进行过程中:

  • 你可以点击任意一条历史 assistant 回复,选择 edit and regenerate。这会创建一条新的分支,并把路由切换过去
  • 可以用 dialog 侧边的分支按钮在多条分支之间来回切换
  • 也可以用 regenerate 快捷键重新跑最后一条 assistant 回复

Prompt 变量

这里一共有三层变量:

  1. Workspace varsworkspace.vars,在整个 workspace 中始终可用
  2. Assistant prompt vars:定义在 assistant 上,会在 dialog 开始时(或 dialog UI 中)收集,并保存到 dialog.inputVars
  3. Dialog input vars:针对当前 dialog 对 assistant prompt vars 的覆盖

变量占位符统一写成 {{varName}}。默认 prompt template 会把 {{workspace_vars}}{{input_vars}} 以 JSON 形式一并塞进 prompt。

Artifacts

Artifact 是 workspace 内部的一种长生命周期、可编辑文档。历史版本保存在 artifacts[].versions[] 中。Artifact 插件可以在 assistant 回复结束后自动抽取一个 artifact(在 Settings → Automatically Extract Artifact 中开关)。编辑器入口在 /workspaces/:wid/artifacts/:aid,通过 workspace 的 Artifacts 区域进入。