1. 引言

TRAE 是字节跳动推出的 AI 原生集成开发环境(IDE),其核心亮点之一就是 SOLO 模式。SOLO 模式允许开发者以自然语言对话的方式,让 AI 独立完成从需求分析、代码编写、调试修复到运行验证的完整开发闭环。本文将带你全面了解 TRAE SOLO 模式的核心概念、工作原理、使用流程,并通过丰富的代码实例演示如何在实际项目中高效使用它。

2. 什么是 TRAE SOLO 模式

SOLO 模式是 TRAE IDE 内置的一种 AI 自主编程模式。在该模式下,AI 扮演一个"独立开发者"的角色,能够理解你的自然语言需求,自主规划任务、编写代码、执行命令、排查错误,并在完成后向你汇报结果。

与传统的"代码补全"或"对话生成代码片段"不同,SOLO 模式具备以下关键能力:

  • 多文件操作:可以同时创建、修改项目中的多个文件。
  • 命令执行:能够运行终端命令,如安装依赖、执行测试、启动服务。
  • 自主排错:运行出错时,AI 会读取报错信息并自动修复。
  • 上下文感知:能够理解项目结构、已有代码和依赖关系。

3. SOLO 模式的工作原理

SOLO 模式的核心是一个 Agent 循环(Agent Loop)。当用户提交需求后,AI 会进入一个"思考—行动—观察"的循环,直到任务完成或达到终止条件。

其简化流程如下:

flowchart TD
    A[用户提交自然语言需求] --> B[AI 理解并拆解任务]
    B --> C[规划执行步骤]
    C --> D[调用工具: 读写文件/执行命令]
    D --> E{运行结果是否正常?}
    E -->|否| F[读取报错并修复]
    F --> D
    E -->|是| G[汇总结果并汇报]
    G --> H[等待用户确认或下一步指令]

在技术实现上,SOLO 模式基于大语言模型(LLM)的 函数调用(Function Calling) 能力,将 IDE 的文件读写、终端执行等能力封装为可供模型调用的工具函数。模型在每一轮推理中决定调用哪个工具、传入什么参数,然后观察工具返回结果,继续下一步推理。

4. 环境准备与快速开始

在开始使用 SOLO 模式之前,需要先完成以下准备工作:

  1. 下载并安装 TRAE IDE(支持 Windows 和 macOS)。
  2. 使用字节跳动账号登录,并确保网络可以访问 AI 服务。
  3. 打开一个项目文件夹,或新建一个空白项目。

完成准备后,可以通过以下两种方式进入 SOLO 模式:

  • 点击侧边栏的 SOLO 模式 图标。
  • 使用快捷键 Ctrl + Shift + S(Windows)或 Cmd + Shift + S(macOS)。

进入后,你会看到一个对话输入框,在这里用自然语言描述你的需求即可。

5. 实战示例:用 SOLO 模式创建一个 Python 待办事项应用

下面我们通过一个完整的实战案例,演示 SOLO 模式从零构建一个 Python 命令行待办事项应用的全过程。

5.1 提交需求

在 SOLO 模式对话框中输入以下需求:

请帮我创建一个 Python 命令行待办事项应用,支持添加任务、列出任务、标记任务为已完成、删除任务,数据保存到本地 JSON 文件。

5.2 AI 生成的项目结构

SOLO 模式会自动规划并创建以下文件:

todo_app/
├── todo.py          # 主程序入口
├── storage.py       # 数据持久化模块
└── requirements.txt # 依赖声明(标准库,无需额外依赖)

5.3 生成的代码示例

以下是 SOLO 模式自动生成的 storage.py 文件,负责任务的持久化存储:

import json
import os
from typing import List, Dict

DATA_FILE = "tasks.json"


def load_tasks() -> List[Dict]:
    """从 JSON 文件加载任务列表。"""
    if not os.path.exists(DATA_FILE):
        return []
    with open(DATA_FILE, "r", encoding="utf-8") as f:
        return json.load(f)


def save_tasks(tasks: List[Dict]) -> None:
    """将任务列表保存到 JSON 文件。"""
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump(tasks, f, ensure_ascii=False, indent=2)

同时生成的 todo.py 主程序如下:

import sys
from storage import load_tasks, save_tasks


def add_task(title: str) -> None:
    tasks = load_tasks()
    task = {"id": len(tasks) + 1, "title": title, "done": False}
    tasks.append(task)
    save_tasks(tasks)
    print(f"已添加任务: {title}")


def list_tasks() -> None:
    tasks = load_tasks()
    if not tasks:
        print("当前没有任务。")
        return
    for task in tasks:
        status = "[x]" if task["done"] else "[ ]"
        print(f"{status} {task['id']}. {task['title']}")


def mark_done(task_id: int) -> None:
    tasks = load_tasks()
    for task in tasks:
        if task["id"] == task_id:
            task["done"] = True
            save_tasks(tasks)
            print(f"任务 {task_id} 已标记为完成。")
            return
    print(f"未找到任务 {task_id}。")


