AX Agent 코워크·코드 흐름과 컨텍스트 관리를 claude-code 기준으로 대폭 정리

- 코워크·코드 프롬프트, 도구 선택, 문서 생성/검증 흐름을 claude-code 동등 품질 기준으로 재정렬함

- OpenAI/vLLM 경로의 오래된 tool history를 평탄화하고 최근 이력만 구조화해 컨텍스트 직렬화를 경량화함

- AX Agent UI를 테마 기준으로 재구성하고 플랜 승인/오버레이/이벤트 렌더링/명령 입력 상호작용을 개선함

- 파일 후보 제안, 반복 경로 정체 복구, LSP 보강, 문서·PPT 처리 개선, 설정/서비스 인터페이스 정리를 함께 반영함

- README.md 및 docs/DEVELOPMENT.md를 작업 시점별로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
This commit is contained in:
2026-04-12 22:02:14 +09:00
parent b8f4df1892
commit fb0bea41f7
137 changed files with 18532 additions and 1144 deletions

View File

@@ -61,17 +61,24 @@ public partial class ChatWindow
sb.AppendLine($"Today's date: {DateTime.Now:yyyy년 M월 d일} ({DateTime.Now:yyyy-MM-dd}, {DateTime.Now:dddd}).");
sb.AppendLine("Available skills: excel_create (.xlsx), docx_create (.docx), csv_create (.csv), markdown_create (.md), html_create (.html), script_create (.bat/.ps1), document_review (품질 검증), format_convert (포맷 변환).");
sb.AppendLine("\nOnly present a step-by-step plan when the user explicitly asks for a plan or a short execution outline is required to unblock the task safely.");
sb.AppendLine("For ordinary Cowork requests, proceed directly with the work and focus on producing the requested result.");
sb.AppendLine("\nWhen the user explicitly asks for a plan (계획, 계획 수립, 계획 먼저, plan), present a step-by-step plan FIRST and wait for approval before executing.");
sb.AppendLine("For ordinary Cowork requests where no plan is requested, proceed directly with the work and focus on producing the requested result.");
sb.AppendLine("If the user asks for a brand-new report, proposal, analysis, manual, or other document and does not explicitly ask to reference workspace files, do NOT start with glob, grep, document_read, or folder_map.");
sb.AppendLine("In that case, go straight to the creation tool. Use document_plan only when it materially improves a multi-section document.");
sb.AppendLine("In that case, go straight to the creation tool. Use document_plan when creating multi-section documents (3+ pages) or when the user explicitly requests a plan.");
sb.AppendLine("After creating files, summarize what was created and include the actual output path.");
sb.AppendLine("IMPORTANT: In your FINAL response after ALL work is done, provide a structured completion summary in this format:");
sb.AppendLine(" - 작업 유형: (e.g., report/analysis/proposal)");
sb.AppendLine(" - 산출물 파일: full absolute path (e.g., E:\\test\\report.html)");
sb.AppendLine(" - 주요 섹션: list key sections/chapters with brief description");
sb.AppendLine(" - 분량: page count, word count estimate");
sb.AppendLine(" - 사용 도구: tools used during creation");
sb.AppendLine("The user wants to see what the document contains at a glance without opening the file.");
sb.AppendLine("Do not stop after a single step. Continue autonomously until the request is completed or a concrete blocker (permission denial, missing dependency, hard error) is encountered.");
sb.AppendLine("When adapting external references, rewrite names/structure/comments to AX Copilot style. Avoid clone-like outputs.");
sb.AppendLine("IMPORTANT: When creating documents with dates, always use today's actual date above. Never use placeholder or fictional dates.");
sb.AppendLine("IMPORTANT: For reports, proposals, analyses, and manuals with multiple sections:");
sb.AppendLine(" 1. Decide the document structure internally first.");
sb.AppendLine(" 2. Use document_plan only when it improves the actual output, not as a mandatory user-facing approval step.");
sb.AppendLine(" 2. Use document_plan for multi-section documents or when the user explicitly asks for a plan. When the user requests a plan, present it for approval before proceeding.");
sb.AppendLine(" 3. Then immediately create the real output file with html_create, docx_create, markdown_create, or file_write.");
sb.AppendLine(" 4. Fill every section with real content. Do not stop at an outline or plan only.");
sb.AppendLine(" 5. The task is complete only after the actual document file has been created or updated.");
@@ -93,9 +100,13 @@ public partial class ChatWindow
sb.AppendLine("2. Create a new file in the target format using the appropriate skill (docx_create, html_create, etc.)");
sb.AppendLine("3. Preserve the content structure, formatting, and data as closely as possible");
// 사용자 지정 출력 포맷
// 사용자 지정 출력 포맷 — "auto"일 때 HTML 우선
var fmt = llm.DefaultOutputFormat;
if (!string.IsNullOrEmpty(fmt) && fmt != "auto")
if (string.IsNullOrEmpty(fmt) || string.Equals(fmt, "auto", StringComparison.OrdinalIgnoreCase))
{
sb.AppendLine("DEFAULT OUTPUT FORMAT: HTML (.html) using html_create. Unless the user explicitly requests a different format (Word, Excel, Markdown, etc.), always create documents as HTML.");
}
else
{
var fmtMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{