Commit Graph

29 Commits

Author SHA1 Message Date
35b9813d44 debug(bot): classify_and_route 상세 로그 추가 + 파이프라인 검증 스크립트 2026-03-18 18:26:33 +09:00
62bc257be6 fix(bot): JSON 파서 중첩 객체 매칭 수정 (중괄호 균형 방식) 2026-03-18 18:15:57 +09:00
56787b1e4f fix(bot): unified prompt 분류 -> 라우팅 흐름 구현 2026-03-18 18:01:46 +09:00
d22493125c feat(nextcloud): Nextcloud 4모듈 + NC핸들러 + AI Foreman v0.1
- tools/nextcloud_client.py: WebDAV/OCS/CalDAV/CardDAV 공통 클라이언트
- tools/nc_files.py: 파일 검색/목록/최근/공유링크
- tools/nc_calendar.py: CalDAV 일정 CRUD + ICS 빌더
- tools/nc_mail.py: IMAP 메일 조회 (PLAIN auth for Mailcow)
- tools/nc_contacts.py: CardDAV 연락처 + EasyOCR 명함 스캔
- handlers/nc_handler.py: 자연어→NC도구 자동 라우팅
- core/foreman.py: 목표 분해 + 상담 세션 + Vikunja 등록
- prompts/foreman.md: Foreman 시스템 프롬프트
- prompts/unified.md: nextcloud 모드 분류 추가
- config.py: .env 따옴표 파싱 버그 수정
- api/discord_bot.py: /goal 커맨드 + Foreman 스레드 라우팅
2026-03-18 17:26:03 +09:00
c9068cdf1c fix(bot): 기동 버그 3건 수정 + feat(vikunja): 프로젝트 관리 기능 추가
- fix: apscheduler 누락 의존성 설치
- fix(main): StreamHandler cp949 UnicodeEncodeError 수정 (UTF-8 강제)
- fix: workspaces.json 경로 Certes→Variet-Worker 수정
- fix(gemini): MCP issues detected 노이즈 필터 추가
- fix(bot): on_command_error 핸들러 추가 (CommandNotFound 로그 오염 방지)
- feat(vikunja): projects 커맨드 (전체 프로젝트 목록+태스크 통계)
- feat(vikunja): report 커맨드 (태스크+git log+devlog 종합 현황)
- docs(agent): Vikunja 도구 섹션 확장 (12개 커맨드+라벨 가이드)
- docs: known-issues 2건 추가, devlog 세션 1 기록
2026-03-16 11:29:17 +09:00
CD
e59fcdf114 refactor(agent): MCP 서버 제거 → CLI 도구 직접 실행 전환 + Wiki 도구 추가 2026-03-15 23:05:38 +09:00
CD
6490ed4be4 fix(wiki): update_page tags 누락 에러 수정 + refactor(bot): 레거시 NLU/핸들러 800줄 제거 2026-03-15 22:43:56 +09:00
CD
3618387b8e feat(anime): 자막/토렌트 파이프라인 대폭 개선
- Blogspot Atom Feed API로 전체 에피소드 자막 URL 발견
- AniList prequel 체인 기반 시즌 에피소드 오프셋 자동 감지
- Nyaa S-tag 감지 → 절대/시즌 번호 체계 자동 판별
- 기존 자막 에피소드 스킵 (URL 페치 전 pre-skip)
- 오프셋 적용 자막 리네임 (시즌번호→절대번호 매칭)
- ASW HEVC 토렌트 우선 정렬 (truncation 방지)
- 토렌트 완료 대기 → 자동 삭제 라이프사이클
- 중복 자막 자동 삭제
- .smi 자막 확장자 지원
2026-03-15 18:23:57 +09:00
246d2a26c4 refactor(agent): MCP 기반 에이전트 아키텍처 재설계 — unified.md 분류기 제거, Gemini CLI + MCP 자율 도구 호출로 전환 2026-03-12 16:52:20 +09:00
CD
c92433b0b1 feat(tools): 애니메이션 자동화 파이프라인 구현
- tools/anissia_client.py: Anissia API 클라이언트 (편성표/자막)
- tools/nyaa_client.py: Nyaa.si RSS 토렌트 검색
- tools/qbit_client.py: qBittorrent Web API 클라이언트
- tools/subtitle_downloader.py: Google Drive/Tistory/Naver 자막 파서
- tools/title_matcher.py: 제목 매칭 + NAS 폴더명 생성
- tools/anime_pipeline.py: 전체 파이프라인 오케스트레이터
- tools/nas_scanner.py: NAS 폴더/파일 스캔
- prompts/unified.md: anime 모드 추가 (AI 평문 의도 분류)
- api/discord_bot.py: AI 평문 anime 핸들러 + /anime 슬래시 커맨드
- config.py: qBittorrent/NAS 설정 추가
- .agents/: agent_guide 워크플로우 통합
- docs/devlog: 세션 기록
2026-03-08 16:07:16 +09:00
CD
49ee5f397c fix: reviewer 타임아웃 300초, unified에 workspace 경로 추가
- reviewer agent timeout: 180s → 300s (에이전트 시작 오버헤드 고려)
- unified context에 workspace path 명시 → 경로 질문에 정확한 답변
- planner agent timeout 유지: 180s
2026-03-07 01:37:48 +09:00
CD
e65e2250a3 feat: Planner direct 모드 + Reviewer 검증
- direct 모드: Planner 직접 처리 → Reviewer 검증 → 완료 (2단계)
- tasks 모드: 기존대로 full pipeline (5단계)
- 대화 히스토리 embed 내용 포함 (clarify 맥락 유지)
2026-03-07 01:26:32 +09:00
CD
80a5560134 fix: 대화 히스토리에서 embed 내용 유실 - clarify 맥락 보존
- _get_channel_history에서 embed title/description/fields 추출
- 봇의 clarify 질문이 히스토리에 포함되어 맥락 유지
- planner 프롬프트 강화: 불필요한 태스크 분할 방지
2026-03-07 01:22:08 +09:00
CD
a408bb32fe refactor: 전체 구조 점검 - 데드코드 제거, 에이전트 모드 통일, 취소 기능
1. 데드 코드 제거: execute() 146줄, _read_project_files() 31줄
2. 전 역할 agent 모드: summarize도 call_agent로 변경
3. 작업 취소: 취소/stop/cancel 입력으로 실행 중 작업 중단
4. 중복 방지: 채널당 1작업만 허용
2026-03-06 23:30:00 +09:00
CD
52402065f3 feat: Planner 오케스트레이션 루프 구현
이중 루프 구조:
- 내부 루프 (Planner 자가검증, 최대 3회):
  계획 → 코딩 → Planner가 결과 검증 → 미달 시 추가 태스크 → 반복
  Planner가 만족할 때까지 자체적으로 보완 작업 진행