def delete_task(task_id: int) -> None:
    tasks = load_tasks()
    new_tasks = [t for t in tasks if t["id"] != task_id]
    if len(new_tasks) == len(tasks):
        print(f"未找到任务 {task_id}。")
        return
    save_tasks(new_tasks)
    print(f"任务 {task_id} 已删除。")


def main() -> None:
    if len(sys.argv) < 2:
        print("用法: python todo.py <add|list|done|delete> [参数]")
        return

    cmd = sys.argv[1]
    if cmd == "add" and len(sys.argv) >= 3:
        add_task(" ".join(sys.argv[2:]))
    elif cmd == "list":
        list_tasks()
    elif cmd == "done" and len(sys.argv) >= 3:
        mark_done(int(sys.argv[2]))
    elif cmd == "delete" and len(sys.argv) >= 3:
        delete_task(int(sys.argv[2]))
    else:
        print("无效命令或参数。")


if __name__ == "__main__":
    main()

5.4 运行与验证

SOLO 模式会自动在终端中执行以下命令来验证程序:

python todo.py add "学习 TRAE SOLO 模式"
python todo.py add "编写技术文章"
python todo.py list
python todo.py done 1
python todo.py list

预期输出如下:

已添加任务: 学习 TRAE SOLO 模式
已添加任务: 编写技术文章
[ ] 1. 学习 TRAE SOLO 模式
[ ] 2. 编写技术文章
任务 1 已标记为完成。
[x] 1. 学习 TRAE SOLO 模式
[ ] 2. 编写技术文章

6. 进阶用法:多文件项目与重构

SOLO 模式不仅适用于小工具,也能处理复杂的多文件项目。下面演示如何让 SOLO 模式对现有代码进行重构。

6.1 提交重构需求

假设我们希望把上面的待办应用改造成使用 SQLite 数据库存储,可以在 SOLO 模式中输入:

请把待办事项应用的数据存储从 JSON 文件改为 SQLite 数据库,保持命令行接口不变。

6.2 生成的重构代码

SOLO 模式会修改 storage.py,生成如下基于 SQLite 的实现:

import sqlite3
from typing import List, Dict

DB_FILE = "tasks.db"


def _get_connection() -> sqlite3.Connection:
    conn = sqlite3.connect(DB_FILE)
    conn.row_factory = sqlite3.Row
    return conn


def init_db() -> None:
    with _get_connection() as conn:
        conn.execute("""
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                title TEXT NOT NULL,
                done INTEGER DEFAULT 0
            )
        """)


def load_tasks() -> List[Dict]:
    init_db()
    with _get_connection() as conn:
        rows = conn.execute("SELECT id, title, done FROM tasks ORDER BY id").fetchall()
        return [{"id": r["id"], "title": r["title"], "done": bool(r["done"])} for r in rows]


def save_tasks(tasks: List[Dict]) -> None:
    # 为保持接口兼容,此函数在 SQLite 版本中不再需要
    pass


def add_task(title: str) -> None:
    init_db()
    with _get_connection() as conn:
        conn.execute("INSERT INTO tasks (title) VALUES (?)", (title,))


def mark_done(task_id: int) -> None:
    init_db()
    with _get_connection() as conn:
        conn.execute("UPDATE tasks SET done = 1 WHERE id = ?", (task_id,))


def delete_task(task_id: int) -> None:
    init_db()
    with _get_connection() as conn:
        conn.execute("DELETE FROM tasks WHERE id = ?", (task_id,))

同时,SOLO 模式会同步更新 todo.py 中的调用逻辑,使其适配新的存储层接口。

7. 常见问题与最佳实践

7.1 常见问题

问题原因解决方案
AI 生成的代码运行报错依赖缺失或环境不匹配在需求中明确指定语言版本和依赖,或让 AI 先执行安装命令
AI 修改了不该改的文件需求描述不够精确在需求中明确"只修改 xxx 文件"或"不要改动 xxx"
任务执行时间过长需求过于庞大复杂拆分为多个小任务,分步提交给 SOLO 模式
AI 不理解业务逻辑缺少领域上下文在对话中补充背景说明,或先让 AI 阅读相关文档

7.2 最佳实践

  • 需求要具体:明确输入、输出、技术栈和约束条件,避免模糊描述。
  • 分步推进:复杂功能拆分为多个小迭代,每步验证后再继续。
  • 善用对话上下文:在后续对话中引用之前的修改,保持上下文连贯。
  • 代码审查不可少:AI 生成的代码仍需人工审查,尤其是涉及安全、并发和数据的部分。
  • 善用版本控制:在让 SOLO 模式做大改动前,先提交一次 Git 快照,便于回滚。

8. 总结

TRAE SOLO 模式将 AI 从"代码助手"提升为"独立开发者",能够自主完成从需求到交付的完整闭环。通过本文的实战示例可以看到,无论是创建新项目、编写功能代码,还是对现有项目进行重构,SOLO 模式都能高效胜任。

当然,SOLO 模式并非万能,它仍然需要开发者提供清晰的需求、进行必要的代码审查,并在关键环节做出决策。合理地将 SOLO 模式融入日常开发流程,可以显著提升开发效率,让开发者把更多精力投入到架构设计和业务创新上。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