[미출시]
변경됨
- Agents now own mistakes more cleanly. 도구 결과가 agent가 말한 내용과 모순될 때, agent는 같은 턴에서 이를 인정하고 수정하며 과도한 사과나 자기비판으로 응답을 채우지 않습니다.
보안
- IPv4 매핑 IPv6 주소를 통한 SSRF 우회 차단. IPv4 매핑 IPv6 리터럴(예:
http://[::ffff:169.254.169.254]/)을 호스트로 하는 URL이 프라이빗 IP 차단 목록을 우회하여 듀얼 스택 호스트의 클라우드 인스턴스 메타데이터를 포함한 내부 서비스에 접근할 수 있었습니다. 이제 이러한 주소는 언래핑되어 IPv4 차단 목록에 대해 검사되므로, 모든 SSRF 보호 경로(웹 페치, HTTP 도구, 커넥터, RAG 임포터)에서 이 취약점이 해결됩니다. - MCP SSE / Streamable-HTTP 서버 URL이 이제 SSRF 검증됩니다. 인증된 사용자가 MCP 서버를 내부 주소로 지정하고 서버를 테스트하거나 연결할 때 요청을 트리거할 수 있었습니다. 서버 URL은 이제 생성/업데이트 시 그리고 연결 시점에 다시 검증됩니다.
- Docker Compose PostgreSQL 자격증명이 이제
POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB를 통해 재정의 가능합니다. 이전의 하드코딩된fim:fim기본값은 단일 소스(연결 문자열이 동일한 변수에서 파생됨)이며, 데이터베이스를 노출하기 전에 변경하도록 경고와 함께 문서화되어 있으므로, 운영자가 더 이상 실수로 기본 관리자 자격증명을 배포하지 않습니다.
수정됨
- PostgreSQL에서 타임스탬프 비교가 올바르게 작동합니다. 세션 무효화 확인이 저장된 무효화 시간을 순진한 UTC로 가정하고 강제했는데, 이로 인해 PostgreSQL이 반환할 수 있는 시간대 인식 비UTC 값에 대한 비교가 자동으로 손상되었습니다. 이제 타임스탬프는 재정의가 아닌 변환을 통해 UTC로 정규화되므로 취소된 토큰이 모든 백엔드에서 안정적으로 거부됩니다.
- 강제 실행 훅이 충돌할 때 폐쇄 상태로 실패합니다. 예외를 발생시킨
PRE_TOOL_USE훅(예: 승인 게이트)이 이전에allow=True를 반환했으므로 차단된 도구 호출이 어쨌든 진행되었습니다 — 충돌하는 게이트가 자동으로 우회가 되었습니다. 이제 PRE 훅은 오류 시 기본적으로 거부하고, 비강제 실행 훅(속도 제한기, 로거)은 새로운fail_open플래그를 통해 기존의 개방 실패 동작을 유지합니다.
[v0.8.7] - 2026-06-10
보안
- 2단계 인증 우회 문제를 해결했습니다. API 및 채팅/SSE 인증은 이제 정상적인 액세스 토큰이 필요하며(SSE 스트리밍도 단기 티켓 허용), 2FA 임시 토큰, 새로고침 토큰, 바인드/SSE 티켓(모두 동일한 키로 서명됨)은 더 이상 인증에 재사용될 수 없으므로, 도난당한 비밀번호만으로는 2단계 인증을 건너뛸 수 없습니다.
- OAuth 로그인이 더 이상 미확인 이메일의 기존 계정에 자동으로 연결되지 않습니다. 제3자 계정은 공급자가 해당 이메일을 확인됨으로 표시할 때만 이메일로 로컬 계정과 일치하므로, 공격자가 제어하는 미확인 주소를 통한 탈취를 방지합니다.
추가됨
file_ops.apply_patch— V4A 형식 diff 패치를 파일에 적용합니다. 에이전트가 라인 기반 청크와 퍼지 공백 매칭을 사용하여 여러 줄을 편집할 수 있게 해주며, 정확한 부분 문자열 매칭이 취약한 경우를 보완하는 기존find_replace를 보완합니다.- 입력 및 출력 검증을 위한 콘텐츠 가드레일. 새로운
core/agent/guardrail레이어가 기존 도구 권한 게이트 및 보안 검사와 함께(대체하지 않고) 실행됩니다. 입력 가드레일(기본값: 탈옥 구문 탐지기)은 모든 LLM 호출 전에 실행되며 트리거되면 턴을 중단하여 토큰을 절약하고 채팅에서 명확한 “차단됨” 알림을 표시합니다. 출력 가드레일은 최종 답변 후에 실행됩니다.FIM_GUARDRAILS_INPUT/FIM_GUARDRAILS_OUTPUT환경 변수를 통해 구성 가능하며, 에이전트별 UI 구성은 향후 릴리스에서 제공될 예정입니다.
Changed
/settings?tab=billing이제 전체 너비로 렌더링되며 Settings 탭의 나머지 부분과 시각적으로 일관성이 있습니다.max-w-4xl너비 제한과 중복된 외부 스크롤 컨테이너를 제거했으며, 페이지 제목 아이콘을 삭제했고, 플랜 / 사용량 / 구독 / 플랜 비교 카드를 Usage 탭과 동일한 간결한 테두리 div 패턴(간단한 레이블 +tabular-nums숫자)을 사용하도록 다시 작성했습니다. 이전 레이아웃은 settings 프레임에 실수로 끼워진 독립 페이지처럼 보였습니다.
수정됨
- 토큰 할당량이 이제 매월 1일이 아닌 청구 날짜에 리셋됩니다. 사용량은 항상 구독 시기와 관계없이 달력 월 단위로 계산되었으므로, 유료 사용자는 20일에 청구되지만 1일까지 새로운 할당량을 기다려야 했습니다. 또한 월 말에 시작한 구독은 며칠 후 실질적으로 두 번째 전체 할당량을 받았습니다. 이제 할당량은 각 구독의 월간 기념일에 리셋됩니다(무료 사용자는 여전히 달력 월에 리셋됨). 연간 청구 플랜은 이제 연 1회가 아닌 매월 올바르게 충전됩니다. 플랜 & 청구 탭, 사용량 카드, 할당량 초과 대화 상자는 모두 이 동일한 기간에 대해 사용량을 측정하고 리셋 날짜를 표시하므로, 표시된 “이 기간의 사용량”이 채팅이 실제로 중단되는 시점과 일치합니다.
- 구독 갱신이 이제 청구 기간을 진행시킵니다. 자동 갱신 시 표시된 기간 종료 날짜는 Stripe가 청구하고 구독을 앞으로 이동했음에도 불구하고 이전 주기에서 고정되어 있었습니다. 갱신 핸들러는 신뢰할 수 없는 송장 페이로드에서만 새 기간을 읽었습니다. 이제 Stripe에서 신뢰할 수 있는 기간 범위를 검색하므로, 주기 종료 날짜(및 할당량 리셋)가 모든 갱신 시 앞으로 이동합니다. 또한 이러한 구독을 취소하면 실제 기간 종료 시점이 아닌 즉시 계정을 다운그레이드할 수 있는 잠재적 위험을 제거합니다.
- 원본 도구 호출 프로토콜이 더 이상 에이전트 답변으로 유출되지 않습니다. 모델이 일반 텍스트로 도구 호출을 즉흥적으로 생성할 때(예:
<tool_call>/<tool_response>블록 방출 — 사용 불가능한 도구에 도달할 때 일반적), 그 텍스트(내부의 모든 base64/파일 덤프 포함)가 회신에 그대로 표시될 수 있었습니다. 모든 답변 경로는 이제 이 의사 프로토콜을 제거하며, 파서는 추가로{"name","arguments"}방언을 유출되지 않는 진정한 도구 호출로 인식합니다. - 에이전트 턴 중 간헐적인
APIConnectionError: Connection error버스트. 공유 HTTP 연결 풀은 최대 30초 동안 유휴 keep-alive 연결을 유지했습니다. 업스트림 릴레이 또는 NAT이 유휴 연결을 자동으로 회수하면, 다음 요청은 반쯤 죽은 소켓을 재사용하고 실패했습니다. Keep-alive 만료는 이제 기본적으로 짧은 5초입니다(턴 내의 따뜻한 연결은 여전히 재사용됨). 풀은LLM_HTTP_MAX_CONNECTIONS/LLM_HTTP_MAX_KEEPALIVE/LLM_HTTP_KEEPALIVE_EXPIRY를 통해 조정 가능합니다. 신뢰할 수 없는 업스트림 뒤에서 연결 재사용을 완전히 비활성화하려면LLM_HTTP_MAX_KEEPALIVE=0을 설정하세요. - API 키 사용 통계(
total_requests,last_used_at)가 이제 모든 요청에서 유지됩니다. 이전에는 증분이 요청의 데이터베이스 세션에 기록되었으며, 이는 자체 쓰기를 수행하는 엔드포인트에서만 커밋됩니다. 따라서 읽기 전용 API 키 호출(대시보드, 파일, 모델, 내보내기, …)은 카운터를 자동으로 롤백했습니다. 이제 사용량은 독립적이고 자체 커밋하는 세션에 기록되며, 요청 성공과 분리됩니다.
[v0.8.6] - 2026-05-08
Added
- Stripe 결제 — Pro 플랜 구독.
/settings?tab=billing의 새로운Plan & Billing탭에서 현재 플랜, 월간 토큰 사용량, 기간 리셋,Pro로 업그레이드(Stripe Checkout) 또는구독 관리(Customer Portal)를 표시합니다. 결제 완료 후 구매한 플랜을 표시하는 축하 모달이 열리며, 리다이렉트 매개변수는 닫은 후에만 제거되므로 새로고침으로 인해 다시 트리거되지 않습니다. 할당량 적용은 각 사용자의 플랜을 존중하고, 취소된 구독은 유료 기간이 끝날 때까지 Pro로 유지되며, 스트림 중 402 할당량 대화는 이제 결제 탭으로 이동합니다. 관리자는 Admin Panel → Billing에서 플랜을 관리하고 구독을 검색할 수 있습니다. Pro는 현재 Stripe test-mode 가격을 사용하며, 프로덕션 전환 시 가격 ID를 교체합니다. - 관리자 제어 결제 기능 플래그. Admin → System Settings의
Enable Stripe Billing토글이 전체 Stripe 파이프라인을 제어합니다 — 사용자 대면/api/billing/*, Stripe 웹훅, 관리자 플랜/구독 CRUD, 프론트엔드 결제 탭 + 관리자 네비게이션은 모두 꺼져 있거나 503을 반환합니다. 첫 활성화 시 Free + Pro를 시드하고,default_plan_id포인터를 설정하며,users.plan_id를 역채우기합니다. 이후 끄기/켜기는 순수 플래그 전환입니다. Stripe 자격증명이 없는 프라이빗 배포는 깔끔하게 유지됩니다. 결제가 꺼져 있을 때 할당량 체인은 관리자가 설정한Default Monthly Token Quota로 폴백합니다. - 사용자별 무제한 할당량 + Registered 열. 빈 할당량 필드는 전역 제한을 상속받고,
0은 무제한을 부여합니다. 이전에는 둘 다 동일한 상태로 축소되었습니다. 사용자 테이블에는 Registered 열도 추가됩니다. - 비영어 문서(
zh/ja/ko/de/fr)는 이제 전체 API Reference 및 Channels Configuration 섹션을 표시합니다 —Endpoints그룹과Configuration > Channels하위 그룹은 이전에 영어 전용이었습니다.
Changed
Plan & Billing은 Settings 탭이며, 독립 페이지가 아닙니다./settings/billing을/settings?tab=billing로 통합하여 사용자가 플랜을 전환할 때 왼쪽 네비게이션이 표시된 상태로 유지됩니다 (GitHub / Linear / Notion과 동일). 독립 경로는 리다이렉트되므로 이전 북마크와 초기 배포 Stripe Checkout 반환 URL이 계속 작동합니다.Subscriptions탭은 플랜 구독과 구분하기 위해Marketplace로 이름이 변경되었습니다.- Free 플랜 할당량은 관리자 Plans 페이지에서 읽기 전용입니다. System Settings → Default Monthly Token Quota에서 소싱되며, 여기서 편집하면 자동으로 전파됩니다. 백엔드는 Free 플랜에 대해 PATCH의
monthly_token_quota를 자동으로 무시합니다. - 토큰 할당량이
5M/100K로 렌더링됩니다. 청구 페이지, 플랜 카드, 관리자 Plans 테이블 전체에서5,000,000대신 표시됩니다. 관리자 INPUT 필드는 여전히 원시 숫자를 허용합니다. - 번역 권한이 로케일별 파일에서 단일 용어집으로 이동했습니다. 규칙은
scripts/translation-glossary.md에 있으며, 모든 LLM 번역 호출(JSON, MDX, README)에 로드됩니다. pre-commit 훅은 생성된 로케일 파일에 대한 수동 편집을 무조건 거부합니다. 번역 오류를 수정하려면 용어집을 편집하고--force로 재생성하세요. - 라이선서 및 준거법. FIM One Source Available License는 이제 FIM Labs Pte. Ltd.(싱가포르)에서 부여됩니다. 준거법은 중국에서 싱가포르로 변경되며, 분쟁은 싱가포르의 SIAC 중재(중재인 1명, 영어)로 진행됩니다. 새로운 최상위
NOTICE파일은 R&D 귀속, 상표 및 제3자 구성 요소 정책을 기록합니다. 허용된 사용 또는 제한 조건에는 변경 사항이 없습니다.
수정됨
- 관리자의 에이전트, 커넥터, 지식 베이스 및 MCP 서버 승인/거부가 PostgreSQL에서 더 이상 실패하지 않습니다. publish-review
reviewed_at열이 이제 타임존을 인식하므로 PG에서 승인 쓰기가 성공합니다(이 버그는 SQLite 개발 데이터베이스에서는 보이지 않았습니다). - OAuth 사용자가 다시 세션을 새로고칠 수 있습니다. OAuth에서 발급한 새로고침 토큰이 새로고침 엔드포인트가 일치시킬 수 없는 형식으로 저장되어 액세스 토큰이 만료되면 다시 로그인을 강제했습니다. 이제 다른 모든 경로처럼 다이제스트로 저장됩니다.
- 브라우저 탭 제목이 이제
/settings및/admin의 활성 하위 탭을 반영합니다(예:Settings · Billing — FIM One). 따라서 여러 개의 고정된 탭을 구별할 수 있습니다. - 사용량 페이지가 관리자가 기본 토큰 할당량을 설정했을 때 더 이상 “무제한”을 보고하지 않습니다 — 이제 통합 할당량 체인(사용자별 재정의 → 요금제 계층 → 시스템 기본값)을 통해 해결됩니다.
- 에이전트 설정: 바운드 리소스가 진입 시 “(已删除)“로 더 이상 깜빡이지 않습니다. 고아 배지는 인벤토리 가져오기가 안정화될 때까지 렌더링을 기다립니다.
- 토스트가 이제 라이트/다크 테마를 따릅니다 — 다크로 하드코딩되지 않습니다.
- 에이전트별 사용량 분석이 더 이상 삭제된 에이전트와 연결된 대화에 대해 “Direct Chat” 행을 중복하지 않습니다.
- 자체 호스팅
./deploy.sh가 더 이상container name already in use로 실패하지 않습니다 —docker compose up전에 해시 접두사가 있는 좀비 컨테이너 및 DooD 샌드박스 자식을 정리합니다. - 푸시 후 더 이상 중복된
chore(i18n): sync translations커밋이 없습니다 — 사전 커밋 번역 훅이 이제 번역된 파일과 함께.translation-cache.json을 스테이징합니다. - 에이전트 채팅이 더 이상 확인이 필요한 도구가 바운드되지 않은 에이전트 세션에서 실행될 때 충돌하지 않습니다 — 게이트는 라우팅할 에이전트가 없을 때 우아하게 빠져나갑니다.
- 재시도가 더 이상 엄격한 교대 제공자(Claude)에서 중단된 턴의 고아 사용자 메시지를 포함하는 히스토리에서 실패하지 않습니다 — 연속된 같은 역할 메시지가 디스패치 전에 단일 턴으로 축소됩니다.
- 연습장 재시도가 더 이상 사전 스트림 윈도우 중에 쿼리를 잠깐 두 번 표시하지 않습니다.
- ReAct 에이전트가 이제 운영자가 승인 요청을 거부한 후 승인을 인정하고 중지합니다 — 다시 표현된 도구 호출을 재시도하는 대신.
- 연습장 “제안된 후속 질문”이 반환되고 이제 에이전트별로 선택 사항입니다(기본값 꺼짐; 에이전트 설정의 새로운
Follow-up Suggestions토글).
[v0.8.5] - 2026-04-23
Added
-
기여자 친화적 i18n 워크플로우: 기여자는 더 이상 영어 소스 파일을 건드리는 PR을 제출하기 위해
LLM_API_KEY를 구성할 필요가 없습니다. 로컬 pre-commit 번역 단계를 건너뛰면(키 없음), 새로운.github/workflows/i18n-sync.yml워크플로우가 PR 병합 후master에서 EN → ZH/JA/KO/DE/FR로 번역하고 자동으로 커밋합니다. pre-commit 훅은 이제 생성된 로케일 파일에 대한 수동 편집을 거부합니다(ALLOW_LOCALE_EDIT=1오버라이드는 정당한 번역 수정용). 이는 EN 소스와 번역된 출력 간의 무음 드리프트를 방지합니다. -
i18n CI 폴백 엔드-투-엔드 검증: 스모크 테스트 푸시(EN 전용, 로컬 번역 훅 건너뜀)로 GitHub Actions 워크플로우가 변경된 소스를 감지하고, 5개 로케일 모두로 번역하며,
[skip ci]로master에 자동 커밋하여 재귀를 방지함을 확인했습니다. - Exa 통합 문서 페이지: 사이드바의 전용 Integrations 섹션과 함께 첫 번째 클래스 Exa 페이지로, 전체 Exa 검색 표면(neural / fast / deep-reasoning / instant), 필터링, 콘텐츠 검색, 그리고 뉴스 모니터링, 연구 논문 검색, 심화 추론 에이전트를 위한 3가지 튜닝된 프리셋을 다룹니다. Exa 통합 디렉토리의 파트너 대면 랜딩 페이지 역할을 합니다.
-
신창(信创) 데이터베이스 지원: Database Connector는 이제 PostgreSQL/MySQL과 함께 KingbaseES(人大金仓), HighGo(瀚高), DM8(达梦)을 나열합니다. KingbaseES와 HighGo는 PG 호환이며 추가 종속성 없이
asyncpg를 재사용합니다. DM8은 공식dmPython공급업체 휠을 사용합니다. 독립형scripts/test_xinchuang_dbs.py를 통해 운영자는 CLI에서 라이브 연결을 확인할 수 있습니다. -
Feishu Channel + 확인 게이트 via IM: 새로운
Channel리소스 타입(조직 범위, 저장 시 암호화된 자격증명)으로 조직이 아웃바운드 메시징을 위해 Feishu 앱을 연결할 수 있습니다.requires_confirmation=True로 표시된 도구는 이제 포털의 확인 대화 상자에만 표시하는 대신 구성된 Feishu 그룹에 Approve/Reject 인터랙티브 카드를 전송합니다. 그룹의 모든 권한 있는 멤버가 Feishu에서 직접 승인 또는 거부할 수 있습니다. Settings → Channels 관리 UI(목록, 더티 상태 보호를 포함한 생성/편집, 복사 가능한 콜백 URL이 있는 세부 정보, 테스트 전송), CRUD API(/api/channels), 그리고 서명 검증 및 URL 챌린지 지원이 있는 Feishu 이벤트 콜백 엔드포인트(/api/channels/{id}/callback)를 다룹니다. v0.9 IM Channel Integration 로드맵 항목의 첫 번째 단계로, 2026-04-24 로드쇼를 위해 일정보다 앞서 출시됩니다. -
Agent Hook System(스켈레톤):
src/fim_one/core/hooks/의 새로운PreToolUseHook/PostToolUseHook추상화로 결정론적 로직이 LLM 루프 외부에서 실행될 수 있습니다. FeishuGateHook은 첫 번째 구체적 구현으로, 확인 게이트 흐름에 연결됩니다. 전체 훅 라이프사이클 + 사용자 정의 YAML 훅은 v0.9 범위로 남습니다. -
Hook System은 이제 ReAct 및 DAG 런타임에서 라이브입니다:
model_config_json에서hooks.class_hooks를 선언하는 에이전트는 모든 채팅 세션에서 이러한 훅을 인스턴스화하고 등록합니다. 첫 번째 소비자인FeishuGateHook은 에이전트가requires_confirmation=True로 표시된 커넥터 액션을 가진 도구를 호출할 때 자동으로 실행되고, 조직의 Feishu 그룹에 Approve/Reject 카드를 게시하며, 도구를 차단하고, 판정에 따라 재개하거나 중단합니다. 이전에는 훅 추상화가 제자리에 있었지만 웹 레이어의 아무것도 라이브 채팅에 연결하지 않았습니다. -
Channels 및 Hook System 아키텍처 문서화: 새로운
docs/architecture/hook-system.mdx는 3가지 훅 포인트, 훅이 LLM 루프 외부에서 실행되는 이유, 그리고 FeishuGateHook 엔드-투-엔드를 설명합니다. 기존 아키텍처 페이지(system-overview, organization, react-engine, philosophy)는 이를 상호 연결합니다. README는 이제 Messaging Channels을 첫 번째 클래스 v0.8 기능으로 나열하고 Application Layer 다이어그램은 Portal/API/iframe과 함께 IM 대상을 포함합니다. -
Hook Approval Playground: Channels 세부 정보 시트는 이제 민감한 도구 호출을 시뮬레이션하고, 연결된 Feishu 그룹에 실제 확인 카드를 푸시하며, 검토자의 결정을 실시간으로 폴링하는 “Test Approval Flow” 액션을 가집니다. 기존 미리보기 버튼과 달리, 이는 전체 프로덕션 경로(진정한
ConfirmationRequest행, 실제 Feishu 콜백, 상태 전환)를 실행하므로 데모 및 사전 롤아웃 리허설은 프로덕션 훅이 사용할 동일한 코드 경로를 사용합니다. - 에이전트별 작업 완료 알림: 에이전트는 이제 장시간 실행되는 ReAct 또는 DAG 작업이 완료될 때 조직의 채널(현재 Feishu)에 요약 카드를 푸시할 수 있습니다. Settings → Agent → Notifications에서 에이전트별로 구성 가능합니다. 일반 아웃바운드 알림 패턴의 첫 번째 소비자입니다.
-
구성 가능한 확인 게이트 — 인라인 또는 채널: 모든 에이전트는 이제 Settings에서 “Approval” 섹션을 가지며, 3가지 라우팅 모드(Auto / Inline only / Channel only), 승인자 범위 선택기(initiator / agent owner / anyone in the org), “모든 도구 호출에 대해 확인 필요” 오버라이드, 그리고 명시적 승인 채널 선택기를 가집니다. Auto 모드는 연결된 채널이 존재하면 이를 사용하고 그렇지 않으면 채팅 스트림의 인라인 승인 카드로 우아하게 폴백합니다. 따라서 채널이 없는 에이전트도 무음으로 실패하는 대신 실제 승인 UX를 얻습니다. 새로운
POST /api/confirmations/{id}/respond엔드포인트는 Feishu 웹훅과 단일 결정 기록 경로를 공유하므로 모든 승인(채팅에서 클릭하든 Feishu 그룹에서든)은 동일한approver_user_id및decided_at감사 필드를 스탬프합니다.
변경 사항
- Playground 로딩 표시기가 이제 미묘한 텍스트 shimmer를 사용합니다. 기존의 8초 후 가짜 진행률로 멈추는 진행 표시줄을 대체했습니다. 기존의 두 가지 shimmer 구현(
.shiny-text와.text-shimmer)을 단일 테마 인식 primitive로 통합했으며, 선택적 warm preset을 지원합니다. - Connector 카드는 이제 connector에
allow_fallback이 비활성화되어 있을 때 “Private default” 배지(툴팁 포함)를 표시합니다. 이를 통해 소유자는 어떤 connector가 모든 사용자에게 자신의 자격증명을 제공하도록 요구하는지 한눈에 파악할 수 있습니다. Connector 설정 양식의 Allow-Fallback 토글 아래 도움말 텍스트도 이 플래그가 다른 사용자와의 공유만 제어하며, 소유자는 자신의 기본 자격증명을 항상 사용할 수 있다는 점을 명확히 합니다.
수정됨
allow_fallback=false이고 기본 자격증명만 있는(사용자별 자격증명 없음) 커넥터의 소유자가 만든 커넥터 호출이 더 이상 “Requires authentication” 401 오류를 반환하지 않습니다. 소유자는 이제 폴백 게이트에서 제외됩니다 — 해당 플래그는 다른 사용자가 소유자의 기본 자격증명을 빌릴 수 있는지만 제어합니다. 이전에는 소유자의 에이전트가 자동으로 인증되지 않은 요청을 보내고 있었으며, 같은 문제가 워크플로우connector_action노드에도 영향을 미쳤습니다.- 대화 내보내기가 이제 자동 라우팅된 DAG 대화에 대해 올바른 모드 레이블(“Planner” / “规划”)을 표시합니다. 이전에는 항상 “Standard”로 표시되었습니다.
- 내보내기 타임스탬프가 이제 사용자가 설정한 시간대를 따릅니다. 원시 UTC를 표시하지 않습니다.
- 업로드된 파일 콘텐츠가 더 이상 내보낸 대화로 유출되지 않습니다. 사용자의 메시지 텍스트만 포함됩니다.
- 병렬 도구 호출이 더 이상 제공자가 스트리밍된 도구 호출 델타마다
index=0을 재사용할 때 충돌하지 않습니다. 집계자가 이제 ID 또는 이름 변경을 통해 경계를 감지하고 후속 델타를 올바른 슬롯으로 재매핑합니다. - 설정 → 채널이 이제 현재 사용자의 조직 역할을 반영합니다. 멤버(관리자/소유자 아님)는 비활성화된 “새 채널” 버튼, 숨겨진 편집/활성화-비활성화/삭제 작업, 읽기 전용 배너, 권한 인식 빈 상태를 봅니다 — 제출 시 “Organization admin access required” 오류로 실패한 활성화된 CTA 대신입니다.
- 세션 만료 리다이렉트가 이제 쿼리 문자열을 보존하므로 사용자는 재인증 후 정확한 탭/필터로 돌아갑니다. 기본 경로 대신입니다.
- Feishu 채널 양식이 더 이상 대화 선택기와 상호작용할 때 허위 “저장하지 않은 변경 사항 폐기” 프롬프트를 표시하지 않습니다. 대화 선택기는 대화 상자 위에 계층화되어 있습니다.
- Feishu 채널 설정 힌트가 더 이상 UI가 이미 중국어일 때 중국어 레이블을 복제하지 않습니다(예: 이전에 “事件与回调 (事件与回调)“로 렌더링됨).
- 스키마 관리자의 “모두 주석 달기”가 더 이상 500 내부 서버 오류를 반환하지 않습니다 — 전체 주석 백엔드 경로에 모든 호출을 차단한 바인딩되지 않은 변수 버그가 있었습니다.
- 데이터베이스 커넥터를 편집할 때 이제 암호 필드에
********자리 표시자를 표시합니다. 세 개의 글머리 기호 마스킹 텍스트 대신입니다. 필드를 비워두면 저장된 암호가 유지된다는 것이 명확합니다. - 커넥터 작업을 업데이트할 때 더 이상 세부 정보 패널이 축소되지 않습니다 — 편집된 작업이 선택된 상태로 유지되므로 사용자가 계속 반복할 수 있습니다.
- AI 커넥터 편집기가 이제 성공, 부분 실패, 완전 실패를 구분합니다. 세 가지 모두에 대해 동일한 “completed” 메시지를 표시하는 대신입니다. 실패 이유가 인라인으로 표시되므로 사용자가 실제로 무엇이 잘못되었는지 볼 수 있습니다.
- AI 커넥터 편집기가 더 이상 한 번에 여러 작업을 자동으로 삭제할 수 없습니다. 대량 삭제(>2개 작업)는 이제 사용자의 지시에서 명시적인 파괴적 키워드(“rebuild”, “全部重建”, “wipe” 등)를 요구합니다. 그렇지 않으면 작업이 명확한 오류로 거부되어
requires_confirmation/ JMESPath 설정을 실수로 손실되는 것으로부터 보호합니다. - 포털 채팅의 확인 카드가 이제 요청이 채널(예: Feishu)로 라우팅되었는지 또는 인라인으로 처리되었는지 표시합니다. 누가 승인할 수 있는지에 대한 사람이 읽을 수 있는 힌트와 함께(개시자, 에이전트 소유자 또는 조직 멤버). 채널 라우팅된 요청은 또한 인라인 대기 중 카드를 생성하므로 사용자가 알림이 실제로 전송되었는지 궁금해하지 않습니다.
- Feishu 승인 카드가 이제 첫 번째 결정 후 읽기 전용이 됩니다.
/callback웹훅이 승인/거부 버튼이 제거되고 헤더가 녹색(승인됨) 또는 빨간색(거부됨)으로 칠해진 대체 카드를 반환하여 반복 클릭을 방지합니다. 오래된 Feishu 클라이언트에서 여전히 도착하는 중복 클릭은 “This request was already approved/rejected.” 토스트와 결정된 카드의 새 사본을 받아 오래된 보기가 따라잡습니다. - 채널 행의 일반 “Send Test Message” 작업과 세부 정보 시트를 복원했습니다. 승인 Playground는 전체 훅 왕복을 실행하지만, 알림 전용 채널(승인 훅이 연결되지 않음)은 여전히 빠른 자격증명/연결성 정상 확인이 필요하며, 일반 테스트 전송이 이를 다룹니다.
- 동일한 Feishu 승인 카드에 대한 동시 클릭이 더 이상 모두 성공할 수 없습니다.
/callback핸들러가 이제 조건부UPDATE ... WHERE status='pending'을 통해ConfirmationRequest상태를 전환하고 영향을 받은 행 수를 사용하여 어느 호출자가 “승리”했는지 결정합니다. 이전에는 두 개의 병렬 요청이 모두pending을 읽고 쓰기를 경쟁할 수 있어 잠재적으로 동일한 행에서 승인된 후 거부되는 결과가 나올 수 있었습니다. - 대기 중인 승인 요청이 이제
CHANNEL_CONFIRMATION_TTL_MINUTES(기본값 24시간) 후 자동으로 만료됩니다. 백그라운드 스위퍼를 통해 며칠 후 오래된 클릭이 이미 해체된 에이전트 상태를 전환하는 것을 방지합니다. 만료된 카드의 다음 클릭은 회색 “Expired” 결정된 카드와 “no longer active” 토스트를 받습니다. - Send Test Message가 이제 일반 텍스트 알림(승인/거부 버튼 없음)을 전달하고 채널 세부 정보 시트에만 있습니다 — 행 드롭다운이 아닙니다. 승인 훅을 사용할 의도가 없는 사용자는 “test” 메시지의 대화형 버튼으로 혼동되지 않습니다. 승인 왕복 테스트는 승인 Playground 버튼을 통해 계속 사용 가능합니다.
- 채널 세부 정보 시트가 강화되었습니다. “How to finish setup”이 이제 기본적으로 축소된 축소 가능한 섹션입니다(이미 구성된 채널의 시트를 지배하지 않도록), 외부 패딩이 감소하여 콘텐츠가 시트 가장자리에 더 가깝게 앉습니다.
- Builder AI가 더 이상 마스킹된(
****) 자격증명을 누락된 것으로 보고하지 않습니다 — 이제 구성된 것으로 인식하고 거짓 “credential missing” 지침을 건너뜁니다. - Playground 에이전트 목록이 이제 게시된 것만이 아닌 모든 액세스 가능한 에이전트를 표시합니다. 초안 에이전트를 먼저 게시하지 않고 테스트할 수 있습니다.
- 채팅 이미지 업로드가 더 이상 잘못된
data:URL에서 스트림을 충돌시키지 않습니다 — MIME 추출기가 이제 생성 중간에 IndexError를 발생시키는 대신 안전하게application/octet-stream으로 폴백합니다. - Playground 이미지 썸네일이 이제
AbortController를 통해 언마운트 시 진행 중인 페치를 취소합니다. 빠른 탐색 중 오래된 blob-URL 할당과 낭비된 대역폭을 방지합니다.
[v0.8.4] - 2026-04-17
추가됨
- 대화 복구: 합성 tool_result 행이 중단된 턴 이후에도 지속되며, 클라이언트는 마지막으로 본 커서와 함께
POST /chat/resume을 통해 끊긴 SSE 스트림을 재개할 수 있습니다. - Playground는 이제
/chat/resume엔드포인트를 사용하여 끊긴 SSE 스트림을 지수 백오프(최대 3회 시도)로 자동 재연결하며, 복구 중에 “재연결 중…” 표시기를 표시합니다. - 프롬프트 캐시 관찰성:
cache_read_input_tokens과cache_creation_input_tokens이 LLM 응답에서 캡처되고,TurnProfiler에서 턴별로 집계되며,turn_cache요약 행(read/create tokens + estimated savings)으로 기록되고, 채팅done_payload의 새로운cache필드에 표시됩니다. Anthropic 프롬프트 캐싱이 실제로 작동하는지 확인할 수 있으며, API 중계 스테이션이 캐시 할인을 준수하는지 여부를 감지하는 이중 역할을 합니다.
Changed
- 시스템 프롬프트는 이제 Anthropic 프롬프트 캐싱 중단점이 있는 메모이제이션된 섹션 레지스트리를 사용합니다. 안정적인 접두사에서 캐시된 접두사에 대한 턴당 토큰 비용을 약 60-80% 감소시킵니다(Claude 모델의 경우). ReAct JSON 모드, 네이티브 함수 호출 모드, 합성은 캐시 가능한 제공자(Claude, Bedrock Anthropic, Vertex Claude)에 대해 두 개의 시스템 메시지를 내보내고 다른 모든 제공자에 대해서는 단일 연결된 메시지로 폴백합니다.
수정됨
- 사고/추론 토큰이 이제 다중 턴 대화에서 유지됩니다 — Anthropic
signature필드가 캡처되고 API 요구사항에 따라 재생됩니다. - 제공자 인식 추론 재생 정책:
reasoning_content(DeepSeek-R1, Qwen QwQ, Gemini thinking, OpenAI o-series에서)는 더 이상 후속 턴에서 비-Anthropic 제공자에게 재생되지 않습니다. 이전에는 필드가ChatMessage.to_openai_dict()에서 무조건 직렬화되었으며, 이는 제공자 문서를 위반했습니다(DeepSeek과 Qwen 모두 “메시지 히스토리에reasoning_content를 다시 보내지 마세요”를 명시적으로 문서화함). 모든 다중 턴 교환에서 자동 접두사/KV 캐시를 자동으로 무효화했습니다. 정책은core/prompt/reasoning.py에 중앙화되어 있습니다 — Claude 계열(Bedrock 및 Vertex 프록시 포함)은 필요에 따라 서명과 함께 사고 블록을 계속 재생합니다.
[v0.8.3] - 2026-04-16
추가됨
convert_to_markdown기본 제공 도구 — 모든 파일, URL, YouTube 링크 또는 데이터 URI를 Microsoft의 MarkItDown을 사용하여 깔끔한 Markdown으로 변환하는 새로운 범용 Agent 도구입니다. PDF, Word (.docx), Excel (.xlsx/.xls), PowerPoint (.pptx), HTML, JSON, CSV, XML, ZIP, EPUB, Outlook .msg, 이미지, 오디오(음성 → 텍스트) 및 YouTube 자막을 지원합니다. 모든 agent에서 기본적으로 사용 가능하며web_fetch와 동일한 계층입니다. 비전 기능이 있는 LLM이 구성되면 공식markitdown-ocr플러그인을 통해 임베드된 이미지와 스캔된 PDF 페이지가 자동으로 OCR됩니다. 이전에는 이 기능이 백그라운드 RAG 수집 파이프라인 내에 숨겨져 있었으며, 이제 agent는 대화형 경로에서 사용할 수 있습니다.markitdown-ocr을 통한 문서 OCR — DOCX / XLSX / PPTX의 임베드된 이미지와 스캔된 PDF 페이지는 이제 FIM One의 나머지 부분이 라우팅하는 동일한 비전 기능이 있는 LLM을 사용하여 OCR됩니다. 기본 제공convert_to_markdown도구와 RAG 수집 파이프라인 모두에 적용되므로 채팅 시간 변환과 지식 기반 수집이 동일한 입력에 대해 바이트 동일의 Markdown을 생성합니다.- 문서 OCR을 위한 범용 비전 제공자 지원 — 새로운
LiteLLMOpenAIShim덕 타입은 모든 FIM OneOpenAICompatibleLLM을 openai SDK의.chat.completions.create(...)API 형태로 래핑한 다음litellm.completion()을 통해 디스패치합니다. MarkItDown(openai SDK 표면을 하드코딩함)은 이제 Anthropic Claude, Google Gemini, Azure, Bedrock 및 LiteLLM이 지원하는 다른 모든 제공자를 사용할 수 있습니다 — FIM One에서 제공자별 어댑터 코드가 필요 없습니다. - 비전 인식 RAG 수집 — Office 문서 및 스캔된 PDF의 지식 기반 업로드는 이제 워크스페이스의 기본 비전 LLM(DB 우선, ENV 폴백)을 확인하고 수집 중 OCR을 위해 MarkItDown으로 전달합니다. 제로 회귀: 비전 기능이 있는 모델을 사용할 수 없을 때 수집은 자동으로 텍스트 전용 모드로 폴백됩니다 — 정확히 기능 이전 동작입니다.
- 확장된 MarkItDown 형식 커버리지 — RAG는 이제 MarkItDown의 오디오 전사 및 outlook 추가 기능을 통해
.pdf,.msg(Outlook),.epub,.mp3,.wav및.m4a를 기본적으로 수집합니다. YouTube URL은markitdown[youtube-transcription]을 통해convert_to_markdown으로 흐릅니다. LLM_SUPPORTS_VISION환경 변수 — ENV 모드 문서 OCR 폴백에 대한 선택적 옵트아웃(=false). 기본 동작은 낙관적(true)이며, 일반적인 ENV 설정(gpt-4o,claude-3-5-sonnet,gemini-1.5-pro/flash)을 포함합니다. ENV로 구성된LLM_MODEL이 비전을 지원하지 않을 때만false로 설정하십시오(예:deepseek-v3,qwen-chat,llama-3.1,gpt-3.5-turbo,o1-mini). 모든 문서 업로드에서 실패한 비전 호출을 건너뛰려면false로 설정하십시오. 관리자가 선별한 ModelGroup이 활성화되면 완전히 무시됩니다 — DB 모드는 사용 가능할 때 항상 신뢰할 수 있는 소스입니다.- 턴 수준 프로파일러 — 각 ReAct 턴은 이제 단계 수준 타이밍(
memory_load,compact,tool_schema_build,llm_first_token,llm_total,tool_exec)을 턴당 단일 구조화된 로그 라인에 기록합니다.REACT_TURN_PROFILE_ENABLED를 통해 토글 가능합니다(기본값: 켜짐; 제로 오버헤드 no-op의 경우false로 설정). - 구조화된 컴팩트 작업 카드 — 대화 컴팩션은 이제 자체 9섹션 마크다운 출력을 입력된
WorkCard로 파싱하고 새로운 컴팩트를 이전 카드에 병합하므로 긴 세션 초반의 오류 및 보류 중인 작업이 처음부터 다시 요약되는 대신 여러 컴팩션 라운드에서 유지됩니다.
변경됨
- 사용자별 속도 제한 — LLM 계층 속도 제한기가 이제 단일 프로세스 전역 버킷 대신 사용자별로 별도의 버킷을 유지합니다. 한 명의 시끄러운 사용자가 같은 워커의 다른 모든 사용자를 제한하는 것을 방지합니다.
LLM_RATE_LIMIT_PER_USER를 통해 토글 가능합니다(기본값: 켜짐).
수정됨
- 중단된 tool_use 복구 — 도구 실행 중 중단된 대화(사용자 Stop, SSE 연결 해제, 충돌)는 이전에
tool_use블록이 있지만 일치하는tool_result가 없는 어시스턴트 메시지를 남겨두어 다음 턴에서 LLM API로부터 불명확한 HTTP 400 오류가 발생했습니다.DbMemory.get_messages()는 이제 읽기 경로에서 이러한 중단된 블록을 감지하고 합성된[interrupted]tool_result로 복구합니다. 원본 DB 로그는 변경되지 않습니다. - tool_calls가 있는 빈 콘텐츠 어시스턴트 메시지가 더 이상 삭제되지 않음 — DbMemory 로드 경로 필터는 이전에 빈 텍스트 콘텐츠가 있는 어시스턴트 행을 자동으로 삭제했습니다. 네이티브 함수 호출 중간 단계(텍스트 없이
tool_calls만 포함)가 제거되고 있었습니다. 필터는 이제 빈 콘텐츠와tool_calls없음을 모두 요구합니다.
[v0.8.2] - 2026-04-10
Added
- Intelligent Document Processing (Vision-Aware) — 모델 기능에 따른 적응형 문서 처리. 대상 LLM이 비전을 지원하는 경우(GPT-4o, Claude 3/4, Gemini), PDF 페이지가 이미지로 렌더링되어 비전 콘텐츠 블록을 통해 전송되므로 완벽한 시각적 충실도를 제공합니다. 텍스트 전용 모델은 pdfplumber 텍스트 추출로 폴백됩니다. 두 가지 모드: Vision 및 Text-only.
DOCUMENT_PROCESSING_MODE,DOCUMENT_VISION_DPI,DOCUMENT_VISION_MAX_PAGES환경 변수로 구성 가능합니다. Admin에서 모델별supports_vision토글. - Document vision pipeline — 채팅에 업로드된 DOCX, PPTX 및 PDF 파일은 이제 포함된 이미지가 추출되어 모델에서 비전이 활성화된 경우 LLM으로 비전 콘텐츠로 전송됩니다.
- Multi-turn vision persistence — 업로드된 문서 및 이미지의 비전 콘텐츠가 대화 턴 전체에 걸쳐 유지되므로 모델이 대화 전체에서 시각적 컨텍스트를 유지합니다.
- Smart PDF processing — 텍스트가 풍부한 PDF 페이지는 텍스트와 포함된 이미지를 별도로 추출합니다(토큰 절약). 스캔된 페이지 또는 이미지 전용 페이지는 최대 충실도를 위해 전체 페이지 PNG로 렌더링됩니다.
- Pre-built sandbox image — 일반적인 데이터 과학 패키지(pdfplumber, Pillow, pandas 등)가 포함된
Dockerfile.sandbox이므로 AI 코드 실행이--network=none컨테이너에서 즉시 작동합니다. - Resource Fork completion — 이제 모든 5가지 리소스 유형이 fork를 지원합니다: Agent, Connector, Workflow, MCP Server 및 Skill. KB fork 제거됨(본질적으로 사용자 로컬).
Changed
- 더 빠른 채팅 응답 완료 — SSE 스트림이 에이전트 완료 직후 즉시 종료되며, 제목 생성 및 후속 제안은 응답을 차단하지 않고 백그라운드에서 실행됩니다.
- 더 똑똑한 컨텍스트 압축 — 대화 압축이 구조화된 9섹션 형식을 사용하여 긴 세션에서 핵심 정보(원래 요청, 오류, 대기 중인 작업)를 더 잘 보존합니다.
- 감소된 에이전트 루핑 — 에이전트 프롬프트에 반복 방지 지침이 추가되었으며, 반복된 동일한 도구 호출을 더 빨리 감지하도록 사이클 감지 임계값이 낮아졌습니다.
- 더 빠른 요청 시작 — LLM 구성 조회 및 도메인 분류가 동시에 실행되어 요청당 오버헤드가 400-1100ms 감소합니다.
- 더 나은 빈 도구 처리 — 출력을 반환하지 않는 도구는 이제 빈 “(no output)” 대신 설명적인 메시지를 생성하여 불필요한 재시도를 방지합니다.
- 자동 이전 도구 결과 정리 — 가장 최근 6개보다 오래된 도구 결과는 컨텍스트 압축 전에 자동으로 삭제되어 대화를 간결하게 유지합니다.
- 도구 결과 집계 예산 — 총 도구 결과 토큰은 세션당 40K로 제한되며, 예산을 초과하면 새 결과가 잘려서 큰 API 응답으로 인한 컨텍스트 팽창을 방지합니다.
- 컨텍스트 오버플로우 자동 복구 — LLM이 컨텍스트 길이 오버플로우로 인해 요청을 거부할 때, 에이전트는 전체 대화를 중단하지 않고 자동으로 50%로 압축하여 재시도합니다.
- 키워드 기반 도구 선택 — 쿼리가 이름이나 설명 키워드로 특정 도구와 명확하게 일치할 때, 에이전트는 LLM 기반 도구 선택 호출을 건너뛰어 200-500ms를 절약합니다.
- LLM 연결 풀링 — 모든 LLM API 호출은 이제 최적화된 keepalive 설정이 있는 단일 연결 풀을 공유하여 전체 세션에서 연결 오버헤드를 줄입니다.
- 더 똑똑한 완료 확인 — 긴 상세 답변(>200 토큰)의 경우 답변 후 검증 단계를 건너뛰어 불필요한 LLM 왕복을 제거합니다.
- 공급자 중단 시 모델 폴백 — 주 모델을 사용할 수 없을 때(속도 제한, 과부하 또는 다운), 에이전트는 전체 대화를 실패하지 않고 자동으로 빠른 모델로 재시도합니다.
수정됨
- 읽을 수 없는 파일에 대한 AI 에이전트 환각 — AI 에이전트가 파일을 읽을 수 없을 때(예: 이미지 기반 PDF), 이전에는 관련 없는 다른 파일을 읽고 해당 내용을 대상 파일의 내용으로 제시했습니다. 이제 시스템 프롬프트의 파일 무결성 가드레일이 이를 방지합니다.
- 업로드를 위한 파일 ID 주입 — 업로드된 파일은 이제 메시지 컨텍스트에 UUID file_id를 포함하므로, 에이전트가 추측 없이
read_uploaded_file을 통해 직접 접근할 수 있습니다. - 새로운 모델 구조에서 비전 토글 읽기 — 모델 구성의
supports_vision플래그가 ModelGroup/ModelProviderModel ORM 구조에서 올바르게 읽혀지지 않았습니다. 수정되었습니다. - 읽을 수 없는 파일에 대한 개선된 오류 메시지 — 파일을 읽을 수 없을 때, 도구는 이제 일반적인 오류 대신 특정 지침(파일 유형, 비전 제안)을 반환합니다.
[v0.8.1] - 2026-03-29
추가됨
- 타임존 인식 관리자 알림 — 관리자 알림 이메일이 항상 UTC를 표시하는 대신 각 수신자의 구성된 타임존으로 이벤트 시간을 표시합니다.
- 점진적 데이터베이스 도구 공개 — 개별 테이블별 도구를 대체하는
list_tables/discover/query서브커맨드가 있는 단일database메타 도구입니다.DATABASE_TOOL_MODE환경 변수를 통해 구성 가능합니다(progressive기본값,legacy폴백). - 온디맨드 도구 로딩 — 12개 이상의 도구를 사용할 수 있을 때,
request_tools메타 도구를 통해 에이전트가 초기 선택에 갇혀있는 대신 대화 중간에 동적으로 추가 도구를 로드할 수 있습니다. - 점진적 MCP 도구 공개 — 개별 서버별 도구를 대체하는
discover/call서브커맨드가 있는 단일mcp메타 도구입니다.MCP_TOOL_MODE환경 변수를 통해 구성 가능합니다(progressive기본값,legacy폴백). - 턴별 토큰 예산 회로 차단기 —
REACT_MAX_TURN_TOKENS환경 변수는 폭주하는 에이전트 루프에 대한 긴급 정지를 제공합니다. 기본값0(무제한) — 일일 비용 제어를 위해 사용자별token_quota를 대신 사용하세요. - 모델별 Native Function Calling 토글 —
tool_choice_enabled설정(ENV + 관리자 모델별)을 통해 강제 도구 선택을 거부하는 모델이 Level 1을 건너뛰고 JSON Mode로 직접 이동할 수 있습니다. 설정 → 모델 → 고급에서 구성 가능합니다. - DAG 품질 개선 — 5가지 개선 사항: 비빠른 단계에 대한 기본 모델을 일반 모델로 업그레이드; 계획에서 스킬 자동 발견; 법률/의료/금융 도메인에 대한 인용 검증자; 구성 가능한 절단 승수를 사용한 구조화된 콘텐츠 컨텍스트 보존; 라우터의 도메인 분류 및 도메인 인식 모델 선택.
- ReAct의 도메인 모델 에스컬레이션 — 전문 도메인(법률/의료/금융)은 필수 웹 검색 및 인용 검증을 통해 추론 모델로 자동 에스컬레이션됩니다.
- 파일 첨부 다운로드 — 채팅 메시지의 파일 카드를 클릭하여 원본 파일을 다운로드할 수 있습니다.
- 관리자 알림 마스터 스위치 — 런타임 SMTP 감지를 통한 관리자 이메일 알림의 전역 온/오프 토글입니다. SMTP가 구성되지 않았을 때 경고 배너를 표시하고 모든 알림 제어를 비활성화합니다.
- SMTP Reply-To 헤더 — 새로운
SMTP_REPLY_TO환경 변수를 통해 회신이 발신자와 다른 주소로 이동할 수 있습니다. - Resource Fork Phase 1 (MCP Server + Skill) —
POST /api/mcp-servers/{id}/fork및POST /api/skills/{id}/fork엔드포인트는visibility=personal및forked_from계보 추적을 통해 사용자 소유의 깊은 복사본을 생성합니다. 암호화된 env/헤더는 MCP Server fork에서 건너뛰고; 게시 상태는 Skill fork에서 건너뜁니다. Alembic 마이그레이션은 두 테이블에forked_from열을 추가합니다. 41개 테스트. - Workflow Connection Dep 자동 구독 —
DependencyAnalyzer._resolve_workflow는 이제 순환 감지(방문 집합)를 통해 서브 워크플로우 종속성을 재귀적으로 해결합니다. 에이전트 및 서브 워크플로우 노드가 종속성 매니페스트에서 콘텐츠 종속성으로 올바르게 추가됩니다. 누락된 리소스는 정상적으로 처리됩니다(로그 경고, 실패 없음). 19개 테스트. - 사전 구축된 솔루션 템플릿(Market Seed Content) — 8개의 수직 솔루션 템플릿이 첫 사용자 등록 시 멱등적으로 부트스트랩됩니다: Financial Audit, Contract Review, Data Reporting, IT Helpdesk, HR Onboarding, Sales Assistant, Content Writer, Meeting Summary. 각각 중국어 SOP가 포함된 Agent + Skill을 번들로 제공합니다. Market org에 게시됩니다(
visibility=org,publish_status=approved) 즉시 마켓플레이스 가용성을 위해. 4개 테스트. - ReAct 순환 감지 — 반복된 동일한 도구 호출의 결정론적 감지입니다. 동일한 인수를 사용한 3개의 연속 호출 후 경고를 주입하여 에이전트가 실패한 도구에서 루핑하는 것을 방지합니다.
REACT_CYCLE_DETECTION_THRESHOLD를 통해 구성 가능합니다. - ReAct 완료 체크리스트 — 도구가 사용되었을 때 최종 답변을 수락하기 전의 일회성 검증 프롬프트로, 조기 또는 불완전한 응답을 줄입니다. 에이전트 인스턴스별로 토글 가능합니다.
Changed
- 완료 체크리스트 최소 도구 임계값 — 체크리스트는 이제 에이전트가 3개 이상의 도구 호출을 수행했을 때만 실행됩니다(
REACT_COMPLETION_CHECK_MIN_TOOLS를 통해 구성 가능). 간단한 1-2개 도구 작업은 불필요한 지연을 피하기 위해 검증을 건너뜁니다. - 동적 시스템 프롬프트 예산 책정 — 컨텍스트 예산 계산에서 고정된
SYSTEM_PROMPT_RESERVE(4K 토큰)를 제거했습니다. ContextGuard는 이제 시스템 프롬프트를 동적으로 고려하여 각 반복마다 약 4K의 추가 사용 가능한 컨텍스트를 제공합니다. - 중앙화된 도구 잘라내기 — 모든 도구 유형은 이제 공유 모듈에 잘라내기를 위임합니다.
TOOL_OUTPUT_MAX_CHARS,TOOL_OUTPUT_MAX_ITEMS,TOOL_OUTPUT_MAX_BYTES환경 변수를 통해 기본값을 구성할 수 있습니다. - 도메인 감지 분리 — 도메인 분류는 각 엔드포인트에서 독립적으로 실행되며, 더 이상 자동 라우팅과 함께 번들로 제공되지 않습니다. 도메인 SOP 지침은 웹 검색을 의무화하기보다는 안내하도록 완화되었습니다.
AUTO_ROUTING환경 변수 제거됨 — 자동 엔드포인트는 항상 쿼리를 분류합니다.
수정됨
- 중복 메시지 제출 — 채팅 입력이 이제 동기 가드를 사용하여 빠른 클릭 시 동일한 메시지가 여러 번 제출되는 것을 방지합니다.
- 구조화된 출력 저하 체인 — 3단계 폴백(native FC → JSON mode → plain text)이 이제 모든 수준을 올바르게 통과합니다.
json_mode_enabledDB 값 무시됨 — Admin을 통해 구성된 모델이 이제 환경 변수로 항상 폴백하는 대신 모델별 설정을 올바르게 사용합니다.- DAG 계획 실패 메시지 — 이제 원본 파이프라인 오류 대신 사용자 친화적인 이중 언어 메시지를 표시합니다.
- MCP 서버 소유자 allow_fallback 우회 — 서버 소유자가 더 이상
allow_fallback=False로 차단되지 않습니다.
[v0.8] - 2026-03-20
추가됨
- 마켓플레이스 리디자인 Phase 1 — Solutions + Components — 2계층 마켓 모델(Solutions: Agent/Skill/Workflow; Components: Connector/MCP Server)과 범위 선택기(Global Market / org). KB가 마켓 범위에서 제거됨. 통합 구독 모델.
- 스마트 파일 콘텐츠 주입 +
read_uploaded_file도구 — 소규모 업로드(32K 문자 이하)는 LLM 컨텍스트에 자동 인라인됨; 대용량 파일은 메타데이터 + 도구 힌트 제공. 페이지네이션 및 정규식 검색이 포함된 이중 모드 읽기 도구.GET /api/files/{file_id}/content엔드포인트. - 워크플로우 블루프린트 시스템 — 다단계 자동화를 위한 시각적 워크플로우 편집기: 25개 노드 타입(Start, End, LLM, ConditionBranch, QuestionClassifier, Agent, KnowledgeRetrieval, Connector, HTTPRequest, VariableAssign, TemplateTransform, CodeExecution, Iterator, Loop, VariableAggregator, ParameterExtractor, ListOperation, Transform, DocumentExtractor, QuestionUnderstanding, HumanIntervention, SubWorkflow, ENV 등), React Flow v12 편집기(드래그 앤 드롭 팔레트, 자동 레이아웃 포함), SSE 실시간 실행, 변수 보간, 조건/분류기 분기, 노드별 오류 전략, 노드별 타임아웃, 가져오기/내보내기/복제, 버전 기록(diff 뷰어 포함), 14개 기본 제공 템플릿, 306개 테스트.
- 워크플로우 트리거 — 타임존 지원 Cron 스케줄링; 외부 실행용 공개 API 키(
wf_접두사, 사용자 인증 불필요); 배치 실행(최대 100개 입력 세트, 구성 가능한 병렬 처리). - 워크플로우 작업 — 실시간 실행 로그 뷰어, 변수 스냅샷이 포함된 추적 뷰어, 캔버스에서 실행 재생 오버레이, 실행 기록 내보내기, 일일 추세 및 백분위수가 포함된 분석 대시보드, 노드별 통계 패널, 즐겨찾기/고정, 인라인 유효성 검사 배지, 캔버스 노드 검색(
Cmd+F), 키보드 단축키, 그리드에 맞추기. - 워크플로우 관리자 + 템플릿 — 모든 워크플로우에 대한 관리자 관리 탭, 관리자 CRUD 및 5개 시드 템플릿이 포함된
WorkflowTemplate모델, org 수준 검토 게이팅이 포함된 게시 흐름, 외부 참조에 대한 가져오기 충돌 해결기. - Agent Skill 시스템 — 온디맨드 스킬 로딩: CRUD/게시/검토가 포함된
Skill모델, 점진적 공개를 위한read_skill(name)도구(~80% 토큰 감소), 에이전트별compact_instructions로 사용자 정의 ContextGuard 압축. 목록 페이지, 편집기 및 에이전트 스킬 선택기가 포함된 전체 Skills UI. - ConnectorMetaTool(점진적 공개 Phase 1-2) — 단일 메타 도구가 작업별 도구를 대체. 시스템 프롬프트는 경량 스텁(~30 tokens/connector)을 수신; 에이전트는 필요에 따라
discover/execute를 호출. 하위 호환성을 위한 기능 플래그CONNECTOR_TOOL_MODE. - Connector 가져오기/내보내기/포크 — JSON 내보내기를 통해 커넥터 템플릿 공유, 포크를 통해 복제 및 사용자 정의. 백엔드는 내보내기 시 자격증명을 새니타이즈.
- Connector 자격증명 암호화 + 사용자별 재정의 — Fernet 암호화가 포함된
connector_credentials테이블,allow_fallback플래그,GET/PUT/DELETE /my-credentials엔드포인트. - 게시 검토 UI — 승인/거부 워크플로우가 포함된 org 수준 검토 시스템, 리소스 카드의 상태 배지, 게시 대화에서 검토 공지, 거부된 리소스에 대한 재제출.
- 의미론적 스키마 주석 — 커넥터 필드에 대한 16개 사전 정의된 의미론적 태그(
description및pii플래그 포함), LLM 도구 설명에 표시됨. - Agent 중간 루프 자기 성찰 — ReAct에서 6회 반복마다 주입된 목표 확인 프롬프트로 긴 체인에서의 드리프트 방지.
- Shadow Market org + 리소스 구독 — 풀 기반 리소스 공유: 마켓플레이스를 통해 발견된 리소스 및 명시적으로 구독된 리소스. 검색/구독/구독 취소를 위한 Market API.
- Agent 자동 발견 + 서브 에이전트 바인딩 —
discoverable플래그 +sub_agent_ids화이트리스트 + 1단계 위임을 위한CallAgentTool. - MCP 서버 자격증명 + 사용자별 재정의 — 자격증명 폴백 동작을 위한
allow_fallback플래그가 포함된mcp_server_credentials테이블. - Connector/KB 토글 — 두 리소스 타입 모두에 대한 일시 중지/재개 엔드포인트.
- 독립형 KB 대화 — 에이전트 바인딩 없이 직접 KB 채팅을 위한 대화의
kb_ids필드. - 검토 로그 감사 탭 — 시스템 로그/검토 로그 토글 및 org/리소스별 필터링 가능한 검토 추적이 포함된 관리자 감사 페이지.
- 합성에서의 Agent 지시문 —
agent_directive매개변수는 최종 답변이 에이전트의 핵심 목적을 준수하도록 보장.
변경 사항
- 구독 기반 가시성 모델 — 3계층에서 2계층(소유 → 구독)으로 단순화. 자동 마이그레이션으로 기존 접근 권한 보존.
- 도구 캐시 화이트리스트 — 블랙리스트를 도구의 명시적
cacheable속성으로 대체. 11개의 읽기 전용 도구가 캐시 가능으로 표시됨. - DAG 실행기 계단식 실패 — 실패한 단계가 이제 종속 항목을 계단식으로 차단하며 전이적 전파 수행.
- DAG 플래너 개선 사항 — 플래너의 도구 설명, 모든 라운드에 걸친 전체 재계획 이력, 14개 엔진 상수를 환경 변수로 매개변수화.
- stream_answer 관찰 잘림 — 2000자에서 8000자로 증가(
REACT_TOOL_OBS_TRUNCATION을 통해 구성 가능). - 증거 신뢰도 UI — 주황색 경고 카드, 호버 팝오버가 있는
[N]인용 배지, 나란히 비교하는 충돌 경고 배너. - 워크플로우 버전 변경 요약 — 버전 저장 시 블루프린트 차이에서 자동 생성된 인간이 읽을 수 있는 요약.
- 워크플로우 실행 보존 정리 — 구성 가능한 나이/개수 제한이 있는 백그라운드 정리 작업. 환경 변수:
WORKFLOW_RUN_MAX_AGE_DAYS,WORKFLOW_RUN_MAX_PER_WORKFLOW. - 커넥터 서킷 브레이커 — 3상태 머신(closed/open/half-open)으로 커넥터별 실패 추적 및 모니터링 엔드포인트 포함.
- elkjs를 경량 BFS 자동 레이아웃으로 대체 —
/workflows/[id]번들이 473 kB에서 43 kB로 감소.
수정됨
- Workflow eval namespace flattening — ConditionBranch 및 VariableAssign에서 짧은 변수 이름 해석 수정.
is_active토글 시 재검토 없음 —is_active를 토글해도 더 이상publish_status가approved에서pending_review로 되돌아가지 않음.- Condition branches에 대한 Cascade-skip — 건너뛴 노드가 나가는 엣지를 올바르게 비활성화함.
- Dependency analyzer —
skill_ids해석, 대소문자 구분 없는 노드 타입 매칭 수정.
제거됨
is_global필드 및 모든 글로벌 가시성 개념 제거 — Market org + subscriptions으로 대체.- 글로벌 agent/MCP server 관리자 엔드포인트 제거.
[v0.7.5] - 2026-03-12
추가됨
- 무료 모드 전환 — 대화 중 Auto/React/DAG 간 전환 가능.
metadata.mode를 통한 턴별 모드 추적. - 세 가지 모델 역할 — General, Fast, Reasoning 계층에 대한 독립적인 환경 설정. Fast 모델이 더 이상 메인 모델 설정을 상속하지 않음.
- DAG 엔진 개선 —
StepOutput구조화된 데이터, 비동기 잠금 스탬피드 방지가 포함된 도구 캐시, 재시도 기능이 있는 단계별 LLM 검증(DAG_STEP_VERIFICATION), 빠른 LLM 분류를 통한 자동 라우팅(AUTO_ROUTING). - 커넥터 자격증명 암호화 —
CREDENTIAL_ENCRYPTION_KEY를 통한 Fernet 암호화로connector_credentials테이블에 추출된 인증 토큰. 사용자별 자격증명 재정의 엔드포인트.allow_fallback플래그. - ModelConfig API 키 저장 시 암호화 — 투명한 쓰기 시 암호화/읽기 시 복호화, 하위 호환성 있는 평문 감지.
변경됨
- 스켈레톤 화면 — 모든 목록/그리드 페이지는 로드 중에 스피너 대신 레이아웃 인식 스켈레톤을 표시합니다.
수정됨
- 빠른 모델이 더 이상 주 모델의 설정을 상속하지 않습니다.
- SSE 라우팅 이벤트 필드 이름이 백엔드와 정렬되었습니다.
[v0.7.4] - 2026-03-12
추가됨
- Evaluation Center — 테스트 데이터셋 관리, LLM 채점을 통한 병렬 평가 실행, 케이스별 통과/실패/지연시간/토큰 결과 뷰어(자동 폴링 포함).
- Admin: 모델별
json_mode_enabled플래그 — AWS Bedrock prefill 문제를 방지하는 명시적 토글. ENV 모델은LLM_JSON_MODE_ENABLED로 제어됨. - SSE Protocol v2 —
delta_reasoning,usage필드를 포함한 실시간 스트리밍,done/suggestions/title/end이벤트 분리. - AI Builder 확장 — 7개의 새로운 빌더 도구,
is_builder플래그, 빌더 프롬프트 자동 새로고침, SSRF 보호. 커넥터 관리를 위한 완전한 ReAct 에이전트 대화. - 이중 데이터베이스 지원 — SQLite(설정 불필요) + PostgreSQL(프로덕션). Docker Compose가 상태 확인을 포함하여 PG를 자동으로 프로비저닝함.
- 확장된 사고 / 추론 — OpenAI o-series, Gemini 2.5+, Claude를 위한
LLM_REASONING_EFFORT및LLM_REASONING_BUDGET_TOKENS. - Admin: 도구 비활성화 — 도구별 활성화/비활성화 토글; 비활성화된 도구는 런타임에 채팅에서 필터링됨.
- 설정: 조직 탭 — 설정에서 직접 조직 생성, 참여, 관리 및 멤버 역할 관리.
- Docker Compose 배포 — 단일 이미지, 명명된 볼륨, 독립형 Next.js 출력.
- 내보내기: PDF 형식 — 대화를 PDF 문서로 내보낼 수 있음.
- 다중 워커 지원 —
WORKERS=N환경 변수; 크로스 워커 릴레이를 위한 Redis 인터럽트 브로커.
변경 사항
- LLM 계층: LiteLLM — 범용 제공자 지원을 위해 직접
AsyncOpenAI클라이언트를 교체했습니다. - 구조화된 출력 저하 —
structured_llm_call()을 3단계 추출(Native FC → JSON Mode → 일반 텍스트 + regex)로 통합했습니다. - 스마트 릴레이 라우팅 — 타사 릴레이 플랫폼의 URL 경로 패턴에서 API 프로토콜을 자동으로 감지합니다.
수정됨
- Docker sandbox (DooD) volume mount path 번역.
- 보안: sandbox AST dunder 검증, MCP stdio 기본값, SSRF DNS rebinding, shell 메타문자 회피, connector 템플릿 주입.
- Admin dashboard 통계 PostgreSQL 충돌.
- Docker: i18n 파일 검색, 시작 경합 조건, 커스텀 포트에 대한 OAuth 자동 감지.
- Export: CJK용 RFC 5987 파일명.
[v0.7.3] - 2026-03-06
추가됨
- Global MCP servers — 관리자가 프로비저닝하고 모든 채팅 세션에서 로드됩니다.
- Structured audit logging — 구조화된 열이 있는
write_audit()헬퍼입니다.
수정됨
- 레거시
registration_enabled필드에 대한 초대 코드 하위 호환성.
[v0.7.2] - 2026-03-06
추가됨
- 초대 전용 등록 — 세 가지 모드(공개/초대/비활성화)와 초대 코드 CRUD.
- 스토리지 관리 — 사용자별 디스크 사용량, 정리, 고아 정리.
- 사용자별 강제 로그아웃 — 관리자 토큰 취소.
- 대화 중재 — 관리자 모든 대화 목록/삭제.
[v0.7.1] - 2026-03-06
추가됨
- API 상태 대시보드 — 시스템 통계, 연결기 메트릭, 토큰 사용량 차트.
- JWT 인증 — 토큰 기반 SSE 인증, 대화 소유권.
- Admin API — 에이전트 관리, 사용자별 토큰 할당량(429 적용).
[v0.7] - 2026-03-06
추가됨
- Admin Platform — 사용자 관리, 역할 전환, 비밀번호 재설정, 계정 활성화/비활성화.
- First-run setup wizard — 관리자 계정 생성 안내.
- Personal Center — 사용자별 전역 지침, 언어 선택.
[v0.6.5] - 2026-03-05
추가됨
- 유틸리티 도구 —
email_send,json_transform,template_render,text_utils. - 커넥터 응답 필터링 —
CONNECTOR_RESPONSE_MAX_CHARS및CONNECTOR_RESPONSE_MAX_ITEMS. - 임베딩 모델 옵션 — Jina, OpenAI 및 커스텀 제공자.
[v0.6] - 2026-03-01
추가됨
- Connector Platform — 전체 CRUD, ConnectorToolAdapter, 사용자별 자격증명 암호화, 확인 게이트, 서킷 브레이커, 감사 로깅.
- MCP integration — 프로토콜을 통한 도구 자동 발견, 프로세스 격리.
[v0.5] - 2026-02-28
추가됨
- 전체 RAG 파이프라인 — Jina embedding + LanceDB + FTS + RRF + reranker.
- 근거 기반 생성 — 증거 기반 인용, 충돌 감지, 신뢰도 점수.
- KB 문서 관리 — 청크 수준 CRUD, 검색, 재시도, 스키마 마이그레이션.
- ContextGuard + 고정 메시지 — 토큰 예산 관리자.
- DAG 재계획 — 최대 3라운드; 메모리용 LLM Compact.
[v0.4] - 2026-02-25
추가됨
- 다중 턴 대화 — DbMemory 지속성, 스마트 자르기.
- 도구 단계 접기 UI — 도구 호출 축소/확장.
- HTTP 요청 + 셸 실행 도구.
- 智能体 관리 — 생성, 구성, 바인딩된 모델/도구로 게시.
- JWT 인증.
[v0.3] - 2026-02-25
추가됨
- 웹 도구 —
web_search(Jina/Tavily/Brave),web_fetch. - 파일 작업 + MCP 클라이언트.
- DAG 시각화 — 실시간 상태가 포함된 대화형 흐름 그래프.
- Docker에서 코드 실행 —
--network=none, 메모리 제한, 타임아웃.
[v0.2] - 2026-02-24
추가됨
- 재시도 및 속도 제한 — 지수 백오프.
- 사용량 추적 — 요청별 토큰/비용 계산.
- 네이티브 함수 호출 — 직접 모델 도구 선택.
- 다중 모델 지원 — DAG 단계용
FAST_LLM_MODEL. - 메모리 시스템 — Window, Summary, Db 메모리.
- FastAPI 백엔드 —
/api/execute,/api/stream(SSE).
[v0.1] - 2026-02-22
추가됨
- ReActAgent — Reason → Act → Observe 루프.
- DAGPlanner — LLM 생성 의존성 그래프, 동시 실행, 결과 검증.
- Tools — Calculator, Python exec.
- Portal UI — Next.js with streaming, dark/light theme, KaTeX.