Deep Learning for Code
Human-Centered Coding Agents
ICML 2026 DL4C 워크숍의 논문군을 바탕으로, 프로젝트 수준 코딩 에이전트, 실행·증명 기반 검증, 강화학습, 커널 최적화, 저장소 검색·skill, 인간–에이전트 협업, 보안·안전·평가과학을 하나의 연구 지형으로 재구성한다.
검토 범위와 해석 원칙
논문 목록, 공식 프로그램, 공개 arXiv·OpenReview·프로젝트 자료를 교차 검토해 연구축 중심으로 재구성한다.
전체 논문군
Spotlight, poster, benchmark, agent, verification, kernel, safety, human interaction 연구를 포함한다.
주제 중심 종합
개별 논문 나열보다 소프트웨어 세계모델, 실행 grounding, verifier, RL, 협업, 거버넌스의 공통구조를 분석한다.
재현성 유의
워크숍 결과는 model version, harness, environment, benchmark defect, tool budget에 민감하다.
전체 연구 지형
DL4C는 코드 정답률보다 소프트웨어 상태변화, 검증 가능성, 인간 협업, 실제 개발 생산성을 중심에 둔다.
Definition
코딩 AI를 코드 언어모델, 코딩 에이전트, 소프트웨어 세계모델, verifier, skill, scaffold의 결합으로 정의한다.
코드 언어모델
자연어·코드 문맥을 조건으로 코드 토큰열을 생성한다.
코딩 에이전트
검색, 계획, 편집, 실행, 실패분석, 수정, 설명을 반복하는 장기 의사결정 시스템이다.
인간 중심 에이전트
정확성뿐 아니라 유지보수성, 신뢰, 통제권, 인지부하, 안전을 함께 최적화한다.
소프트웨어 세계모델
코드 실행 뒤 상태, 출력, 오류, 자원, dependency, 환경 변화를 예측한다.
검증기
컴파일, 테스트, symbolic execution, proof, security, performance를 판정한다.
에이전트 Skill
절차, 도구, artifact, 제약을 포함한 재사용 가능한 외부 procedural memory다.
Agent Harness
시스템 프롬프트, 도구, memory, planning loop, 종료조건을 포함하는 실행 프레임워크다.
실행 기반 에이전트
자신의 주장을 컴파일러·테스트·profiler·prover의 독립 증거에 연결한다.
증거 동반 코드
Patch와 함께 요구사항 매핑, 실행로그, 보안검사, 성능변화, formal guarantee를 제공한다.
Problem Definition
저장소 수준 소프트웨어 개발은 부분관측, 장기 의사결정, 희소보상, 불완전한 검증, 인간 감독의 제약을 가진다.
부분관측 장기 의사결정
전체 저장소를 한 번에 볼 수 없으며, 각 검색·편집·실행 선택이 이후 상태를 바꾼다.
함수에서 전체 프로그램으로
모듈 경계, architecture, dependency, build, global invariant를 장기적으로 유지해야 한다.
테스트 통과 vs 의미적 정확성
유한 테스트 통과는 모든 입력과 보안·자원·동시성 조건의 정확성을 보장하지 않는다.
검색 오류 × 추론 오류
관련 문맥을 찾지 못하면 강한 모델도 정확한 patch를 만들기 어렵다.
희소한 장기 보상
수십 단계 이후 최종 성공만 주어지면 어떤 행동이 기여했는지 알기 어렵다.
기능성과 품질의 차이
테스트 통과 코드도 유지보수성, 보안, 성능, 최소변경 측면에서 크게 다르다.
인간 감독의 불완전성
에이전트 행동량이 인간 검토능력을 넘고, 그럴듯한 설명이 위험한 patch를 은폐할 수 있다.
평가 Harness의 숨은 변수
동일 모델도 scaffold, tool, token budget, environment에 따라 순위가 달라진다.
Core Concepts
실행 grounding, verifier-guided search, proof, 세계모델, repository graph, credit assignment, skill memory, safety lifecycle이 핵심이다.
Execution Grounding
Claim → Code → Execution → Evidence의 연결을 통해 자연어 추론을 외부 증거에 고정한다.
Verifier-Guided Search
생성–컴파일–실행–증명–profiling–수정을 반복한다.
Formal Verification
프로그램이 명시적 specification을 만족함을 machine-checkable proof로 보장한다.
Software World Model
Control flow뿐 아니라 상태, 자원, dependency, 환경의 실행 결과를 예측한다.
Repository Context Graph
파일, class, function, call, import, inheritance, reference를 그래프로 표현한다.
Scaffold Effect
에이전트 성능은 모델 단독이 아니라 harness와 environment의 결합결과다.
Process Supervision
검색, 가설, edit, compile, test, recovery 단계에 개별 신호를 할당한다.
Self-Revision
Binary reward를 reviser의 token distribution으로 바꾸어 dense supervision을 만든다.
Hardware-Aware Generation
정확성 제약 아래 특정 GPU·TPU·Apple Silicon의 실행시간을 최적화한다.
Skill Retrieval
대규모 skill library에서 관련성, 실행 가능성, context cost를 고려해 소수 skill을 선택한다.
Safety Drift
Benign adaptation 뒤에도 release-time 안전성이 유지되는지 생애주기적으로 평가한다.
Introduction
코드 AI는 token completion에서 프로젝트 구축, 인간 협업, 자기개선 시스템으로 발전한다.
Token Completion
다음 코드 토큰 또는 짧은 함수 완성.
Function-Level Solving
자연어 문제에서 하나의 알고리즘과 함수를 생성.
Repository Repair
실제 저장소에서 issue를 해결하고 다중 파일 patch를 생성.
Project-Level Engineering
요구사항과 실행행동에서 전체 architecture와 프로젝트를 구축.
Human–Agent Co-Development
사용자의 의도, 피드백, 신뢰, 통제권을 포함하는 지속 협업.
Self-Improving System
실행·사용자·생산환경 피드백을 skill과 장기 memory로 축적.
Motivation and Background
기존 benchmark의 범위 부족, 실제 개발자 데이터 부족, 시스템 최적화 장벽, 과학 코드 현대화, 확대된 보안 표면이 연구를 촉진한다.
Benchmark 포화와 범위 부족
짧은 함수의 Pass@k는 architecture, dependency, 유지보수성, 협업을 측정하지 못한다.
실제 개발자 데이터 부족
Simulated trace는 실제 IDE 상호작용의 다양성과 시간구조를 과소평가한다.
고성능 코드 전문성
Kernel 생성에는 memory hierarchy, tiling, vectorization, synchronization 지식이 필요하다.
과학 코드 현대화
Fortran·C/C++ legacy 모델을 JAX·GPU·자동미분 환경으로 안전하게 변환해야 한다.
실행 권한 확대
File system, shell, package manager, CI/CD, cloud credential 접근은 새로운 공격표면을 만든다.
평가체계 신뢰성
Benchmark 자체도 모호한 specification, 깨진 environment, 잘못된 gold patch를 포함할 수 있다.
Challenges
Architecture, context, long horizon, reward hacking, formal specification, benchmark defect, hardware portability, oversight가 핵심 난제다.
| 도전과제 | 핵심 문제 | 필요한 해결 방향 |
|---|---|---|
| Architecture Planning | 국소 생성이 global invariant와 module boundary를 보장하지 못함 | Requirement graph, design memory, architecture verifier |
| Context Selection | 긴 context보다 관련 call chain·data flow 선택이 중요 | Graph-aware retrieval, counterfactual robustness |
| Long-Horizon Errors | 초기 오류가 수십 단계에 걸쳐 증폭 | Checkpoint, branch search, rollback, progress verifier |
| Reward Hacking | Test 삭제, hard coding, timing 우회, artifact leakage | Sandbox, hidden checks, anti-cheat verifier |
| Specification Generation | Proof가 맞아도 specification이 의도와 다를 수 있음 | Requirement grounding, formal review, test-proof consistency |
| Benchmark Defects | 모호한 문제, 깨진 environment, 잘못된 gold patch | Versioning, defect audit, multiple-solution validation |
| Performance Portability | 한 hardware의 최적 kernel이 다른 hardware에서 최적이 아님 | Hardware-neutral IR, backend cost model |
| Maintainability | 빠른 patch가 기술부채와 architecture erosion을 만들 수 있음 | Longitudinal evaluation, code quality constraints |
| Human Attention | Agent action volume이 인간 검토능력을 초과 | Risk-ranked explanation, adaptive approval |
| Temporal Knowledge | API·library evolution이 학습시점 지식을 빠르게 낡게 함 | Temporal split, changelog retrieval, version-aware tools |
| Safety Lifecycle | Benign fine-tuning 뒤 안전성이 악화될 수 있음 | Pre/post adaptation evaluation, representation shaping |
Research Questions
정의, 세계모델, proof, credit, scaffold, retrieval, 감독, 기술부채, skill, hardware, benchmark, 자율성의 질문으로 정리된다.
RQ1
소프트웨어 엔지니어링 에이전트의 최소 정의는 무엇인가?
RQ2
전체 프로그램 architecture를 학습하도록 만들 수 있는가?
RQ3
소프트웨어 세계모델을 어떻게 학습하고 측정할 것인가?
RQ4
테스트와 formal proof를 어떻게 비용 효율적으로 결합할 것인가?
RQ5
장기 trajectory의 어느 단계에 credit을 부여해야 하는가?
RQ6
실패 trajectory에서 탐색과 회복행동을 안전하게 학습할 수 있는가?
RQ7
어떤 scaffold가 어떤 기반모델에 적합한가?
RQ8
Context retrieval은 동일 의미의 표현변형에 강건한가?
RQ9
Human-in-the-loop는 실제 안전장치가 될 수 있는가?
RQ10
코딩 에이전트의 성능과 유지보수성은 상충하는가?
RQ11
Skill을 어떻게 발견·검증·수정·폐기할 것인가?
RQ12
하드웨어 최적화 지식은 플랫폼 사이에서 전이되는가?
RQ13
Benchmark 점수 향상이 일반 코딩 능력 향상을 의미하는가?
RQ14
에이전트가 benchmark 자체의 결함을 탐지할 수 있는가?
RQ15
위험과 가역성에 따라 자율성을 동적으로 조절할 수 있는가?
Approaches / Methods
대표 논문을 프로젝트, 검증, 학습, 커널, 검색, 인간·안전 기준으로 필터링해 탐색할 수 있다.
ProgramBench
실행파일과 문서만으로 전체 프로그램을 재구축하고 행동 동등성으로 평가한다.
Hawkeye
최소 supervision으로 hardware-aware GPU kernel optimization을 수행한다.
Legacy Scientific Code to JAX
Fortran 과학모델을 call-graph 순서, compile-repair, numerical oracle로 JAX에 변환한다.
DevBench
정적 completion이 아니라 실제 개발자 상호작용과 수용·수정·거부를 기반으로 평가한다.
Coding with “Enemy”
장시간 인간–에이전트 협업에서 sabotage 탐지와 monitor 경고의 한계를 측정한다.
SWE Atlas
Issue resolution 밖의 Q&A, test writing, refactoring, maintainability를 평가한다.
GameDevBench
코드, shader, sprite, UI, visual feedback을 포함하는 실제 게임 개발을 평가한다.
VeriBench
정리 정식화, 구현, Lean 4 proof까지 end-to-end formal artifact 생성을 평가한다.
ExVerus
Counterexample를 inductive invariant로 일반화해 Verus proof를 수리한다.
AI Coding Benchmarks Need Proofs
유한 테스트보다 specification과 machine-checkable proof의 필요성을 주장한다.
Self-Distillation Zero
Reviser의 token distribution으로 binary reward를 dense supervision으로 바꾼다.
Step Rejection Fine-Tuning
실패단계의 loss만 mask하고 recovery context는 보존한다.
Cobalt
Offline trajectory prefix를 이용해 multi-turn code generation을 contextual bandit으로 학습한다.
Kernel-Smith
Correctness와 속도를 함께 보존하는 evolutionary kernel optimization recipe를 제안한다.
TritonRL
Compilation, correctness, performance를 계층적 reward로 사용하고 cheating을 통제한다.
JAXBench
Autonomous TPU Pallas kernel optimization을 실제 JAX workload로 평가한다.
ParallelKernelBench
LLM이 training·inference stack의 multi-GPU kernel과 communication 전략을 생성하는지 평가한다.
SpIDER
Dense retrieval, code graph exploration, LLM filtering을 결합해 issue localization을 개선한다.
SkillFlow
수만 개 skill에서 관련성과 실행 가능성을 고려해 소수 skill을 검색한다.
RepoGuardBench
Repository-borne prompt injection과 local coding agent 방어를 함께 평가한다.
Safety Drift
Benign adaptation 전후의 안전성 유지와 suppression·representation shaping 차이를 분석한다.
Task Verification Bench
Benchmark update에서 확인된 결함을 이용해 evaluation agent의 root-cause 탐지능력을 평가한다.
| 대표 논문 | 핵심 결과·설계 | 연구적 의미 |
|---|---|---|
| ProgramBench | 200개 프로그램, 24만 8천+ behavioral tests; 전체 해결 모델 없음 | 국소 코드생성과 전체 architecture 능력의 격차 |
| Lab Scientific Code to JAX | 19K LOC·102 modules, Fortran oracle, gradient verification | 과학적 의미를 보존하는 agentic modernization |
| SWE Atlas | Q&A·test writing·refactoring 284 tasks | Issue resolution 밖의 실제 엔지니어링 평가 |
| GameDevBench | 333 tasks, visual feedback가 성능 향상 | Code-only agent에서 perception–action agent로 확장 |
| SRFT | 오류 단계 loss masking, recovery context 보존 | 실패 trajectory의 안전한 활용 |
| SD-Zero | Self-revision으로 binary reward를 token supervision으로 변환 | 외부 teacher 없는 dense credit |
| Kernel-Smith | Evolutionary archive·mutation·profiling | 한 번의 생성보다 장기 최적화 trajectory |
| SkillFlow | 36K skills → ≤5 skills funnel | Agent 능력 확장을 retrieval 문제로 전환 |
| Coding with “Enemy” | 대부분의 참가자가 sabotage를 놓침 | Human-in-the-loop의 자동 안전성 가정 반박 |
Key Applications
전체 프로그램 구축, 저장소 엔지니어링, 커널, 과학 코드, formal verification, 보안, 멀티모달 개발, IDE 보조로 확장된다.
전체 프로그램 재구축
Legacy executable 재구현, specification 기반 서비스 구축, behavior cloning.
Repository Engineering
Issue resolution, Q&A, test writing, refactoring, migration, sequential evolution.
High-Performance Kernels
Triton, CUDA, Pallas, multi-GPU, Apple Silicon, accelerator kernel.
과학 소프트웨어 현대화
Fortran-to-JAX, PyTorch-to-JAX, 자동미분, GPU 가속, sensitivity analysis.
Formal Verification
Lean 4, Verus, invariant synthesis, proof-carrying patch.
보안 취약점 분석
다중 취약점, prompt injection, sabotage, Linux kernel crash.
Multimodal Development
게임, UI, shader, sprite, animation, screenshot 기반 수정.
Proactive IDE
다음 edit 추천, 오류 사전경고, 관련 문서·test 제안.
Agent Skill Ecosystem
조직별 convention, 배포 workflow, debugging playbook, migration procedure.
Open Problems
Architecture intelligence, world model, specification, retrieval robustness, proof scalability, skill governance, oversight, safety drift가 미해결이다.
프로젝트 수준 Architecture Intelligence
기능 구현을 넘어 장기 확장 가능한 구조를 안정적으로 설계해야 한다.
실행 가능한 Software World Model
코드 텍스트 이해와 실제 상태·자원·환경 예측 사이의 격차를 줄여야 한다.
Specification Grounding
비정형 요구를 test와 formal specification으로 정확히 변환해야 한다.
Retrieval Robustness
동일 의미의 표현변형과 불완전 issue에도 관련 파일을 일관되게 찾아야 한다.
Long-Horizon Credit Assignment
수백 단계에서 검색, 계획, edit, recovery의 인과적 기여를 분리해야 한다.
실패 데이터 활용
오류를 재현하지 않으면서 탐색과 복구 지식을 보존해야 한다.
Benchmark Lifecycle
Benchmark를 versioned, tested, auditable software product로 관리해야 한다.
Proof 확장성
Production language와 전체 repository에서 formal proof 비용을 낮춰야 한다.
Cross-Hardware Generalization
한 backend의 최적화 전략이 다른 accelerator로 얼마나 전이되는지 불명확하다.
Human Oversight Scaling
검토 가능한 행동과 자동 차단할 행동을 위험 기반으로 구분해야 한다.
Skill Library Governance
중복, outdated API, 악성 instruction, 낮은 품질을 자동 검증·폐기해야 한다.
Safety Drift
조직별 adaptation과 tool customization 이후에도 안전성을 유지해야 한다.
공동 저자성과 책임
인간 결정, 모델 생성, 도구 수정, 검증 결과의 provenance를 기록해야 한다.
Future Directions
미래 코딩 에이전트는 운영체계, 이중 세계모델, proof-carrying patch, verifier ecology, adaptive autonomy, skill graph로 발전한다.
1. Software Engineering Agent OS
2. Dual Software World Model
3. Proof-Carrying Patch
4. Counterfactual Trajectory Replay
특정 검색·계획·edit만 교체해 성공과 실패의 인과적 기여를 분석한다.
5. Verifier Ecology
6. Adaptive Autonomy
검색·편집·commit·배포 권한을 위험에 따라 계층화한다.
7. Hardware-Neutral Optimization IR
Algorithm → Parallel IR → Hardware-specific lowering 구조로 플랫폼 간 최적화 지식을 공유한다.
8. Lifelong Skill Graph
적용조건, version, 성공이력, 보안상태를 가진 skill graph를 관리한다.
9. Benchmark as Tested Software
10. Human Attention Budgeting
모든 행동을 설명하지 않고 위험감소 대비 검토비용이 높은 결정만 압축해 제시한다.
11. Human–Agent Development Contract
목표, acceptance criteria, 금지행동, tool permission, 승인단계, rollback plan을 실행가능 policy로 변환한다.
12. Provenance-Aware Coding
13. Closed-Loop Metrics
Conclusion
DL4C는 코드 AI의 연구목표를 생성량에서 상태변화, 검증 가능성, 통제 가능한 협업, 생애주기 안전으로 이동시킨다.
코드 생성 → 소프트웨어 상태변화
저장소, 실행환경, dependency, 테스트와 인간 workflow를 변화시킨다.
정확도 → 검증 가능한 과정
검색근거, 실행로그, 보안검사, 성능변화, proof, 승인까지 포함한다.
단일 모델 → 모델–Scaffold–Tool 시스템
성능은 retrieval, memory, planning, verifier, budget, environment의 결합결과다.
자율성 → 통제 가능한 협업
불확실할 때 멈추고 위험을 설명하며 인간의 승인경계를 존중한다.
일회성 Benchmark → 생애주기 평가
Adaptation, software evolution, library update, 유지보수성, safety drift를 포함한다.
Sources
공식 워크숍, 대표 benchmark, 검증, 강화학습, kernel, 안전·인간 협업 연구의 공개 원문 링크.