> 技术文档 > 【Jules】Jules AI 助手:快速入门指南_jules如何使用

【Jules】Jules AI 助手:快速入门指南_jules如何使用


文章目录

    • 简介
    • 登录与配置
      • 登录步骤
    • 连接 GitHub
    • 创建第一个任务
    • 任务流程
    • 启用通知
    • 最佳实践
    • 代码示例
    • 常见问题解答
      • Jules 支持哪些编程语言?
      • Jules 能否处理私有仓库
      • 我可以为 Jules 指定特定的 Git 分支吗?
      • Jules 能否安装项目依赖项?
      • 如何处理 Jules 生成的不正确代码?

简介

【Jules】Jules AI 助手:快速入门指南_jules如何使用

Jules 是 Google 推出的一款实验性 AI 编码助手,它能帮助开发者修复错误、添加文档和构建新功能。Jules 最大的特点是异步工作,这意味着当它处理任务时,你可以转而处理其他事情。Jules 与 GitHub 集成,能够理解你的代码库,并根据你的指令进行工作。

#mermaid-svg-ZyNc3QeCeod9OodG {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .error-icon{fill:#552222;}#mermaid-svg-ZyNc3QeCeod9OodG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZyNc3QeCeod9OodG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZyNc3QeCeod9OodG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZyNc3QeCeod9OodG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZyNc3QeCeod9OodG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZyNc3QeCeod9OodG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZyNc3QeCeod9OodG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZyNc3QeCeod9OodG .marker.cross{stroke:#333333;}#mermaid-svg-ZyNc3QeCeod9OodG svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZyNc3QeCeod9OodG .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .cluster-label text{fill:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .cluster-label span{color:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .label text,#mermaid-svg-ZyNc3QeCeod9OodG span{fill:#333;color:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .node rect,#mermaid-svg-ZyNc3QeCeod9OodG .node circle,#mermaid-svg-ZyNc3QeCeod9OodG .node ellipse,#mermaid-svg-ZyNc3QeCeod9OodG .node polygon,#mermaid-svg-ZyNc3QeCeod9OodG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZyNc3QeCeod9OodG .node .label{text-align:center;}#mermaid-svg-ZyNc3QeCeod9OodG .node.clickable{cursor:pointer;}#mermaid-svg-ZyNc3QeCeod9OodG .arrowheadPath{fill:#333333;}#mermaid-svg-ZyNc3QeCeod9OodG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZyNc3QeCeod9OodG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZyNc3QeCeod9OodG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZyNc3QeCeod9OodG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZyNc3QeCeod9OodG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZyNc3QeCeod9OodG .cluster text{fill:#333;}#mermaid-svg-ZyNc3QeCeod9OodG .cluster span{color:#333;}#mermaid-svg-ZyNc3QeCeod9OodG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZyNc3QeCeod9OodG :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 用户 创建任务 Jules生成计划 用户确认计划 Jules执行任务 提交更改 用户审查

登录与配置

使用 Jules 的第一步是登录并配置你的账户。

登录步骤

  1. 访问 jules.google.com
  2. 使用你的 Google 账户登录
  3. 首次登录时,接受隐私声明

连接 GitHub

Jules 需要访问你的仓库才能工作。以下是连接 GitHub 的步骤:

  1. 点击 “Connect to GitHub account”(连接到 GitHub 账户)
  2. 完成 GitHub 登录流程
  3. 选择你想要让 Jules 访问的仓库(可以是全部或特定仓库)
  4. 你将被重定向回 Jules。如果没有,请尝试刷新页面

连接成功后,你将看到一个仓库选择器,可以选择你希望 Jules 处理的仓库,以及一个提示输入框。

创建第一个任务

Jules 会在虚拟机中克隆你的代码、安装依赖项并修改文件。以下是创建任务的步骤:

  1. 从仓库选择器中选择一个仓库
  2. 选择你希望 Jules 处理的分支(默认会选择默认分支)
  3. 编写清晰、具体的提示。例如:在 utils.js 中为 parseQueryString 函数添加测试
  4. (可选)添加环境设置脚本
  5. 点击 “Give me a plan”(给我一个计划)

【Jules】Jules AI 助手:快速入门指南_jules如何使用

提交任务后,Jules 会生成一个计划。你可以在进行任何代码更改之前审查并批准该计划。

