# 编程

> 让 Dvina 在你电脑上的项目中编写代码，逐一检查更改，然后直接在聊天中提交并创建拉取请求。

Dvina 在你电脑上的项目中编写代码，同时参考笔记、讨论和背后的原因。你只需说明需求、检查更改并交付成果，所有操作都在你处理其他事务的同一个应用中完成。

## 开始之前

编程功能内置于 Mac、Windows 和 Linux 上的 Dvina 桌面应用，无需单独安装。至少有一台电脑需要安装 Dvina；其他所有设备都可以发起任务并跟进进展。

要获取桌面应用，请参阅[下载并安装 Dvina](/docs/use-dvina/get-started/install)。

## 打开项目

项目是你电脑上的一个文件夹，可以是代码仓库，也可以是普通文件夹。

1. 在桌面应用中，打开 Dock 并选择项目行（**项目**）。
2. 选择**打开…**来选取文件夹或代码仓库，或选择**新建项目…**在这台电脑上创建新文件夹。

创建新项目时，开启**创建 Git 仓库**以保留每次更改的历史记录，这样就能撤销 Dvina 的编辑。

聊天会在你选择的项目中执行操作。如果是代码项目，Dock 还会显示其分支。

## 提出任务

描述你的需求，例如“让 CSV 导出使用正确的日期”。Dvina 会在你的电脑上将其作为任务执行，你可以继续聊天或启动更多任务。多个任务可以在同一个仓库中开展工作，并自行决定谁先提交。

编写代码前，Dvina 会阅读项目及其相关上下文：它会搜索你过去的聊天和文件，了解背后的原因。它也会遵循项目中的 AGENTS.md 或 CLAUDE.md。

## 检查更改

每个任务的回复都会附上更改，显示在以该任务命名、标有**可供检查**的卡片中。

- **查看更改内容：**选择**更改**，在侧边面板中查看每个文件的更改。选择**文件**可以浏览项目。
- **撤销一轮更改：**在修改了文件的回复下方，选择显示更改文件数量的那一行，再选择**撤销**，并确认**撤销这一轮？**。文件会恢复到这一轮更改前的状态，之后所做的更改会保留。

## 提交并创建拉取请求

1. 在任务卡片中，选择**提交**。
2. **提交更改**会列出将提交到你的分支的文件，并提供建议的**标题**和**消息**。选择**提交**。此操作不会推送任何内容。
3. 要创建拉取请求，选择**推送并创建 PR**。Dvina 会先推送当前分支，再创建拉取请求。未提交的文件不会包含在内。

拉取请求使用你自己的 Git 登录身份创建。Dvina 会在 GitHub 或 GitLab 上创建拉取请求；对于其他托管平台，则会在浏览器中打开该平台的新建拉取请求页面。完成后，选择**查看 PR**。

## 操作审批

构建和测试会直接运行。删除文件、推送、修改数据库、部署以及任何涉及密钥的操作，都需要先获得你的同意。卡片会说明原因，例如 **运行此命令？**，并标注 **会删除文件** 或 **会修改数据库**。你可以选择 **允许** 或 **拒绝**。管理员可以设置哪些操作始终需要询问。

> [!IMPORTANT]
> 未经你的同意，不会推送任何内容。你的项目就是电脑上的一个文件夹，借助 Git，Dvina 所做的每一处修改都可以撤销。

## 在模拟器上测试

在桌面应用中，Dvina 可以在这台电脑上以用户实际使用的方式试用你的应用：在浏览器中、在 Mac 上的 iOS 模拟器中，或在 Mac、Windows 或 Linux 上的 Android 模拟器中。

1. 打开 Dock，选择标有 **设备** 的一行。
2. 在 **此设备** 下，选择 **浏览器**、**iOS 模拟器** 或 **Android 模拟器**。

对应窗格会在侧边面板中打开。如果模拟器尚未启动，打开时会自动启动。要使用其他设备，请选择窗格顶部的 **选择设备**；每台设备都会显示其系统，以及 **运行中** 或 **已关闭** 状态。