- 외부 루프 (Reviewer, 최대 2회):
  Planner 만족 → Reviewer 검토 → 반려 시 피드백으로 재계획

새 메서드:
- planner_verify(): Planner가 계획 달성도 자가 검증
- _read_recent_files(): 프로젝트 파일 읽기 공용 헬퍼
2026-03-06 23:14:05 +09:00
CD
69e3a051f7 refactor: 전체 프롬프트 점검 및 수정
- reviewer.md: 에이전트 모드에 맞게 전면 개편
  - 실제 파일 기반 리뷰로 변경
  - 명확한 통과/반려 기준 (critical만 반려, 스타일은 통과)
  - '의심이 되면 통과시키세요' 원칙
- coder.md: 완성도 요구사항 추가
  - 빈 폴더(새 프로젝트) 대응 안내
  - TODO/뼈대 금지 — 완성된 코드 요구
  - 파일 간 참조 확인 지시
- summarizer.md: 입력 설명을 에이전트 모드에 맞게 수정
- router.md: 삭제 (unified.md가 대체)
2026-03-06 22:51:19 +09:00
CD
173e1a6a54 fix: AI 플로우 전체 truncation 제거 + Discord 메시지 분할
- task_pipeline.py: summarize()에서 리뷰/코딩 결과 자르기 제거
- discord_bot.py: safe_send_embed() 추가 (4096자 초과 시 분할 전송)
- 리뷰 피드백 자르기 제거 (재시도 시 전체 피드백 전달)
2026-03-06 22:32:22 +09:00
CD
a54a9096ef fix: 단계별 진행 표시 + em-dash 인코딩 수정
- _handle_task: pipeline.execute() 대신 단계별 호출로 변경
  -> 계획/코딩/리뷰/재시도 각 단계를 Discord에 실시간 표시
  -> 코딩 중.../리뷰 중... Embed가 완료 시 업데이트됨
- em-dash -> ASCII dash (cp949 인코딩 오류 방지)
2026-03-06 22:22:41 +09:00
CD
bccc673713 feat: Coder를 에이전트 모드로 전환 + 리뷰 재시도 루프
핵심 변경:
- gemini_caller.py: call_agent() 추가 (cwd 지원, 5분 타임아웃)
  Gemini가 프로젝트 디렉토리에서 직접 파일 읽기/쓰기/실행