#mermaid-svg-NMbHzXnllavWwBr3 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NMbHzXnllavWwBr3 .error-icon{fill:#552222;}#mermaid-svg-NMbHzXnllavWwBr3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NMbHzXnllavWwBr3 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NMbHzXnllavWwBr3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NMbHzXnllavWwBr3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NMbHzXnllavWwBr3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NMbHzXnllavWwBr3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NMbHzXnllavWwBr3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NMbHzXnllavWwBr3 .marker.cross{stroke:#333333;}#mermaid-svg-NMbHzXnllavWwBr3 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NMbHzXnllavWwBr3 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-NMbHzXnllavWwBr3 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-NMbHzXnllavWwBr3 .actor-line{stroke:grey;}#mermaid-svg-NMbHzXnllavWwBr3 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-NMbHzXnllavWwBr3 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-NMbHzXnllavWwBr3 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-NMbHzXnllavWwBr3 .sequenceNumber{fill:white;}#mermaid-svg-NMbHzXnllavWwBr3 #sequencenumber{fill:#333;}#mermaid-svg-NMbHzXnllavWwBr3 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-NMbHzXnllavWwBr3 .messageText{fill:#333;stroke:#333;}#mermaid-svg-NMbHzXnllavWwBr3 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-NMbHzXnllavWwBr3 .labelText,#mermaid-svg-NMbHzXnllavWwBr3 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-NMbHzXnllavWwBr3 .loopText,#mermaid-svg-NMbHzXnllavWwBr3 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-NMbHzXnllavWwBr3 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-NMbHzXnllavWwBr3 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-NMbHzXnllavWwBr3 .noteText,#mermaid-svg-NMbHzXnllavWwBr3 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-NMbHzXnllavWwBr3 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-NMbHzXnllavWwBr3 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-NMbHzXnllavWwBr3 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-NMbHzXnllavWwBr3 .actorPopupMenu{position:absolute;}#mermaid-svg-NMbHzXnllavWwBr3 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-NMbHzXnllavWwBr3 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-NMbHzXnllavWwBr3 .actor-man circle,#mermaid-svg-NMbHzXnllavWwBr3 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-NMbHzXnllavWwBr3 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 用户 Jules GitHub 登录并选择仓库 克隆仓库 提交任务请求 分析代码和任务 生成执行计划 审核并批准计划 执行任务 提交代码更改供审查 确认并合并更改 用户 Jules GitHub

任务流程

当你提交任务后,Jules 会遵循以下流程:

  1. 分析任务:Jules 会理解你的请求并分析代码库
  2. 生成计划:它会创建一个执行任务的详细计划
  3. 等待批准:你需要审查并批准计划
  4. 执行任务:Jules 修改代码并运行测试
  5. 提交更改:完成后,Jules 会提供更改内容供你审查

启用通知

你可以在 Jules 运行任务的同时处理其他事情。要及时获取任务进度通知:

  1. 当系统提示时,启用浏览器通知
  2. 随时前往 Settings → notifications 启用或禁用通知

当任务完成或需要你的输入时,系统会通知你。

最佳实践

为了充分利用 Jules,以下是一些最佳实践:

  1. 明确的指令:提供清晰、具体的任务描述
  2. 合适的任务范围:从小型、定义明确的任务开始
  3. 提供上下文:包含相关文件路径和函数名称
  4. 指定测试要求:说明如何验证更改是否正确
  5. 环境设置:如果项目有特殊的设置要求,请在提交任务时提供

