Building uReview, Uberโs Multi-Agent Code Review Engine โ Will Bond & Ameya Ketkar, Uber
ํ ์ค ํต์ฌ
Uber๋ ์์ฒ ๋ช ์ ์์ง๋์ด์ ๊ธ์ฆํ PR ๋ฆฌ๋ทฐ ๋ณ๋ชฉ์ ํด๊ฒฐํ๊ธฐ ์ํด, ํ๋ณ ๊ท์น๊ณผ ๊ด์ธก ๊ฐ๋ฅ์ฑยทํ๊ฐยท๋น์ฉ ์ต์ ํ๋ฅผ ๋ด์ฅํ ๋ฉํฐ ์์ด์ ํธ ์ฝ๋ ๋ฆฌ๋ทฐ ์์คํ U Review๋ฅผ ์์ฒด ๊ตฌ์ถํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
2024๋ ์ ๋ฆฌ๋ทฐ๊น์ง 3์๊ฐ, 2026๋ ์ 9์๊ฐ Uber์ ์์ฒ ๋ช ์์ง๋์ด์ ์๋ฐฑ ๊ฐ ํ, ์ฌ๋ฌ ์ธ์ด๋ณ monorepo ํ๊ฒฝ์์ PR ๊ท๋ชจ์ ๋ฌผ๋์ด ์ปค์ง๋ฉฐ ์ฒซ ๋ฆฌ๋ทฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด 3์๊ฐ์์ 9์๊ฐ์ผ๋ก ๋์ด๋ฌ๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๊ฐ๋ฐ ์๋์ ๋ณ๋ชฉ์ด ๋์๊ณ , ์๋ํ๋ ๋ฆฌ๋ทฐ ์์คํ ์ด ํ์ํด์ก๋ค.
-
1:53
์ ๊ตฌ๋งค๊ฐ ์๋๋ผ ์ง์ ๋ง๋ค์๋๊ฐ Fabricator์ GitHub๋ฅผ ๋ชจ๋ ์ง์ํด์ผ ํ๊ณ , ์์ด์ ํธ์ ์ฌ๋์ด ๊ฐ์ ๊ท์น๊ณผ ๊ฒฝํ์ ๊ณต์ ํด์ผ ํ์ผ๋ฉฐ, ํ๋ณ ์์ ๊ถ๊ณผ ์ํ๋์ ๋ฐ๋ผ ๋ฆฌ๋ทฐ ๊ฐ๋๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉํด์ผ ํ๋ค. ๋ณด์๊ณผ ์ปดํ๋ผ์ด์ธ์ค๊น์ง ์ผ๊ด๋๊ฒ ๊ฐ์ ํ๋ ค๋ฉด ์ธ๋ถ ์ ํ๋ณด๋ค ๋ด๋ถ ์์คํ ์ด ๋ ์ ํฉํ๋ค.
-
3:42
์ํคํ ์ฒ์ ๋๊ธ ์ค๋ณต ์ ๊ฑฐ GitHub, Fabricator, agent loop์์ ๋ค์ด์จ ์์ฒญ์ U Review service๊ฐ ๋ฐ์ ์ฌ๋ฌ generator๋ก ๋ถ๊ธฐํ๊ณ , ์ฑ๋ฅ๊ณผ ๋น์ฉ์ ๋ง๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค. ์ดํ ํ์ฒ๋ฆฌ ๋จ๊ณ์์ ๋๊ธ์ ํ๊ฐยท๋ถ๋ฅยทํํฐ๋งยท์ค๋ณต ์ ๊ฑฐํด, ์์ง๋์ด์๊ฒ ์คํ ๊ฐ๋ฅํ ๊ณ ์ ๋ขฐ ๋๊ธ๋ง ์ ๋ฌํ๋ค.
-
4:37
์๋ฐํ ์์๊ณผ ๋น์ฉ๋ง ๋ณด๋ ์์ ์ด๊ธฐ U review๋ ํ์ผ๋ณ logic check๋ฅผ ํ๋ ๋จ์ผ prompt์ generator ์ ํ์ฉ dispatcher ์์ค์ด์๊ณ , ๊ด์ธก์ฑ๋ cost์ NPS, Google Forms, Slack ์ง์ ์ ๋์ ๊ทธ์ณค๋ค. ๊ทธ ๊ฒฐ๊ณผ ํ์ง ๋๋น ๋น์ฉ์ด ํฌ๊ฒ ํ๋ค๋ ค ๋ชฉํํ๋ ํจ์จ ๊ตฌ๊ฐ์ ์์ ์ ์ผ๋ก ๋ค์ด๊ฐ์ง ๋ชปํ๋ค.
-
5:33
๊ฐ์ ๋ถ์, ๋ฐ์๋ฅ , ์์ด์ ํธ ๊ถค์ ๊ฐ๋ฐ์ ๋ฐ์์ ๊ธ์ ยท๋ถ์ ๊ฐ์ ์ ๋ถ๋ฅํด ๋ฌธ์ ์ ํ์ ์ฐพ๊ณ , ์ด๋ค ๋๊ธ์ด ์ค์ ๋ก ๋ฐ์๋๋์ง addressal rate๋ฅผ ์ถ์ ํ๋ฉฐ ์์คํ ์ ๊ฐ์ ํ๋ค. ๋ ๋์๊ฐ agent trajectory์ tool call, thinking process๋ฅผ ๊ด์ฐฐํด ๋ฐํ์๊ณผ ์ฑ๋ฅ์ ์กฐ์ ํ๊ณ , ๋ฎ์ ๋น์ฉ์ผ๋ก ๋์ ํ์ง์ ๋ฌ์ฑํ๋ค.
-
6:32
๋ชจ๋ธ์ ์ค์ค๋ก ํ๋ ธ๋ค๊ณ ์์ง ๋ชปํ๋ค ๋ชจ๋ธ์ ํญ์ ์์ ๊ฐ ์๊ฒ ๋ตํ์ง๋ง, ์ค์ ๋ก๋ ํ๋ณ style guide, ํจํด, anti-pattern์ ๊ฐํ๊ฒ ์ฃผ์ ํด์ผ ์ํ๋ ๋ฆฌ๋ทฐ๊ฐ ๋์จ๋ค. ๋ํ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์๊ฐ ์ ์ฝ์ด ์๋ ์์ ์ด๋ฏ๋ก, ๋ถํ์ํ ์๋๋ฅผ ์ค์ด๋๋ก ๊ฐ๋๋ ์ผ์ ๋์ด์ผ ํ์ง ์ ํ๋ฅผ ๋ง์ ์ ์๋ค.
-
7:26
์๋ฐฑ ๊ฐ ํ์ ๋ง์ถค ๋ฆฌ๋ทฐ๋ฅผ ํ์ฉํ๊ธฐ ๊ธฐ๋ณธ์ ์ธ single-fileยทmulti-file reviewer์ ๋ํด, AI linters์ ์ปค์คํ agent๊น์ง ์ ๊ณตํด ํ๋ณ ๊ท์น๊ณผ ์ง์์ ๋ฐ์ํ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ์ด๋ฅผ ์ํด ownership model์ ๋ง์ถฐ ์ค์ ์ ์ฝ๋ ๊ฐ๊น์ด์ ๋๊ณ , ์ด๋ค ํ์ ์ด๋ค generator์ model์ ๋ณด๋ผ์ง deterministic routing์ ๊ตฌํํ์ผ๋ฉฐ, ๊ด์ธก ๋ฐ์ดํฐ๋ฅผ ํ์ ๋ค์ ๋ณด์ฌ์ฃผ์๋ค.
-
10:10
์ฃผ๋น 25,000๊ฐ์ ๋๊ธ์ด๋ผ๋ ๊ฒฐ๊ณผ U Review๋ ์ฃผ๋น ์ฝ 25,000๊ฐ์ ๋๊ธ์ ์์ฑํ๊ณ , ๊ทธ์ค 10%๊ฐ ํผ๋๋ฐฑ์ ๋ฐ์ผ๋ฉฐ PR์ 4%๋ง ๋ถ์ ์ ํผ๋๋ฐฑ์ ๋ฐ๋๋ค. addressal rate๋ 67% ์์ค์ด๊ณ ๊ณ ์ฌ๊ฐ๋ ์ด์์ ๊ฑฐ์ 3/4์ด ๋ฐ์๋๋ฉฐ, naive ๊ตฌํ ๋๋น ๋น์ฉ์ 60% ๋ฎ๊ณ ํ์ง๊ณผ ์ ํ๋๋ 70% ๋์์ก๋ค.
-
11:08
๋ด๋ถ ๋ฃจํ์ ์ธ๋ถ ๋ฃจํ ์์ด์ ํธ๊ฐ ์ฝ๋๋ฅผ ๋ ๋ง์ด ์์ฑํ๊ณ ์๋ ์น์ธ ๋น์ค์ด ๋์ด๋๋ ํ๋ฆ ์์์, ๋ฆฌ๋ทฐ ์ ํ๋๋ ๋ ์ค์ํด์ง๊ณ ๋ฎ์ ํ์ง์ ๋๊ธ์ ์์ด์ ํธ์ ์์ ๋ฐ๋ณต์ ์ ๋ฐํ ์ ์๋ค. ์ธ๊ฐ ํผ๋๋ฐฑ์ด ์์คํ ํ๋์ ํต์ฌ์ด์๋ ๋งํผ, ์ฌ๋์ ์์ ํ ์ ๊ฑฐํ๊ธฐ๋ณด๋ค ์ญํ ์ ํ ๋จ๊ณ ์๋ก ์ฌ๋ฆฌ๋ ๋ฐฉํฅ์ด ์ค์ํ๋ค.
-
13:57
์ธ๋ถ ๋ฃจํ๋ฅผ ์์ ์ง ๋ง๊ณ ํ์ฅํ๊ธฐ ์์ง๋์ด๋ ๊ตฌํ ๋ํ ์ผ๋ณด๋ค๋ ์ํคํ ์ฒ, ๋๋ฉ์ธ ์ ๋ฌธ์ฑ, ์ ํ ์ฌ๊ณ ์ ๋ ์ง์คํ๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ฉฐ, ์์ด์ ํธ๋ ์์ฑ๊ณผ 1์ฐจ ๋ฆฌ๋ทฐ๋ฅผ ๋ ์ ์ํํ๊ฒ ๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์ฌ๋ผ์ง๋ ๊ฒ์ด ์๋๋ผ, ์ธ๊ฐ์ด ๋ ๋์ ์์ค์์ ์์คํ ์ ์ด๋๋ ์๋ก์ด ์ธ๋ถ ๋ฃจํ๋ก ํ์ฅ๋๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ๋๊ท๋ชจ ์กฐ์ง์ ์ฝ๋ ๋ฆฌ๋ทฐ ์๋ํ๋ ๋ชจ๋ธ ์ฑ๋ฅ๋ณด๋ค ํ๋ณ ์์ ๊ถยท๊ท์น ๋ฐฐํฌยท๊ด์ธก์ฑ๊น์ง ํฌํจํ ์ด์ ์ค๊ณ๊ฐ ์ฑํจ๋ฅผ ์ข์ฐํ๋ค.
- ๋๊ธ ์์ฑ๋๋ณด๋ค ์ค์ ๋ฐ์๋ฅ ๊ณผ ๊ณ ์ฌ๊ฐ๋ ์ด์ ํด๊ฒฐ๋ฅ ์ ํต์ฌ ์งํ๋ก ๋๋ฉด, ๋ฆฌ๋ทฐ ํ์ง์ด ์ค๋ฌด ๊ฐ์น๋ก ์ฐ๊ฒฐ๋๋์ง ํ๋จํ๊ธฐ ์ฝ๋ค.
- ์์ด์ ํธ ๋์ ์ดํ์๋ ์ธ๊ฐ ๋ฆฌ๋ทฐ๋ ์ฌ๋ผ์ง์ง ์๊ณ , ์ํคํ ์ฒ์ ์ ํ ํ๋จ์ ๋งก๋ ์์ ๋ฃจํ๋ก ์ฌ์ ์ํ๋ ํธ์ด ํ์ค์ ์ด๋ค.