Skip to content

SyncBoot AgentScope Java 연동 실무

1. 아키텍처 개요

SyncBoot는 단순한 코드 생성기를 넘어, Spring Boot 런타임 자체에 AgentScope Java (io.agentscope:agentscope-harness)를 내장하여 백엔드 소스 코드 변경, 스키마 유효성 감사, 단위 테스트 실행을 자율 수행하는 디지털 엔지니어 에이전트입니다.


2. Spring Boot 환경 설정 및 의존성 주입

2.1 pom.xml 설정

xml
<dependencies>
    <!-- Spring Boot Starters -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Project Lombok (Mandatory) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- AgentScope Java Harness -->
    <dependency>
        <groupId>io.agentscope</groupId>
        <artifactId>agentscope-harness</artifactId>
        <version>0.3.1</version>
    </dependency>
</dependencies>

3. ReActAgent를 통한 도메인 엔티티 자율 생성 서비스

SyncSeries 표준에 따라 필드 주입(@Autowired)을 엄격히 금지하고 @RequiredArgsConstructor 기반 생성자 주입을 적용합니다:

java
package com.empasy.syncboot.service;

import io.agentscope.core.ReActAgent;
import io.agentscope.core.tool.ToolBox;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@RequiredArgsConstructor
public class AutonomousEntityBuilderService {

    private final ToolBox engineeringToolBox;

    public String generateDomainPackage(String domainDescription) {
        log.info("[SyncBoot:AgentScope] Generating domain architecture for: {}", domainDescription);

        ReActAgent agent = ReActAgent.builder()
                .name("SyncBoot-DomainEngineer")
                .sysPrompt("당신은 Spring Boot 3.x, Java 21, JPA 기반 엔터프라이즈 마이크로서비스를 설계하는 수석 아키텍트입니다. " +
                           "모든 Entity와 DTO는 반드시 Project Lombok 애너테이션(@Getter, @Builder, @NoArgsConstructor, @AllArgsConstructor)을 적용해야 합니다.")
                .toolBox(engineeringToolBox)
                .maxIterations(4)
                .build();

        String result = agent.run("다음 요구사항을 만족하는 Entity, Repository, DTO 코드를 작성하세요: " + domainDescription);
        log.info("[SyncBoot:AgentScope] Domain generation completed.");
        return result;
    }
}