깃허브 넥스트(GitHub Next)가 만드는 두 프로토타입 — 가드레일을 앞머리 설정으로 못 박은 마크다운 자동화와, 클라우드 마이크로VM 위에서 팀 채팅 기록 전체를 보고 움직이는 협업 판이다. 프롬프트로 「하지 마라」고 적는 것이 왜 가드레일이 못 되는지, PR 생성을 하나로 묶어 프롬프트 주입을 막는 방법, 비밀을 에이전트 우리 밖에 두고 문지기를 거치게 하는 구조가 구체적으로 나온다. 개발자 100명을 수천 시간 따라간 연구에서 키보드 타이핑이 업무의 5%뿐이었다는 수치도 담겼다.
한줄 코멘트. 이 발표에서 값이 나가는 대목은 프로토타입 자랑이 아니라 가드레일을 프롬프트로 걸면 안 되는 이유다. 「비트코인 사지 마라」고 적어 둬 봐야 남이 끼어들어 방향을 틀 수 있으니, 권한과 나갈 수 있는 곳과 쓸 수 있는 것을 설정으로 못 박는다는 쪽이다. 나머지 절반인 협업 이야기는 아직 만드는 중인 것이라 잰 값이 없다.
깃허브의 실험 조직을 이끄는 사람이 발표한다. 코파일럿을 만든 팀이고, 만든 것이 다 제품이 되지는 않는다고 먼저 밝힌다. 1~2년 뒤에 쓸 도구를 미리 더듬는 것이 일이라면서 자기 수정 구슬은 다음 주까지밖에 안 보인다고 덧붙인다.
묻는 것은 하나다. 코드 한 줄을 쓰는 값이 0에 가까워지는데 그러면 무엇을 만들 것인가.
터미널 열 개를 밤낮으로 돌리는 처지가 돼도 기회비용은 그대로라고 말한다. 무엇을 안 만들지가 여전히 문제라는 것이다.
첫째 프로토타입은 자동화다.
발표자의 개인 웹사이트가 쓰는 얼개는 한 달에 쉰 가지를 내놓는다. 낡았다고 알려 주는 도구는 이미 있는데, 알려 주는 데서 끝나고 고치는 것은 사람 몫이다. 깨진 코드까지 알아서 고쳐 주는 것을 원했다는 것이 출발점이다.
그래서 만든 것이 마크다운 문서로 된 자동화다. 팀 후배에게 보낼 법한 지시를 그대로 적는다.
그 문서에 적힌 일의 순서
| 걸음 | 시키는 것 |
|---|---|
| 1 | 새로 나온 것이 있는지 매일 본다 |
| 2 | 바뀐 목록과 올리는 안내를 읽는다 |
| 3 | 올리고 깨진 자리를 고친다 |
| 4 | PR을 만든다 |
굴러가는 형식으로 바뀐 뒤의 파일은 사람이 볼 것이 아니라고 말한다. 마크다운이 소스코드이고 나머지는 굽고 나온 것이라는 쪽이다.
돌려 보인 결과, 깨질 자리가 없다는 것을 확인하고 실제로 빌드까지 해서 확인했다고 말한다. 두 판을 건너뛰는 올림이었고 고쳐야 할 자리를 다 찾아 고쳤으며 사람이 나중에 손으로 해야 할 것까지 짚어 줬다고 한다.
문서 앞머리가 가드레일이 서는 자리다. 무엇을 할 수 있고, 무엇을 읽고, 무엇을 쓸 수 있는지를 거기서 정한다.
발표가 못 박는 대목이 여기다. 프롬프트로 「이건 하지 마」라고 적는 것으로는 모자라다. 남이 끼어들어 엉뚱한 데로 끌고 갈 수 있기 때문이다 — *프롬프트 주입이다.
그래서 이 예에서는 권한을 읽기로만 두고, 나갈 수 있는 곳을 몇 군데로 묶는다. 쓸 수 있는 것은 따로 적어 두고 PR은 하나로 못 박는다. 끼어든 누군가가 PR 500개를 만들게 시키면 그 자체가 마비 공격이 되기 때문이다.
아무것도 안 해도 된다고 대놓고 허락해 둔 것도 눈에 띈다. 자동화가 많아지는 판에서 가장 싫은 것이 시끄러움이라는 이유다.
비밀에 닿는 길
지켜야 할 원칙으로 넷을 든다. 겹겹이 막을 것, 에이전트에게 비밀을 맡기지 말 것, 쓰는 일은 전부 단계를 밟아 확인할 것, 전부 기록에 남길 것이다.
바깥 프로젝트에 줬을 때 처음 만든 것이 무엇이었는지도 말한다. 어느 큰 오픈소스 프로젝트에서는 올라온 이슈마다 오류 자취를 따라가 자기 코드 문제인지 남의 코드 문제인지 가리고, 남의 것이면 닫는 것을 만들었다고 한다.
혼자 하던 자리가 없어진다
어디를 함께 하고 어디를 혼자 했나
둘째 프로토타입은 협업이다.
지금까지는 계획과 검토만 함께 했고 만드는 일은 혼자였다고 말한다. 코드를 쓰는 값이 비쌌기 때문이라는 것이다.
채팅 도구는 사무 일을 편지보다 낫게 하려고 만든 것이지 소프트웨어를 만들라고 만든 것이 아니라고 말한다. 그런데도 좋은 구석이 있는데, 코드에 없는 사실이 거기서 드러난다는 점이다. 어느 클라우드와 값을 잘 맞춰 놨으니 거기에 짓자는 식의 결정이 그렇다.
만든 판은 채팅과 많이 닮았다. 각 자리는 저장소의 갈래 하나이고 내 기계가 아니라 클라우드의 작은 가상 기계에서 돈다. 팀과 나눈 대화 전체를 보므로 그 기록 위에서 움직인다.
발표가 드는 쓸모가 하나 있다. 엔지니어링 대화는 오갔다 되돌아오다 끝에 가서야 결론이 서는데, 그 끝 상태를 골라내는 일을 맡길 수 있다는 것이다.
기능을 붙여 달라고 하자 계획이 마크다운 문서로 나왔고, 그 문서를 혼자 보는 것이 아니라 같이 보고 같이 고친다고 말한다. 앞으로 일의 결과가 점점 문서로 남고 그 문서를 고치는 것이 개발하는 방식이 될지 모른다고 덧붙인다.
데모가 끝까지 안 돌았다. 망이 좋았으면 더 빨랐을 거라며 기다릴 시간이 없으니 믿어 달라고 말하고 넘어간다.
보여 주려고 일부러 안 올려 뒀다고 자인한다. 중간 판으로 올렸으면 이미 얻었을 것들인데 데모를 위해 미뤄 뒀다고 말한다. 그러니 이 데모는 실제로 밀린 상황을 잰 것이 아니다.
자동화의 값이 없다. 아낀 시간도, 든 값도, 맞은 정도도 나오지 않는다. 안에서 이슈 분류와 질의 문제 찾기에 썼다고만 말하고 결과는 없다.
타이핑 5%의 출처가 없다. 개발자 100명을 수천 시간 따라갔다는 연구를 드는데 누가 언제 한 것인지가 없다.
협업 쪽은 아직 나오지도 않았다. 자동화는 공개 미리보기로 열렸다고 말하지만 협업 판은 이달 안에 기술 미리보기로 나오길 바란다는 정도다. 잰 값이 없는 것이 당연한 단계다.
이 발표에는 견줄 기준선이 없다. 자동화를 안 쓸 때와 견준 자리가 한 군데도 없다.
용어