captureMessageContent가 활성화된 경우(OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true) @oh-my-pi/pi-agent-core 텔레메트리 콘텐츠 캡처가 매 채팅 턴마다 TypeError: systemPrompt.map is not a function으로 충돌하는 문제를 고쳤습니다. ChatRequestSnapshot.systemPrompt는 이제 string | readonly string[]을 허용하며, 텔레메트리 직렬화기는 단순 문자열을 단일 요소 배열로 정규화합니다. 이전에는 전체 시스템 직렬화기가 문자열에 대해 .map을 호출했고(.length 가드를 통과했으므로 오류 발생) 요청 메시지 직렬화기가 문자열을 문자당 하나의 system 메시지로 반복했습니다.UMANS_AI_CODING_PLAN_API_KEY 환경 폴백을 추가했습니다 (#2636 by @oldschoola).onPayload 교체 본문을 무시하는 문제를 고쳤습니다. 이제 공급자 페이로드 후크가 업스트림으로 전송되는 실제 요청 본문을 변환할 수 있으며, Anthropic/Gemini 교체 계약과 일치합니다.null 분기에 복사하는 대신 일치하는 anyOf 분기에 배포하도록 고쳤습니다. (#1835)[Tool Result] 접두사로 형식화하여 Composer 모델이 오류 메시지(예: "Pattern must not be empty")를 긴 대화에서 지시어로 잘못 해석하는 문제를 고쳤습니다. 이제 오류는 [Tool Error] 접두사를 사용하므로 모델이 프롬프트 이력에서 실패와 성공을 구분할 수 있습니다. (#1853)validateToolArguments가 union(string, array<string>) 스키마에 대해 JSON 인코딩된 배열 문자열(예: '["a","b"]')을 자동으로 수락하는 문제를 고쳤습니다. 도구 호출 인수를 이중 직렬화하는 공급자(Z.AI / GLM)는 search 같은 도구가 literal ["a","b"]을 단일 경로로 수신하도록 했으며, 0개 일치(단일 요소) 또는 glob 파싱 오류(다중 요소)를 생성했습니다. 스키마가 두 형태를 모두 명시적으로 수락하는 경우 JSON 배열 형태 문자열을 파싱하는 새로운 사전 검증 패스를 추가했습니다. (#1788)<thinking> 태그로 감싸여 도착하는 Anthropic 사고 요약이 advisor/원본 트랜스크립트 덤프가 중첩된 사고 태그를 렌더링하지 않도록 고쳤습니다 (#2695).hooks 및 customTools 배열이 단일 extensions 배열로 교체됨--hook 및 --tool 플래그가 --extension / -e로 교체됨hooks/, tools/ → extensions/; commands/ → prompts/@mariozechner/pi-tui에서 제거된 핵심 감지 함수: 모든 isXxx() 키 감지 함수(isEnter(), isEscape(), isCtrlC() 등)가 제거되었습니다. 대신 matchesKey(data, keyId)를 사용하세요 (예: matchesKey(data, "enter"), matchesKey(data, "ctrl+c")). 이는 ctx.ui.custom()과 키보드 입력 처리를 사용하는 후크 및 사용자 정의 도구에 영향을 미칩니다. (#405)github 공급자에 GitHub Copilot 사용자 전역 발견을 추가했습니다. 이제 ~/.copilot/copilot-instructions.md에서 사용자 전역 지침을 로드하고, COPILOT_HOME 재배치 재정의를 준수하며, COPILOT_CUSTOM_INSTRUCTIONS_DIRS에 나열된 각 디렉토리에서 AGENTS.md 및 .github/instructions/**/*.instructions.md를 읽습니다(Copilot CLI와 일치), 프로젝트 .github/instructions/ 트리를 재귀적으로 스캔하고, .github/prompts/에서 VS Code Copilot 프롬프트 파일(*.prompt.md)을 슬래시 명령어로 표시합니다. 이전에는 프로젝트 .github/ 트리만 스캔되어 Copilot CLI 사용자의 크로스 리포지토리 설정이 자동으로 무시되었습니다. #1913, #1915, #1916을 완료했습니다.web_search는 모델 사용을 위해 비활성화하지 않고 구성된 공급자를 건너뛸 수 있습니다 (#2608).task 스폰에 선택 사항 role 필드를 추가했습니다. 역할은 시스템 프롬프트 전문화 전문 예제로 주입되고 레지스트리, IRC 로스터, Agent Hub에서 하위 에이전트의 표시 이름 및 텔레메트리 아이덴티티가 되므로 위임된 트리는 더 이상 하나의 일반 워커 클론이 아닙니다 (#2467)task 도구에 비차단 전문화 권고를 추가했습니다. 나머지 깊이 용량이 있는 스포너가 일반 역할 없는 워커를 스폰할 때(역할 없는 task/quick_task 스폰, 또는 모두 역할 없이 ≥2× 복제된 동일한 에이전트), 결과는 이를 맞춤형 전문가로 유도합니다. 최대 재귀 깊이에서의 리프는 절대 권고되지 않도록 제어되고, 작업 도구 깊이 게이트는 공유 canSpawnAtDepth 헬퍼로 추출됩니다 (#2469)irc list 및 하위 에이전트 피어 로스터는 이제 각 피어의 현재 활동(최신 의도/도구의 짧은 개요)을 역할 도출 표시 이름과 함께 표시하므로 맞춤형 전문가의 트리가 조정할 수 있을 정도로 읽을 수 있습니다. 에이전트 레지스트리의 새로운 표시 전용 activity 필드로 지원됩니다 (#2470)task 호출이 스폰 용량이 남아 있는 ≥2개의 라이브 형제를 스폰하면, 결과는 irc를 통한 겹치는 작업 조율을 제안합니다(전문화 권고에 구성됨). 하위 에이전트 COOP/irc 프롬프트는 이제 능동적으로 발견(list), 조율(겹치는 편집 전에 메시지), 후속 조치(replyTo/await)를 유도하는 대신 에이전트가 충돌을 자체적으로 해결한다고만 가정합니다 (#2471)/review 지원을 추가했습니다 (#1743).plan.defaultOnStartup 설정(작업 탭, 기본값 꺼짐)을 추가했습니다. 이전 이력이 없는 상태로 열리는 모든 세션에 적용됩니다(이전 세션을 찾지 못하고 새로 시작하는 --continue/자동 재개 포함). 복원된 이력이 있는 세션은 해당 이력에서 조정된 모드를 유지합니다. 플랜 모드가 전역적으로 비활성화되어 있으면(plan.enabled) 자동으로 작동하지 않으며, 플랜 모드가 활성화된 경우를 제외하고는 설정 UI에서 설정이 숨겨집니다.UMANS_AI_CODING_PLAN_API_KEY를 추가했습니다 (#2636 by @oldschoola).WebSearchProviderError 클래스를 실행 가능한 공급자 오류 메시지로 추가했습니다$@에 대한 대안으로 $ARGUMENTS 구문을 추가했습니다. Claude, Codex, OpenCode에서 사용되는 패턴과 정렬됩니다. 두 구문 모두 계속 완전히 지원됩니다. (#418 by @skuridin)/tree(기본값) 또는 /branch를 열지 여부를 선택합니다. /settings 또는 settings.json의 doubleEscapeAction을 통해 구성합니다 (#404)google-vertex): Application Default Credentials를 사용하여 Google Cloud Vertex AI를 통해 Gemini 모델에 액세스합니다 (#300 by @default-anton)models.json의 기본 제공 공급자 재정의: baseUrl만 재정의하여 모든 모델을 유지하면서 기본 제공 공급자를 프록시를 통해 라우팅하거나, 공급자를 완전히 교체하려면 models을 정의합니다 (#406 by @yevhen)/settings 또는 settings.json의 images.autoResize를 통해 제어됩니다. (#402 by @mitsuhiko)ctx.ui.custom()을 사용하는 후크에 대해 Theme 및 ThemeColor 타입이 이제 내보내집니다ctx.ui.setTitle(title)은 후크가 터미널 창/탭 제목을 설정할 수 있도록 합니다 (#446 by @aliou)before_agent_start 핸들러는 이제 해당 턴의 시스템 프롬프트에 텍스트를 동적으로 추가하는 systemPromptAppend를 반환할 수 있습니다. 여러 후크의 추가사항이 연결됩니다.before_agent_start 핸들러는 이제 여러 메시지를 반환할 수 있습니다(첫 번째만이 아니라 모두 주입됨).tools.ts - 세션 지속성을 사용하여 도구를 활성화/비활성화하는 대화형 /tools 명령어pirate.ts - systemPromptAppend를 사용하여 에이전트가 해적처럼 말하도록 하는 방법을 보여줍니다--tools가 초기 활성 집합을 제한할 때에도 모든 기본 제공 도구(read, bash, edit, write, grep, find, ls)를 포함합니다. 후크는 pi.setActiveTools()를 통해 레지스트리의 모든 도구를 활성화할 수 있습니다.setActiveTools()를 통해 도구가 변경될 때 자동으로 재구축되어 도구 설명 및 지침을 새 도구 집합과 일치하도록 업데이트합니다Ctrl+V를 통한 클립보드 이미지 붙여넣기 지원. 이미지는 임시 파일에 저장되고 메시지에 첨부됩니다. macOS, Windows, Linux(X11)에서 작동합니다. (#419)~/.pi/agent/keybindings.json을 통한 구성 가능한 키바인딩. 모든 키보드 단축키(편집기 네비게이션, 삭제, 모델 순환 같은 앱 작업 등)를 이제 사용자 정의할 수 있습니다. 작업별 여러 바인딩을 지원합니다. (#405 by @hjanuschka)/quit 및 /exit 슬래시 명령어. 이중 Ctrl+C와 달리 종료하기 전에 후크 및 사용자 정의 도구 정리 핸들러를 제대로 대기합니다. (#426 by @ben-vargas)designer, reviewer, task 에이전트 프롬프트를 보강했습니다. designer는 토큰 우선 4단계 설계 시스템 워크플로우(분석 → 누락되면 구축 → 토큰과 함께 구성 → 검증)를 얻습니다. reviewer는 증거 표준(발견은 트리거 입력을 이름 지을 수 있을 때까지 실제가 아닙니다; 통과한 테스트는 정확성의 증거가 아닙니다)을 얻습니다. task는 증거 바운드 완료 요구사항을 얻습니다.role 작업 매개변수를 문서화했고, 맞춤형 전문가를 기본 위임 지침으로 만들었습니다. 따라서 모델은 각 스폰에 일반 워커를 클론하는 대신 전문가 아이덴티티를 제공합니다 (#2468)eval agent() 헬퍼를 return_handle(Python) / returnHandle(JS)를 허용하도록 변경했습니다. 단순 텍스트 대신 스폰된 에이전트의 복구 가능한 agent://<id> URI인 handle을 포함한 DAG 노드 딕셔너리 { text, output, handle, id, agent }를 반환합니다. 따라서 다운스트림 pipeline/parallel 스테이지는 재인라인하는 대신 참조를 통해 대규모 트랜스크립트를 연결할 수 있습니다. 기본 경로는 변경되지 않습니다(단순 텍스트, 또는 schema의 파싱된 객체).isAutoresearchShCommand()를 정규식 대신 적절한 명령줄 인수 파싱을 사용하도록 변경했으며, 복잡한 셸 호출의 정확성을 개선합니다command-initialize.md 템플릿을 사전 점검 요구사항, 비교성 불변량, 측정 임계값 파일 표시에 대한 지침을 포함하도록 변경했습니다command-initialize.md를 사용자가 autoresearch.program.md를 내구적 휴리스틱 및 리포지토리 특정 전략으로 작성하거나 업데이트하도록 지시하도록 변경했습니다autoresearch.md는 내구적 결론을 보유하고 autoresearch.ideas.md는 스크래치 백로그임을 명확하게 하도록 변경했습니다init_experiment를 새 세그먼트를 초기화할 때 보류 중인 실행 상태(점검, 기간, ASI, 아티팩트 디렉토리)를 재설정하도록 변경했습니다log_experiment를 실행을 성공적으로 로그한 후 autoResumeArmed 플래그를 설정하여 다음 에이전트 턴에서 자동 재개를 활성화하도록 변경했습니다run_experiment를 실행 완료 후 autoResumeArmed 플래그를 설정하고 대시보드를 업데이트하도록 변경했습니다autoResumeArmed이 명시적으로 설정된 경우에만 프롬프트하도록 변경하여 중복 프롬프트를 방지합니다path.posix.normalize()를 사용하도록 변경하여 일관된 경로 처리를 위해registerProvider() 타이핑을 OAuth 공급자 지원 및 소스 인식 등록 메타데이터로 확장했습니다.분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.