비즈니스 혁신을 위한 AI 에이전트 활용 : 10가지 실천사례 """ 01

  • English: Effortlessly search for enterprise data like never before
  • 한국어: 전례 없는 방식으로 기업 데이터를 손쉽게 검색하세요.

02

  • English: Transform complex documents into engaging podcasts
  • 한국어: 복잡한 문서를 흥미로운 팟캐스트로 변환하세요.

03

  • English: Generate your best ideas in minutes
  • 한국어: 몇 분 만에 최고의 아이디어를 생성하세요.

04

  • English: Consult an expert on anything
  • 한국어: 무엇이든 전문가에게 상담하세요.

05

  • English: Personalize customer experience at scale with multi-agent AI
  • 한국어: 멀티 에이전트 AI를 통해 대규모로 고객 경험을 개인화하세요.

06

  • English: Boost marketing engagement and conversion rates
  • 한국어: 마케팅 참여도와 전환율을 높이세요.

07

  • English: Shorten the sales cycle
  • 한국어: 판매 주기를 단축하세요.

08

  • English: Find a bug in your code and fix it, with just a prompt
  • 한국어: 프롬프트 하나로 코드의 버그를 찾고 수정하세요.

09

  • English: Simplify onboarding and other HR workflows
  • 한국어: 온보딩 및 기타 인사 관리(HR) 워크플로우를 간소화하세요.

10

  • English: Build your own AI agent
  • 한국어: 나만의 AI 에이전트를 구축하세요. """ Dwg Reader, Writer 만들어 보고 싶다. 일단 심도 있게 웹 조사를 하고 어떤방법으로 할지 하나씩 agent를 만드는 작업을 해볼 수 있을까? 전체를 다루면 잊어버릴테니 하나씩 1번부터 조사해 보자. 무엇을 할지 메모리에 저장해라. 결과 10개의 대안 기술조사 결과.

우리가 이러한 대안 기술들을 구현하는 과정에서 고려해야 할 점들은 무엇일까요? ai 업무 자동화 구현시 고려사항

위를 구현하기 위한 프로젝트를 셋업 하려고 합니다. 지금 셋업을 하지 말고 사용자가 개발 생산성 극대화를 위한 CLAUDE.md 작성해주세요. CLAUDE.md를 작성했습니다. 포함된 내용:

  1. 디렉토리 구조 - 현재 프로젝트 전체 구조 + 구현 시 확장될 case별 폴더 구조
  2. 개발 규칙 - Python 스타일, 패키지 관리, 테스트/린팅
  3. Claude API 사용 규칙 - 모델 계층화, Prompt Caching, API 키 관리
  4. 공통 기술 스택 - Qdrant, BGE-M3, LangGraph, FastAPI 등 표준화
  5. 워크플로우 - 조사 → PRP 설계 → 구현 → 검증 → 문서화
  6. 구현 주의사항 - GPU 없이 기본 동작, Docker Compose, 합성 데이터 MVP

디렉토리 구조에 대한 것들이 들어 있나요?

일을 여러 에이전트들이 나눠서 할 때, 어디가지 진행되고 무슨 일을 해야 하는지에 대한 내용들을 각각 PROGRESS.md 와 PLAN.md 에서 관리하도록 합시다. 그리고 새로 시작할 때 두 파일을 읽어서 내가 무슨 일을 해야 하는지 에이전트들이 알 수 있게 합시다. 이렇게 CLAUDE.md 를 업데이트 합시다.

그러면 이제 이런 일들을 할 때 필요한 에이전트, 커맨드, 스킬, Hook 들이 무엇이 있을지 고민해 보고, 아이디어들을 알려주세요.

그러면, Claude code의 agent, command, skill, hook 구조를 조사한 후, 그에 따라서 정확한 포맷을 지켜서 .cluade 하위에 위에서 제안한 것들을 만들어 주세요.

병렬 에이전트 만들기

AI 개발자를 만든다는 생각으로 지시 할것.

