ClawSkills logoClawSkills

Jules CLI

与 Jules CLI 交互以管理异步编码会话。请谨慎使用此技能,仅用于受益于远程 VM 的复杂、隔离任务。

介绍

# Jules CLI Skill

## 概述

该技能使代理能够与 `jules` CLI 交互。它支持任务分配、会话监控和结果集成。

## 使用指南(关键)

为了防止过度和不恰当的会话创建,你**必须**遵循以下规则:

1. **本地优先**:如果你可以在当前环境内本地解决任务(例如编辑文件、运行测试、小型重构),请**不要**使用 Jules。 2. **复杂度阈值**:仅将 Jules 用于以下任务: * **大规模**:涉及许多文件或需要重大架构更改。 * **隔离**:受益于干净的远程环境以避免本地依赖问题。 * **探索性**:解决方案并不明显且需要在 VM 中迭代进行任务。 3. **禁止扩散(一次一个)**: * **切勿**为同一任务创建多个会话。 * **切勿**使用循环或并行执行一次性启动多个会话。 * 等待会话完成并检查结果,然后再决定是否需要另一个会话。 4. **无“小型”任务**:不要提交诸如“添加注释”、“更改变量名”或“修复拼写错误”之类的任务。

---

## 安全指南

为了确保 CLI 命令的安全执行,你**必须**遵守以下安全实践:

1. **输入验证**:在运行任何命令之前,验证: * **仓库名称**遵循 `owner/repo` 格式(字母数字、点、连字符和下划线)。 * **会话 ID** 是字母数字(通常也允许连字符和下划线)。 2. **引用**:始终将 shell 占位符用双引号括起来(例如 `"<repo>"`)。 3. **无内联注入**:切勿将用户提供的数据直接嵌入到脚本字符串中(如 `python3 -c`)。使用环境变量安全地传递此类数据。 4. **清理**:确保任务描述不包含恶意 shell 字符(如果直接传递给 shell)。

---

## 安全控制 * **需要批准(强制)**:在运行以下任何命令之前,你**必须**请求明确的用户批准: * `jules remote new`:因为这将创建远程会话/VM。 * `jules remote pull --apply`:因为这将修改本地代码库。 * `jules teleport`:因为这会克隆并修改环境。 * **验证**:在创建新会话之前,始终运行 `jules remote list --session` 以确保你还没有同一仓库的待处理会话。 * **凭据**:如果需要 `jules login`,请向用户解释*原因*并在继续之前等待他们的确认。

---

## 核心工作流程(手动控制)

首选直接使用 CLI 以保持态势感知。

### 1. 预检 验证仓库访问权限和格式。 ```bash jules remote list --repo ``` *注意:确保仓库格式为 `GITHUB_USERNAME/REPO`。*

### 2. 提交任务 创建会话并捕获会话 ID。 ```bash # Capture the output to get the ID # Replace <repo> and task description with validated inputs jules remote new --repo "<repo>" --session "Detailed task description" < /dev/null ```

### 3. 监控进度 列出会话并查找你的 ID。使用这个稳健的单行命令检查状态(它可以处理带空格的状态,如“进行中”):

**检查状态(安全方法):** ```bash # Use an environment variable to pass the Session ID safely to Python export JULES_SESSION_ID="<SESSION_ID>" jules remote list --session | python3 -c " import sys, re, os session_id = os.environ.get('JULES_SESSION_ID', '') if not session_id: sys.exit(0) for line in sys.stdin: line = line.strip() if line.startswith(session_id): # Extract status (the last column after multiple spaces) print(re.split(r'\s{2,}', line)[-1]) " unset JULES_SESSION_ID ```

### 4. 集成结果 一旦状态为**已完成**,拉取并应用更改。 ```bash # Replace <SESSION_ID> with the validated Session ID jules remote pull --session "<SESSION_ID>" --apply < /dev/null ```

---

## 错误处理与故障排除

* **未找到仓库**:使用 `jules remote list --repo` 验证格式。它必须与 GitHub 路径匹配。 * **TTY 错误**:对于使用原始 `jules` 命令的非交互式自动化,始终使用 `< /dev/null`。 * **凭据**:如果看到登录错误,请确保 `HOME` 设置正确或运行 `jules login`。

---

## 命令参考

| 命令 | 用途 | | :--- | :--- | | `jules remote list --repo` | 验证可用仓库及其确切名称。 | | `jules remote list --session` | 列出活动和过去的会话以检查状态。 | | `jules remote new` | 创建一个新的编码任务。 | | `jules remote pull` | 应用已完成会话的更改。 | | `jules teleport "<id>"` | 克隆并应用更改(适用于新环境)。 |

更多产品