- task_pipeline.py: Coder가 call_agent() 사용, file_applier 의존 제거
  리뷰 실패 시 최대 2회 재시도 (피드백 포함)
- discord_bot.py: pipeline.execute() 호출로 단순화
- coder.md: 파일 직접 쓰기 지시 (코드블록 출력 금지)
- 검증: echo prompt | gemini --cwd=VW_Proj → test_agent.txt 생성 확인
2026-03-06 22:13:06 +09:00
CD
83c043863c fix: 슬래시 커맨드 길드별 즉시 동기화
- copy_global_to + guild sync로 변경 (글로벌 1시간 캐시 문제 해결)
- name optional 변경이 즉시 반영됨
2026-03-06 21:55:41 +09:00
CD
3f69b6a47a feat: 채널 이름 변경 시 워크스페이스+폴더 자동 연동
- on_guild_channel_update 이벤트로 이름 변경 감지
- workspace.rename_workspace(): 이름+폴더 변경 (VW_Proj 하위에만)
- 변경 완료 시 채널에 알림 Embed 전송
2026-03-06 21:52:10 +09:00
CD
63a12d9078 feat: /workspace set 이름 자동화 - 채널 이름을 기본값으로 사용
- name 파라미터 선택적으로 변경
- 미입력 시 채널 이름 자동 사용
- /workspace set만 치면 끝
2026-03-06 21:49:26 +09:00
CD
889badc52b feat: Git/Vikunja 미설정 시 차단 대신 안내 후 로컬 작업 진행
- 작업 실행 차단 제거 -> 안내 메시지만 표시
- /workspace set만으로 바로 작업 가능
- 나중에 /workspace git, /workspace vikunja로 등록 가능
2026-03-06 21:47:24 +09:00
CD
1e8e8c324f fix: 유령 워크스페이스 삭제 대신 이름 변경으로 보존
- cleanup_orphans: 삭제 -> _orphan_YYYYMMDD 접미사 추가
- Git/Vikunja 설정 등 모든 데이터 보존됨
- 이름 충돌 없이 같은 이름으로 새 채널 등록 가능
2026-03-06 21:22:39 +09:00
CD
b9e4a94e9a feat: 워크스페이스 이름충돌 감지 + 기본경로(VW_Proj) + 유령채널 자동정리
- workspace.py: find_by_name() 이름충돌, cleanup_orphans() 유령정리, 경로 자동생성
- config.py: WORKSPACE_BASE_DIR = VW_Proj
- discord_bot.py: /workspace set path 선택적, 이름충돌 안내, on_ready 유령정리
- VW_Proj 폴더 생성
2026-03-06 21:19:42 +09:00
CD
a9bdce90f4 feat: 워크스페이스 시스템 + 통합 프롬프트 + Docs 기록 관리
- workspace.py: 채널별 워크스페이스 모델 + JSON 영속 저장
- discord_bot.py: /workspace 슬래시 커맨드 (set/git/vikunja/info/remove/list)
  - 등록 채널만 자동 응답, 미등록 채널 무시
  - Git/Vikunja 미설정 시 작업 차단 + 안내
  - 통합 프롬프트 1회 호출 (router+planner+chat 통합)
- docs_manager.py: Wiki 인덱스, 세션 기록, Changelog 자동 업데이트
- task_pipeline.py: 모든 Gemini 호출에 docs 컨텍스트 주입, 완료 시 기록
- unified.md: 분류+즉답/계획 통합 프롬프트
2026-03-06 21:12:50 +09:00
CD
752d851f9f feat: Pipeline 전면 개선 — 병렬실행, Batch Review, 총평, 대화기억, 스마트라우팅
- GeminiCaller: cmd/c 제거, 인자 분리, Semaphore(4) 동시성 제어, GeminiCallError
- TaskPipeline: asyncio.gather 병렬 코딩, batch_review 1회, summarize 총평
- FileApplier: Coder 출력 파싱 → 실제 파일 적용 (경로 보안 체크)
- Discord Bot: on_message 자동채팅, 의도분류(chat/task/clarify), 대화기억(10메시지)
- Prompts: router.md (의도분류), summarizer.md (총평)
- Workflows: agent_chat 환경 경로 업데이트
2026-03-06 20:46:58 +09:00
quantlab
26cef9bb11 feat(api): !chat 명령어 추가 — 단순 대화용 Gemini 직접 호출 #task-191 2026-03-06 18:59:34 +09:00
quantlab
427763c493 feat(api): API Server + Discord Bot 구현 #task-191 2026-03-06 18:52:11 +09:00