개요
Orange The Client 개발팀의 한 주(2026-08-31 ~ 2026-09-07) 주요 성과를 정리합니다. 이번 주는 명령이 어느 PC로 나갈지 정하는 대상 해석을 집합 기반으로 다시 설계하고, 온프레미스 진단 LLM(정팀장)의 추론 엔진을 교체하며, 프로세스 부하 판정과 매니저 위젯을 손본 것이 축이었습니다. (작업자는 GitHub 닉네임으로 표기합니다.)
서버 — 명령 대상 해석 재설계
서버 백엔드 파트 이 명령이 실제로 어느 노드에 도달하는지를 결정하는 대상 해석을 백엔드에서 통째로 다시 세웠습니다.
- 집합 기반 재정비: 유령 노드와 가상그룹이 뒤섞여 대상이 잘못 계산되던 것을 한 곳으로 모아 집합 판정으로 바꿨습니다. 가상그룹 제거가 복수 포함 상황에서 대상을 잘못 버리던 것을 고치고, 발송 토픽을 대상 노드 집합에서 직접 유도해 로그가 노드 수와 무관하게 남도록 했습니다.
- 최상위 그룹 특례 제거: 「하위 그룹 포함」을 꺼도 최상위 그룹만은 전 노드가 대상이 되던 특례가 있었습니다. 이 때문에 최상위를 골랐는데 0대로 표시된 채 전 노드에 명령이 나가는 일이 있었고, 특례를 걷어내고 노드-그룹 체인 인덱스를 넣어 판정을 명확히 했습니다.
- 성능: 대상 항목을 많이 고를수록 해석이 느려지던 것을 고치고, 형제 그룹 전개가 이전 상한(50)을 넘기는 현실에 맞춰 상한을 200으로 올렸습니다.
- 유령 대상 정리: 동적 명령의 대상이 실제 소속과 어긋난 채 남던 것, 노드 삭제 후 가상그룹에 유령 멤버가 남던 것, 유령 노드 하나가 정적 명령을 만료까지 붙잡던 것을 정리했습니다.
- 불필요한 그룹 토픽 제거: 노드 인증마다 아무도 발행하지 않는 그룹 토픽을 계산해 내려보내던 것을 없앴습니다.
- 부팅 시 coturn 유실 방지: 네트워크 연결 전에 부팅하면 원격제어 중계 서버(coturn)가 죽은 채 남던 것을 고쳐, 재기동 없이 살아나게 했습니다.
대상 그룹 배열 백필과 제외 그룹 코드 multikey 인덱스, 노드 그룹 체인 인덱스 등 MongoDB 마이그레이션 세 건(v0042~v0044)이 함께 나갔습니다.
정팀장(온프레미스 진단 LLM) — 엔진 이관과 도구 통합
매니저·에이전트 파트 가 노드 진단을 수행하는 온프레미스 LLM의 추론 엔진과 응답 방식을 다뤘습니다.
- 로컬 엔진 llama.cpp 이관: 로컬 추론을 mlx에서 llama.cpp로 옮기고, 응답 파서를 엔진 하나에 묶지 않고 모델별 어댑터로 분리했습니다. Gemma를 쓸 수 있게 생각 과정을 끄고 프롬프트를 모델별 디렉터리로 나눴으며, 캐시 지표가 두 모델 서버의 값을 섞던 것을 바로잡았습니다.
- 서버 자료 도구화: 진단에 쓰는 서버 자료를 도구 호출로 가져와 목차·보관과 연동하고, 판정과 원격 출력 규칙을 대화 모드별로 분리했습니다. 진행 중인 웹 검색 횟수를 매니저 화면에 실시간으로 표시합니다.
- 자연문 + 도구 호출 응답: 응답을 모델 본래 방식인 자연문과 도구 호출로 바꾸고 검색도 도구 호출로 받게 했습니다. 검색 진행을 건별로 보여주고, 찾아서 0건이면 없다고 답하도록 고쳤습니다. 노드 진단 결과를 표로 내놓되 구버전 매니저에는 표를 요구하지 않게 분기했습니다.
- 저장소 복구: Windows 체크아웃 오류(파일명 길이 초과)로 통째 삭제됐던 정팀장·원격제어 저장소를 직전 정상 트리에서 되살리고, 두 레포에 프로젝트 컨텍스트 문서를 넣었습니다.
Windows 에이전트 — 부하 판정과 장치 조치
매니저·에이전트 파트 가 에이전트의 프로세스 부하 판정과 장치 조치 기능을 다뤘습니다.
- CPU 과점 탐지 2단계 판정: CPU 축 비중을 사용률 퍼센트 합산에서 실행 시간 대 머신 용량 기준으로 바꿔, 잠깐 떴다 사라지는 프로세스가 지수를 부풀리던 것을 없앴습니다. 15분 창 평균이 자기 평소의 5배이거나 머신 절반을 넘을 때만 과점으로 판정하는 2단계를 더하고, 그 창평균·평소·판정선을 증상 상세와 룰에 실었습니다.
- sprocess 수집 확장: 프로세스 수집을 rev.25로 올려 프로세스별 네트워크 정보를 더하고, 단명 프로세스 폭주가 만들던 디스크·목록 왜곡을 앞선 rev.24에서 잡았습니다.
- 장치 조치 기능: 드라이버 정보 조회와 장치 조치를 새로 넣으면서, 드라이버 버전을 파일 정보로 읽고 조치 화면이 죽던 것을 고쳤습니다. 실행 중인데도 트레이에 「동작 안함」으로 뜨던 것을 연결 3-상태와 거부 패킷 처리로 바로잡았습니다.
원격제어 — 승인 흐름
매니저·에이전트 파트 가 원격제어 승인 흐름과 화면 갱신을 다듬었습니다.
- 승인창을 워커 선기동으로 즉시 띄우고, 승인 전에는 화면을 캡처하지 않으며, 승인창이 실제로 뜬 뒤에 매니저에 대기를 알리도록 배포본을 정리했습니다.
- 정지 화면이 흐린 채 굳던 것을, 멈추면 키프레임으로 다시 그리게 했습니다.
매니저 — 노드 위젯과 조직도
프론트엔드 파트 가 매니저 위젯의 사용성을 다뤘습니다.
- 리스트형 뷰 추가: 카드형만 있어 한 화면에 그룹 요약이 2장, 명령 이력·템플릿이 1장밖에 안 보이던 것을 리스트형으로도 볼 수 있게 했습니다.
- IP 컬럼 분리와 사용성 정리: 노드 그리드 IP를 한 칸에서 외부·내부 두 컬럼으로 나눴습니다. 헤더까지 뭉개져 어떤 컬럼인지 못 읽던 것, 죽은 그리드를 2초마다 두드리던 것을 포함해 노드 위젯 사용성·버그 13건을 정리했습니다.
- Ping 권한 관문: 브라우저가 권한을 묻기 전에 화면이 먼저 설명하도록 관문을 두고, 무응답이면 멈출 때까지 시도하던 스핀 루프와 경계 오류를 고쳤습니다. 저해상도에서 카드가 길어 지표가 2.5장밖에 안 보이던 것도 눕혀 배치했습니다.
분석 서비스 파트 가 조직도 그룹 배치를 다뤘습니다. 그룹 카드를 높이에 맞춰 쌓아 왼쪽이 길면 오른쪽에 놓고, 2열에서도 삽입선이 맞게 했습니다. 특정 배포 환경에서만 그룹이 1열로 남던 것은 옵저버가 붙지 않아서였고 이를 바로잡았으며, 그룹 머리말 상태를 점 대신 숫자로 표시했습니다.
서버 모니터링 — 포트별 연결 기기와 자원 baseline
분석 서비스 파트 가 스위치 포트 단위 관측과 자원 baseline 판정을 다뤘습니다.
- 포트별 연결 기기 관측: 스위치 포트마다 연결된 기기를 조회하는 API와 읽기 모델을 만들고, 관측 기록 컬렉션과 이를 적재하는 수집 서비스를 배포 목록에 넣었습니다. 서비스 누락은 시험으로 막게 했습니다.
- 자원 baseline 판정 근본화: 판정에 deadband CUSUM 게이트를 넣고 표준편차 판정을 제외해 상태 전환이 흔들리던 것을 잡았습니다. 「오늘 한 번이라도 이상」을 단조 누적으로 남기는 일 단위 축을 더했습니다.
릴리즈 노트
룰·데이터 분석 파트 가 이번 회차(1.6.242.0901) 릴리즈 노트를 발행했습니다. 두 회차(0825·0901)를 한 부로 합치고 스위치 포트 화면을 신규 항목에 붙였으며, 표지 목차가 푸터를 침범하던 것을 고치고 검사에 겹침 판정을 더했습니다.
커밋 통계
이번 주(2026-08-31 ~ 2026-09-07) GitHub 조직 전체 레포 합산입니다.
| 멤버 | 커밋 | +라인 | −라인 |
|---|---|---|---|
| 매니저·에이전트 파트 | 183 | 38,416 | 27,043 |
| 서버 백엔드 파트 | 70 | 13,681 | 2,353 |
| 분석 서비스 파트 | 24 | 2,581 | 814 |
| 룰·데이터 분석 파트 | 7 | 2,740 | 110 |
| 프론트엔드 파트 | 11 | 5,672 | 1,042 |
매니저·에이전트 파트 의 라인 수 상당 부분은 잘못 삭제됐던 정팀장·원격제어 저장소를 되살린 복구 커밋(OR-2100)에서 나왔습니다.