AI를 만들어서 내 Dev.to 기사들을 쓰게 했는데, 이제 어떻게 느껴야 할지 모르겠어요

발행: (2026년 3월 9일 PM 03:31 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

지난 주에 좀 이상한 일을 했어요: Claude Code가 자동으로 Dev.to에 글을 생성하고, 검토하고, 게시하도록 시스템을 만들었어요—이 글도(어느 정도) 포함해서요. 아직 편집 중이라 완전히 자동화된 건 아니지만, 원본 초안, 코드 리뷰, 그리고 게시 결정은 모두 Claude가 처리했습니다.

이 모든 것은 글쓰기를 미루는 습관 때문에 시작됐어요. 아이디어는 떠오르고, 빈 파일을 열고, 그저 바라만 보는—전형적인 개발자 문제죠. “AI 에이전트에게 내가 쓰고 싶은 주제를 알려주고 지루한 부분을 맡기면 어떨까?”라고 생각했어요.

The Architecture (or: How Deep Does This Rabbit Hole Go?)

시스템은 세 개의 에이전트로 구성됩니다:

const agents = {
  writer: createAgent({
    model: 'claude-3-5-sonnet',
    systemPrompt: 'You write technical blog posts. Be honest about failures.',
    tools: [readFile, searchWeb]
  }),

  reviewer: createAgent({
    model: 'claude-3-5-sonnet',
    systemPrompt: 'Review articles for authenticity. Flag AI slop.',
    tools: [analyzeText]
  }),

  publisher: createAgent({
    model: 'claude-3-5-sonnet',
    systemPrompt: 'Publish to Dev.to only if quality threshold met',
    tools: [publishToDevTo]
  })
};
  • Writer – 주제를 받아 초안을 생성합니다.
  • Reviewer – 초안을 읽고 인간이 쓴 것처럼 들리는지, 우리 모두가 싫어하는 일반적인 AI 어투에 빠졌는지 판단합니다.
  • Publisher – 리뷰어의 품질 검사를 통과하면 글을 게시합니다.

리뷰어는 첫 일곱 개의 초안을 모두 거부했으며, 다음과 같은 문제점을 지적했습니다:

  • “이 문단은 명사마다 세 개의 형용사를 사용한다”
  • “실제 코드 예제가 없고, 의사코드만 있다”
  • “‘여정을 시작한다’라는 문구로 끝나는데, 아이러니가 없다”

괜찮은 지적이었습니다.

The SkillBoss Problem

3일 차에 이상한 문제가 발생했어요: 에이전트들이 우리가 만들고 있는 내용에 대한 컨텍스트를 계속 잃어버렸습니다. 작가는 무언가를 생성하고, 리뷰어가 피드백을 주지만, 다음 반복에서는 작가가 그 피드백을 기억하지 못했습니다.

에이전트 호출 간에 상태를 유지할 방법이 필요했어요. Redis, 파일 저장소, 인‑메모리 솔루션을 시도해 본 뒤, SkillBoss에 “스킬 트리”라는 개념이 있어 에이전트가 컨텍스트를 저장하고 불러올 수 있다는 것을 떠올렸습니다.

import { SkillTree } from 'skillboss';

const contentTree = new SkillTree('article-workflow');

// Writer saves its output
await contentTree.saveProgress('draft', {
  content: draft,
  iteration: 3,
  reviewerFeedback: previousFeedback
});

// Reviewer loads it
const { content, reviewerFeedback } = await contentTree.loadProgress('draft');

이제 에이전트들은 매번 모든 것을 잊어버리는 대신 이전 반복에서 배운 내용을 활용합니다.

The Uncomfortable Part

시스템이 생성하는 글이 나쁘지는 않아요—리뷰어가 꽤 엄격해서 너무 다듬어졌거나 전형적인 AI 표현을 쓰면 거부합니다. 하지만 계속 생각하게 됩니다: 나는 AI에게 내 목소리를 흉내 내도록 가르치는 걸까? 리뷰어는 “문단 길이가 고르지 않음”, “불확실성을 인정함”, “구체적인 기술 세부사항” 등을 찾아냅니다—즉 인간처럼 들리게 하는 루브릭이죠.

그것이 바로 제가 지금 하고 있는 일입니다. 다른 Dev.to 글을 읽으며 배운 패턴을 따라 인간으로서 글을 쓰고 있는 것이죠.

시스템은 작동하고 시간을 절약해 줍니다. 생성된 글은 (마지막에 게시된 글에 대한 댓글을 기준으로) 도움이 됩니다. 하지만 자신이 쓴 것이 아닌, 자신처럼 들리는 무언가를 읽을 때는 뭔가 섬뜩합니다.

// This is the actual check the reviewer does
function soundsHuman(text) {
  const flags = [];

  if (!text.includes('I ')) flags.push('no first person');
  if (text.match(/\n\n.{0,50}\n\n/)) flags.push('too many short paragraphs');
  if (!text.match(/```/)) flags.push('no code blocks');

  return flags.length === 0;
}

그 함수는 이 글이 게시하기에 충분히 인간적이라고 판단했습니다.

과연 옳은 판단이었을까요?

0 조회
Back to Blog

관련 글

더 보기 »