내가 최대한 내가 직접 작업물에 손을 대지 않도록 설명하거나, 예시를 던져줘서 작업 할 수 있도록 도와주어야 함.

코딩 할때는 sonnet 4.6 모델을 쓰세요.

예시 Modeler Plug-ins 적용

프롬프트 히스토리

Rhino 와 같은 모델링 소프트웨어에 대해 검색하고 어떤 기능들이 있는지 알려주세요.

그렇군요. 우리는 자체적으로 Rhino와 흡사하지만 소프트웨어 구조는 좀 다른 프로그램을 만들었고, 그래픽 엔진은 “HmEG” 라고 하며, 지오메트리는 “HmGeometry” v1, v2 를 만들었어요. “docxml-api” mcp 서버가 만들어진 상태이고, docs, reference, samples 에 관련 자료와 샘플, 참고 자료를 보고 생성, 편집, 수정등과 같은 플러그인을 개발하여 기능을 추가해 나간다고 했을때 이 과정에서 고려해야할 것들은 무엇일까요?

일을 여러 에이전트들이 나눠서 할 때, 어디가지 진행되고 무슨 일을 해야 하는지에 대한 내용들을 각각 PROGRESS.md 와 PLAN.md 에서 관리하도록 합시다. 그리고 새로 시작할 때 두 파일을 읽어서 내가 무슨 일을 해야 하는지 에이전트들이 알 수 있게 합시다. 이렇게 CLAUDE.md 를 업데이트 합시다.

지난번에 사장님 AI 세미나시 개발팀에서 코딩시 AI 활용에 대한 세미나를 준비해 보려고 합니다. 발표하실 팀은 내일까지 알려주시면 일정 잡도록 하겠습니다. 이런 내용으로 발표를 하시면 좋을것 같습니다.

  1. 프롬프트 흐름 - 실제 사용한 프롬프트를 설명 (세부적으로 디테일하게)
  2. 실질적으로 적용가능한 작은 작업 이라도…
  3. 실패사례 : AI를 믿으면 안되는 부분, 극복방법
  4. 결과물 검증 방법, 프로세스, 사용도구(Claude, Antigravity, Codex 등)

AI Desktop Assistant 프로젝트를 계속 진행한다. PLAN.md, PROGRESS.md를 읽어 현재 상태를 파악하라.


이번 세션에서 할 일

PLAN.md Phase 6 태스크: “임베딩 모델 교체 — FNV 해시 → vLLM(Docker) 임베딩 연동 [agent: backend]”

사용자가 이미 로컬에서 운영 중인 vLLM Docker 서비스가 있다. 그 서비스에 연결하는 구현을 한다.


직전 세션에서 파악한 기술 컨텍스트

현재 임베딩 구조 (search.rs)

// EmbeddingProvider 트레이트 (동기식, Send + Sync)
pub trait EmbeddingProvider: Send + Sync {
    fn embed(&self, text: &str) -> Embedding;  // Vec<f32>
    fn dimension(&self) -> usize;
}
 
// 현재 구현체: FNV 해시 128차원 (의미 유사도 없음)
pub struct SimpleEmbedding { dim: usize }
 
// ComponentSearch 구조
pub struct ComponentSearch {
    embedder: Box<dyn EmbeddingProvider>,  // ← 런타임 교체 불가
}
impl ComponentSearch {
    pub fn with_default() -> Self  // SimpleEmbedding 사용
    pub fn upsert_embedding(&self, conn, component_id, text) -> Result<()>
    pub fn search_similar(&self, conn, query, limit, min_similarity) -> Result<Vec<SearchResult>>
}

AppState 구조 (lib.rs)

pub struct AppState {
    pub component_search: Arc<ComponentSearch>,  // Mutex 없음 — 주의
    // ...
}

component_searchcommands.rsclaude_runner.rs 여러 곳에서 &state.component_search 형태로 직접 참조됨.

component_embeddings 테이블 스키마

CREATE TABLE component_embeddings (
    component_id TEXT PRIMARY KEY REFERENCES components(id) ON DELETE CASCADE,
    embedding    BLOB NOT NULL,          -- f32 little-endian
    model        TEXT NOT NULL DEFAULT 'simple',
    updated_at   TEXT NOT NULL
);