要显示或隐藏浏览器，在 Mac 上按 <kbd>⌘</kbd> <kbd>⇧</kbd> <kbd>B</kbd>，在 Windows 和 Linux 上按 <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>B</kbd>。如果 Dvina 正在你未查看的窗格中操作，**设备** 一行会显示一个圆点。

### 允许 Dvina 使用设备

Dvina 首次使用模拟器时会请求许可，例如 **允许 Dvina 使用 iPhone 17 Pro？**。因为 Dvina 能看到设备屏幕，所以请勿在其中登录你的真实账号。选择 **允许** 或 **拒绝**。设备会记住你的选择，换一个聊天也不会再次询问。在你允许之前，窗格会显示 **允许 Dvina 使用此设备**。

Dvina 操作时，窗格会显示 **Dvina 正在使用此设备**，聊天中也会实时显示设备画面。选择 **放大查看** 可查看更大的画面。在设备上发送、付款和删除，每次都需要先获得你的同意。

要亲自操作设备，请选择 **接管**。你的点击和按键会传递到设备，你还可以按 **主屏幕**，在 Android 上也可以按 **返回** 和 **最近使用的应用**。完成后，选择 **交还控制权**，Dvina 就会继续操作。

### 设置 iOS 模拟器

如果尚未设置 iOS 模拟器，选择对应的一行会打开 **设置 iOS 模拟器** 检查清单。每完成一步，该步骤就会自动勾选，即使你是在其他地方完成的。

1. **安装 Xcode：** 选择 **打开 App Store**。Xcode 免费，大小约为 7 GB；安装完成后，打开一次。
2. **选择 Xcode：** 选择 **复制命令**，然后在终端中运行。该命令会要求输入你的密码，因此 Dvina 不会代你运行。
3. **添加 iOS 模拟器：** 在 Xcode 中，前往 Settings › Components 并获取 iOS，或在终端中运行命令。
4. **创建设备：** 选择 **创建 iPhone**。此步骤不会下载任何内容。

### 设置 Android 模拟器

如果尚未设置 Android 模拟器，选择对应的一行会打开 **设置 Android 模拟器** 检查清单。

1. **安装 Android Studio：** 选择 **获取 Android Studio**。它会安装模拟器运行所需的组件；安装完成后，打开一次。
2. **添加模拟器和平台工具：** 在终端中运行命令，或在 Android Studio › SDK Manager 中添加。
3. **启用硬件加速：** 在 Windows 和 Linux 上，请自行运行命令，因为这需要你的密码或管理员权限。然后，在 Linux 上注销并重新登录，或在 Windows 上重启。Mac 无需执行此步骤。
4. **添加系统映像：** 在终端中运行命令，或在 Android Studio › SDK Manager 中添加。下载文件较大。
5. **创建模拟器：** 选择 **创建模拟器**。此步骤不会下载任何内容。

如果管理员关闭了模拟器，对应的行会显示 **已被管理员关闭**。

## 随时随地工作

你可以在手机或网页上，通过聊天提出工作需求。Dvina 会在你电脑上的项目中完成工作，所做的更改会等待你审核。你的电脑需要保持开机，并打开 Dvina。

## 适用场景

- 你正在开发实际的软件，希望工作时能参考完整的背景信息：笔记、决策和上个月的讨论。
- 你希望在离开办公桌时，也能完成修复。
- 你希望同时推进多项更改，并能逐一审核。

## 提示

- **写下你的工作规范。** 在 AGENTS.md 或 CLAUDE.md 中说明你的工作方式，Dvina 会遵循这些规范。
- **在手机上测试。** 正在开发应用？Dvina 可以在 iPhone 模拟器或 Android 模拟器中测试，像你的用户一样逐步点击操作。参阅[在模拟器或仿真器上测试](#test-on-a-simulator-or-emulator)。
- **你不是开发者？** 如果想制作可用的应用和页面，请改用[创建](/docs/use-dvina/features/create)。

## 相关内容

- [项目](/docs/use-dvina/features/projects)
- [任务](/docs/use-dvina/features/tasks)
- [电脑操作](/docs/use-dvina/features/computer-use)
- [安装](/docs/use-dvina/get-started/install)
