> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 提示使用建议

> 关于如何更高效地向 Devin 下达指令和引导的技巧

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<Tip>有关更全面的最佳实践，另请参阅 [高效地指导 Devin](/zh/essential-guidelines/instructing-devin-effectively) 和 [好的指令与不好的指令](/zh/essential-guidelines/good-vs-bad-instructions)。</Tip>

Devin 需要了解你的偏好，以及应该如何检查自己是否在正确的轨道上。如果你没有说明，Devin 会自行判断。我们建议在提示词中遵循一个简单的结构，以确保 Devin 始终保持在正确轨道上，并对自己的工作进行检查：

<CardGroup cols={1}>
  <Card title="What" icon="block-question" horizontal>
    描述你希望 Devin 完成的具体任务。

    **示例**：将我的项目从 Java 7 升级到 Java 8。
  </Card>

  <Card title="How" icon="chalkboard-user" horizontal>
    描述 Devin 在完成任务时的注意事项 (该做与不该做的事，例如使用 Modal 部署等) 。

    **示例**：识别并将已弃用的 Java 7 API 替换为对应的 Java 8 API。分析代码库，发掘可以使用 Java 8 语言特性和 API 的改进点。
  </Card>

  <Card title="Result" icon="print" horizontal>
    描述 Devin 应该验证的预期结果或行为，以便 Devin 知道任务何时完成。

    **示例**：运行测试套件并确认所有测试均成功通过。使用更新后的 Java 8 配置构建项目，并验证应用程序已成功启动并正常运行。
  </Card>
</CardGroup>

<div id="choosing-the-right-tasks">
  ### 选择合适的任务
</div>

在决定将哪些任务交给 Devin 时，优先选择具备以下特征的任务：

1. **清晰的成功标准**

   * 成功与否可以自动验证的任务
   * 具备内置反馈闭环 (测试、编译、lint 检查)
   * 有客观的质量衡量指标

2. **适当的任务范围**

   * 边界定义清晰且需求明确
   * 在你的 codebase 中有明确可遵循的模式
   * 一般来说，那些你可以在三小时或更短时间内完成的任务通常非常适合

3. **具有重复性**

   * 需要多次应用类似变更的任务
   * 存在一些差异，使得纯脚本方案难以处理
   * 有可供参考的现有示例

4. **常见示例**
   * 在多个包中进行版本升级
   * 为尚未覆盖的模块添加测试
   * 将文件迁移为使用新的模式/规范
   * 实现标准化的 UI 组件

<div id="split-complex-tasks-into-simpler-sub-tasks-across-multiple-sessions">
  #### 将复杂任务在多个会话中拆分为更简单的子任务
</div>

如果将复杂项目拆解为清晰的子任务，Devin 更有可能成功完成任务。**例如**，与其在单个会话中要求 Devin 同时升级你的应用代码、测试套件和 CI 配置，你可能会希望将其拆分为三个独立的会话。你可以通过[让 Devin 交给受管理的 Devins](/zh/work-with-devin/advanced-capabilities#managed-devins)并行运行它们。

对于特别复杂的任务，我们建议在多个独立会话中与 Devin 协作，因为**随着会话变长，Devin 的表现有时可能会下降**。

<div id="tell-devin-how-to-check-its-progress">
  #### 告诉 Devin 如何检查其进度
</div>

当你为 Devin 提供清晰的验证步骤来核查其工作时，它的表现会更好。这有助于确保任务被正确完成，并使 Devin 能够及早发现潜在问题。

下面是一些帮助 Devin 验证其工作的常见方式 (非完整列表) ：

1. **明确测试需求**

   * 让 Devin 运行特定的测试套件
   * 定义哪些测试必须通过
   * 如有需要，请求测试覆盖率等指标

2. **设定清晰的检查点和子任务**

   * 将复杂任务拆分为可验证的子任务，并为每个子任务启动一个 Devin 会话
   * 定义每个子任务的成功标准，并可选择在每个子任务中设置检查点
   * 要求 Devin 在完成每个检查点/子任务后进行汇报

3. **告诉 Devin 如何检查自己的工作**

   说明 Devin 应如何检查自己是否走在正确轨道上。例如：

   * 处理数据集时：`"Verify the dataset has at least 500 rows and contains columns X, Y, Z"`
   * 修改 API 时：`"Confirm the endpoint returns status 200 and includes all required fields"`
   * 更新 UI 时：`"Check that the component renders without console errors and matches the design spec"`

你对验证要求越具体，Devin 在无需干预的情况下就能越有把握地推进任务。

<div id="be-clear-and-specific">
  #### 清晰且具体
</div>

向 Devin 提供清晰、详细的指令和需求。例如，你可以：

1. 说明完成任务所需的关键步骤
2. 指定你希望 Devin 使用的具体代码仓库、库、分支等

对 Devin 来说，没有任何信息是“过于显而易见”的，但它会在过程中尽力主动澄清并提出问题。

<div id="use-playbooks">
  #### 使用 Playbooks
</div>

对于重复性或复杂任务，我们建议使用并持续迭代 [Playbooks](/zh/product-guides/creating-playbooks)。Playbooks 是易于复用和共享的提示集合。例如，如果你希望 Devin 处理持续发生的 CI 构建失败，你可以创建一个 Playbook，把 Devin 每次为解决该问题应执行的一般步骤都放进去，而无需在每条提示中重复这些步骤。

<div id="provide-references-or-examples">
  #### 提供参考资料或示例
</div>

在条件允许时，提供与任务相关的文档或示例链接。如果你没有提供任何资源，Devin 可能会自行搜索相关文档。

<div id="jump-in">
  #### 马上开始！
</div>

在 Devin 工作时，你可以像对待其他团队成员一样，随时向 Devin 提问并下达指令！
