코딩 하니스 (CodingAgent)

CodingAgentadk-agent에서 coding 기능 뒤에 제공되는 얇은 하니스로, dev tools, 계획 write_todos 도구, 그리고 최소한의 코딩 시스템 프롬프트를 일반적인 LlmAgent에 연결합니다. 이는 새로운 에이전트 타입이 아니라 *configuration over LlmAgent*이므로, 기본 adk-agent 빌드를 가볍게 유지합니다(이 기능이 adk-devtools을 끌어옵니다).

하나 빌드하기

use adk_agent::coding::CodingAgent;
use adk_devtools::Workspace;

let coding = CodingAgent::builder()
    .model(model)                              // any adk-model provider (required)
    .workspace(Workspace::new("./my-repo"))    // sandboxed (required)
    .instruction("Follow the project's existing style; prefer small diffs.") // optional, appended
    .build()?;

let agent = coding.agent();   // Arc<dyn Agent> — hand to a Runner

빌더 옵션:

메서드효과
.model(Arc<dyn Llm>)모델(필수).
.workspace(Workspace)도구가 제한되는 작업 공간(필수).
.name("…")에이전트 이름(기본값 "coding-agent").
.instruction("…")기본 코딩 프롬프트에 추가되는 추가 안내입니다.
.tool(Arc<dyn Tool>)추가 도구(MCP, function tool, …)를 등록합니다.
.without_todos()write_todos 계획 도구를 비활성화합니다.

연결된 항목

  • 개발 도구 모음 — 작업 영역에 범위가 지정된 read/write/edit/glob/grep/bash.

  • write_todos — 모델이 짧은 작업 목록을 기록하고 갱신하는 데 사용하는 계획 도구. 하니스에서 다시 읽어 옵니다:

    for todo in coding.todos() {
        println!("[{}] {}", todo.status, todo.content);  // pending | in_progress | completed
    }
  • 최소한의 프롬프트 — 1k 토큰 미만의 기본 지침("변경하기 전에 탐색", "편집하기 전에 읽기", "테스트를 실행해 검증", "계획 추적"), 기능이 큰 프롬프트가 아니라 도구와 스킬에서 나오도록 의도적으로 작게 유지됨.

루프

당신은 다른 에이전트처럼 CodingAgent를 실행합니다 — Runner를 통해서요. 한 턴 안에서 기본 LlmAgent는 이미 계획 → 실행 → 관찰 루프를 수행합니다: 도구를 호출하고, 그 결과를 보고, 끝날 때까지 계속합니다. 일반적인 턴은 다음과 같습니다:

write_todos(...)            # plan
glob / grep / read_file     # explore
edit_file / write_file      # change
bash("…test…")              # verify
write_todos(... completed)  # update plan
→ final summary

다중 턴 작업에서는 같은 Runner + 세션을 호출 전반에 걸쳐 재사용하면 에이전트가 자신의 이전 작업을 바탕으로 이어서 진행합니다(자기가 작성한 파일을 다시 읽고 수정함). coding_agent 예제를 보세요 (multiturn 모드).

메모리 및 스킬

기반이 LlmAgent이므로, ADK의 나머지는 모두 조합할 수 있습니다:

  • 교차 세션 프로젝트 메모리를 위해 RunnerMemoryService (예: bi-temporal knowledge graph)를 연결합니다.
  • 프롬프트를 부풀리지 않고 기능을 확장하기 위해 adk-skill를 통해 lazy skills를 추가합니다.
  • 훅/가드레일(adk-plugin, adk-guardrail)이 도구 호출을 결정적으로 차단합니다.

실행하기

하니스는 Arc<dyn Agent>를 생성합니다; adk-runner로 이를 구동하세요( 빠른 시작 참조) 또는 이 모든 것을 감싸는 CLI를 사용하세요.

다음: The CLI →