Skip to content

桌面端与项目

6. 桌面端应用结构

apps/desktop 是独立的 Tauri workspace。前端由 Vite 构建,Tauri 配置在 src-tauri/tauri.conf.json

6.1 桌面端配置

关键配置:

  • 产品名:DeepAgent Studio
  • 版本:0.0.4
  • bundle identifier:com.deepagent.studio
  • dev server:http://localhost:1420
  • 主窗口:1280x800,最小 900x600,暗色主题,无系统装饰栏。
  • bundle resources:resources/skills/**/*
  • updater:GitHub release 和 download.deepagent.studio 两个 endpoint。
  • Tauri crate features:启用 deepagent-app-corekeychainwebaudioruntimes

6.2 前端主要文件

文件作用
src/main.tsxReact 入口
src/App.tsx顶层状态、导航、会话加载、项目加载、运行流事件处理
src/api.ts所有 Tauri invoke 封装,浏览器模式下提供 mock/fallback
src/types.ts与 Rust DTO 对齐的 TypeScript 类型
src/i18n.ts + src/locales/*.json多语言资源
src/styles.css全局样式
src/update.tsTauri updater 检查与下载

6.3 前端视图

视图/组件功能
OnboardingWizard首次连接 DeepSeek API Key,成功后写入 OS keychain 并进入应用
TitleBar无边框窗口顶部栏、侧栏开关、前进后退
Sidebar项目列表、会话列表、置顶、归档、项目菜单、入口导航
StartView新任务起点、项目入口、项目地图快捷入口
ChatView聊天主界面、消息渲染、工具卡、reasoning、用量、审批、fork/rewind/export
Composer输入框、发送、停止、Plan mode、thinking depth、approval policy 控制
ToolCallCard工具调用统一展示,含 web/office/skill/project-map 等专用摘要
MarkdownTextMarkdown/GFM/math/KaTeX/代码高亮
CommandPalette命令面板
SearchModal会话搜索
SkillsView已安装技能、技能市场、安装弹窗
KnowledgeView + KnowledgeGraph知识条目列表、搜索、图谱、草稿接受/丢弃
PluginsView插件市场/本地插件管理 UI
AutomationView自动化入口占位/展示
SettingsView + SettingsSidebar设置页框架
ProjectMapPanel原生代码图谱浏览、搜索、邻居、影响分析、刷新
ProjectMapDebugView项目地图调试开关和调试视图
GitWorkbenchGit 改动、历史、diff 工作台
TerminalPlugin终端命令面板
FilePreviewPlugin文件元数据、文本提取、图片/PDF/Office 预览
RecordingPlugin音频录制、暂停、恢复、停止、转写和会议纪要
BrowserPlugin简易内嵌浏览器插件
SideChatPlugin侧栏聊天插件
FilesPlugin文件插件入口

6.4 设置页分类

设置组件当前职责
GeneralSettings常规偏好、编辑器、Shell、语言等 UI 项
AppearanceSettings主题、外观选项
PersonalizeSettings个性化偏好
ConnectionsSettings外部连接入口
ConfigSettings模型、技能目录、技能 AI 审查、运行时资源管理
MCPSettingsMCP server 增删改查、启停
HooksSettingshooks.json 编辑与校验
GitSettingsGit 相关选项入口
BrowserSettings浏览器相关选项入口
ComputerSettings计算机/权限相关选项入口
EnvSettings环境变量管理 UI
ArchiveSettings归档会话管理
WorktreeSettingsworktree 设置入口
ShortcutsSettings快捷键说明/配置入口
ProjectMapDebugSettings项目地图调试开关

14. 设置、登录与 Key 管理

首次进入应用时,OnboardingWizard 调用 initializeProject(apiKey)

设计要点:

  • API Key 不落盘明文,启用 keychain feature 后使用系统钥匙串。
  • get_settings 返回 redacted view。
  • clear_api_key 只清除 key,保留部分 UI/目录配置。
  • refresh_models 使用已存 key 重新拉取模型列表。
  • get_balance 使用已存 key 查询账户余额。

15. 项目与工作区管理

项目在此系统中等价于一个本地文件夹。ProjectService 将项目路径、显示名、active 状态、置顶等写入数据库。

功能:

  • 添加项目:add_project(path)
  • 激活项目:set_active_project(path)
  • 移除项目:remove_project(path)
  • 置顶项目:set_project_pinned(path, pinned)
  • 重命名显示名:rename_project(path, name)
  • 打开文件管理器:open_project_in_file_manager(path)
  • 会话列表过滤:隐藏已归档会话;如果会话绑定的项目已不在注册项目列表中,也会过滤。

26. 浏览器预览与桌面运行差异

api.tsgetInvoke() 会检测 window.__TAURI_INTERNALS__

  • 在 Tauri 中:动态 import @tauri-apps/api/core 并调用后端命令。
  • 在普通浏览器中:返回 null,并使用 mock 或抛出“需要桌面 app”的错误。

因此:

  • pnpm dev 适合 UI 样式和组件预览。
  • pnpm tauri dev 才能使用 keychain、文件夹选择、真实聊天、MCP、录音、文件预览、Git 等原生能力。

DeepSeek 原生 Agent Runtime Operating System