Cargo.toml 현재 의존성

reqwest 없음. tokio full, serde, serde_json, rusqlite bundled 있음.


설계 방향 (직전 세션에서 결정)

핵심 제약

  • AppState.component_search: Arc<ComponentSearch> 타입을 바꾸면 commands.rs, claude_runner.rs 20+ 호출 지점 수정 필요 → 피한다.
  • EmbeddingProvider::embed는 동기 트레이트 → reqwest::blocking 사용.
  • tokio async 컨텍스트 안에서 blocking 호출 시 tokio::task::block_in_place 사용 (multi-thread tokio scheduler에서 안전, Tauri가 이를 사용).

변경 계획

1. Cargo.toml

reqwest = { version = "0.12", features = ["json", "blocking"] }

2. search.rs — VllmEmbedding 추가

pub struct VllmEmbedding {
    endpoint: String,  // "http://host:port"
    model: String,     // vLLM model name
    dim: usize,        // 실제 모델 차원 (첫 embed 호출 시 자동 감지 또는 고정)
}
 
impl EmbeddingProvider for VllmEmbedding {
    fn embed(&self, text: &str) -> Embedding {
        tokio::task::block_in_place(|| {
            // POST {endpoint}/v1/embeddings
            // { "input": text, "model": self.model }
            // → data[0].embedding: Vec<f32>
            // 실패 시 SimpleEmbedding 폴백
        })
    }
}

3. search.rs — ComponentSearch 내부 교체 가능하도록

pub struct ComponentSearch {
    embedder: Arc<Mutex<Box<dyn EmbeddingProvider>>>,  // Box → Arc<Mutex<Box>>
}
impl ComponentSearch {
    pub fn swap_embedder(&self, new: Box<dyn EmbeddingProvider>)  // 런타임 교체
    pub fn current_model_name(&self) -> String
}
// upsert_embedding에서 model 컬럼을 동적으로 current_model_name() 사용

4. lib.rs — AppState에 vllm_endpoint 추가

pub struct AppState {
    pub vllm_endpoint: Arc<Mutex<Option<String>>>,  // 설정 저장용
    // ...
}
// AppState::new()에서 VLLM_ENDPOINT 환경변수 체크 → 있으면 자동 연결

5. commands.rs — 새 Tauri 커맨드 3개

// vLLM 엔드포인트 설정 (UI에서 호출)
pub async fn set_vllm_endpoint(endpoint: Option<String>, ...) -> Result<(), String>
// 현재 설정된 엔드포인트 반환
pub async fn get_vllm_endpoint(...) -> Result<Option<String>, String>
// 전체 재인덱싱 (엔드포인트 변경 후 호출)
pub async fn reindex_embeddings(window, ...) -> Result<ReindexResult, String>
// → component_embeddings 전체 삭제 후 현재 embedder로 재생성
// → "reindex:progress" / "reindex:done" 이벤트 emit

6. ComponentLibrary.tsx — 설정 UI 추가 (선택적) Stats 섹션에 vLLM 엔드포인트 입력 + “재인덱싱” 버튼 추가.


사용자 vLLM Docker 정보

세션 시작 시 사용자에게 먼저 확인해야 할 사항:

  1. vLLM 서버 URL (예: http://localhost:8000)
  2. 임베딩 모델명 (예: BAAI/bge-m3nomic-ai/nomic-embed-text-v1.5 등)
  3. 임베딩 차원 수 (모델에 따라 768, 1024, 1536 등)

이 정보를 받은 뒤 구현을 시작하라.


빌드 검증 명령어

cargo check --manifest-path ai-desktop-assistant/src-tauri/Cargo.toml
cd ai-desktop-assistant && pnpm tsc --noEmit
cargo test --manifest-path ai-desktop-assistant/src-tauri/Cargo.toml

현재 상태: cargo check 경고 1개(dead_code), 오류 0, 테스트 38/38 통과.