#mermaid-svg-3LROKG2tYfGsiGfj {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .error-icon{fill:#552222;}#mermaid-svg-3LROKG2tYfGsiGfj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3LROKG2tYfGsiGfj .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-3LROKG2tYfGsiGfj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3LROKG2tYfGsiGfj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3LROKG2tYfGsiGfj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3LROKG2tYfGsiGfj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3LROKG2tYfGsiGfj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3LROKG2tYfGsiGfj .marker.cross{stroke:#333333;}#mermaid-svg-3LROKG2tYfGsiGfj svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3LROKG2tYfGsiGfj .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .cluster-label text{fill:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .cluster-label span{color:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .label text,#mermaid-svg-3LROKG2tYfGsiGfj span{fill:#333;color:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .node rect,#mermaid-svg-3LROKG2tYfGsiGfj .node circle,#mermaid-svg-3LROKG2tYfGsiGfj .node ellipse,#mermaid-svg-3LROKG2tYfGsiGfj .node polygon,#mermaid-svg-3LROKG2tYfGsiGfj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3LROKG2tYfGsiGfj .node .label{text-align:center;}#mermaid-svg-3LROKG2tYfGsiGfj .node.clickable{cursor:pointer;}#mermaid-svg-3LROKG2tYfGsiGfj .arrowheadPath{fill:#333333;}#mermaid-svg-3LROKG2tYfGsiGfj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3LROKG2tYfGsiGfj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3LROKG2tYfGsiGfj .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-3LROKG2tYfGsiGfj .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-3LROKG2tYfGsiGfj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3LROKG2tYfGsiGfj .cluster text{fill:#333;}#mermaid-svg-3LROKG2tYfGsiGfj .cluster span{color:#333;}#mermaid-svg-3LROKG2tYfGsiGfj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3LROKG2tYfGsiGfj :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 好的任务示例 明确的指令 合适的范围 具体的文件路径 测试要求 环境细节

代码示例

以下是一个使用 C# 的代码示例,演示如何创建一个可供 Jules 处理的函数:

using System;using System.Collections.Generic;using System.Linq;/// /// 查询字符串解析器/// public class QueryStringParser{ ///  /// 解析查询字符串并返回键值对字典 ///  /// 要解析的查询字符串,格式如:\"name=value&key=data\" /// 包含键值对的字典 public static Dictionary<string, string> ParseQueryString(string queryString) { // 创建一个新的字典来存储解析后的键值对 var result = new Dictionary<string, string>(); // 如果查询字符串为空,则返回空字典 if (string.IsNullOrWhiteSpace(queryString)) { return result; } // 如果查询字符串以问号开头,删除问号 if (queryString.StartsWith(\"?\")) { queryString = queryString.Substring(1); } // 按 & 符号分割查询字符串为多个参数 string[] parameters = queryString.Split(\'&\'); // 遍历每个参数 foreach (var parameter in parameters) { // 跳过空参数 if (string.IsNullOrWhiteSpace(parameter)) { continue; } // 按 = 符号分割每个参数为键和值 int equalsIndex = parameter.IndexOf(\'=\'); // 处理没有值的参数(如 \"param\",而不是 \"param=value\") if (equalsIndex < 0) { // 将没有值的参数键添加到字典中,值设为空字符串 result[Uri.UnescapeDataString(parameter)] = string.Empty; } else { // 提取键和值,并进行 URL 解码 string key = Uri.UnescapeDataString(parameter.Substring(0, equalsIndex)); string value = equalsIndex < parameter.Length - 1  ? Uri.UnescapeDataString(parameter.Substring(equalsIndex + 1))  : string.Empty; // 将键值对添加到字典中 result[key] = value; } } return result; }}

如果你要向 Jules 提交一个任务来为上述函数编写单元测试,可以这样描述:

为 QueryStringParser 类中的 ParseQueryString 方法编写全面的单元测试。测试应该覆盖以下场景:空查询字符串、带问号的查询字符串、多个参数、URL 编码的参数、没有值的参数。
【Jules】Jules AI 助手:快速入门指南_jules如何使用
编写完成后,可以直接上传至github
【Jules】Jules AI 助手:快速入门指南_jules如何使用
上传完成后可以在github中查看
【Jules】Jules AI 助手:快速入门指南_jules如何使用

常见问题解答

Jules 支持哪些编程语言?

Jules 支持大多数主流编程语言,包括但不限于:JavaScript、TypeScript、Python、Java、C#、Go、Rust 等。

Jules 能否处理私有仓库?

是的,Jules 可以处理你授权访问的私有 GitHub 仓库。

我可以为 Jules 指定特定的 Git 分支吗?

是的,在创建任务时,你可以选择 Jules 应该在哪个分支上工作。

Jules 能否安装项目依赖项?

是的,Jules 会尝试安装项目依赖项。对于复杂的设置,你可以提供额外的环境设置脚本。

如何处理 Jules 生成的不正确代码?

如果 Jules 生成的代码不符合预期,你可以提供反馈并要求它进行修改,或者拒绝其提出的更改。## 学习资源

要深入了解 Jules 的使用,可以参考以下资源:

  1. Jules 官方文档
  2. Jules 任务创建页面

【Jules】Jules AI 助手:快速入门指南_jules如何使用