TL;DR

  • Jiti는 대화형 대규모 언어 모델(LLM)을 통해 실행 중인 Lisp 애플리케이션에 기능을 추가하고 제거하는 작은 커널임.
  • 애플리케이션은 요청에 따라 모델이 작성한 Lisp 코드를 받아들이며, 수락된 기능은 이후 요청에서도 사용할 수 있는 영구 기능으로 남음.
  • 커널은 실행 중인 Lisp 환경을 점검·변경·실행·복구하는 기능을 제공하며, 정의된 함수는 일반 Lisp 함수로 실행됨.
  • develop_form은 기능을 추가·재정의·제거하고, execute_form은 기존 기능을 실행하며, 두 도구는 같은 평가기와 트랜잭션 체계를 사용함.
  • Jiti는 제품 자체에서 제품을 발전시키는 소프트웨어 공장 구상을 보여주며, 코드 작성 뒤 컴파일과 CI/CD를 거치는 방식이 AI 시대에도 필수인지 질문함.

제품 안에서 제품을 발전시키기

  • 소프트웨어 공장은 기존 프로세스를 자동화하는 데 그치지 않고, 새로운 기반 기술을 활용해 제품이 실행되는 동안 제품 자체를 발전시키는 방식이라는 관점임.
  • 회사의 모든 구성원이 외부 업체가 제공하는 도구 없이 제품 안에서 제품을 개발할 수 있어야 하며, 이 구상에서 유일한 도구는 제품 자체임.
  • 프로그래밍 언어가 어떤 방향으로 수렴할지는 아직 정해지지 않았으며, 현재 시스템과 구축 방식에 대한 집착이 기술 변화의 가능성을 다시 생각하는 데 걸림돌이라는 문제의식임.

대화로 애플리케이션을 확장하는 Jiti

  • Jiti는 대화를 통해 실행 중인 Lisp 애플리케이션을 확장하는 작은 커널임. 사용자 요청에 따라 모델이 Lisp 코드를 작성하고, 기능은 제거를 요청할 때까지 애플리케이션에 남음.
  • 커널은 관리 대상 Lisp 환경을 점검하고, 변경하고, 실행하고, 복구하는 기능을 제공함. 애플리케이션의 동작은 원하는 결과를 프롬프트로 요청해 추가하는 기능에 따라 구성됨.
  • 새 환경에서 시작하거나 기존 애플리케이션에 프롬프트만으로 동작을 추가할 수 있으며, 별도의 컴파일 단계 없이 실시간으로 상호작용하는 구상임.
  • Jiti의 소스 코드는 GitHub에서 공개되며, 다양한 기능을 요청해 애플리케이션에 프로그래밍할 수 있음.

모델과 실행 중인 Lisp 환경의 역할

  • 상위 수준에서 OpenAI 모델은 사용자 요청, 애플리케이션 작동 지침, 도구 정의, 현재 상태에 대한 관찰 정보를 받음.
  • 커널은 사용 가능한 함수 목록 점검, 함수 정의 읽기, 새 소스 제안, 표현식 실행을 요청할 수 있음. 정의가 수락되면 일반 Lisp 함수가 됨.
  • 함수 호출은 그 자체로 추가 추론 요청을 요구하지 않으며, Lisp에서 직접 호출하거나 다른 애플리케이션 함수에서 호출하거나 채팅 인터페이스를 통해 실행할 수 있음.
  • 모델은 프로그램을 확장하고, 실행 중인 Lisp 환경은 그 결과 기능을 보유함.
  • 에이전트 도구는 두 가지 의도를 구분함.
  • develop_form: 기능 추가, 재정의 또는 제거.
  • execute_form: 기존 기능을 비롯해 기존 기능의 조합을 실행.
  • 두 도구는 같은 평가기와 트랜잭션 체계를 사용하며, 구분을 통해 요청이 애플리케이션 변경인지 기존 기능 사용인지 모델이 판단함.

기능 조합과 누적되는 함수 목록

  • uppercase-string과 reverse-string을 추가한 뒤에는 두 함수를 조합해 문자열을 대문자로 바꾸고 결과를 뒤집을 수 있음.
  • 이 조합을 재사용 가능한 기능으로 만들도록 요청하면, shout-backwards 함수가 인수 및 소스와 함께 함수 목록에 등록되어 점검과 후속 사용이 가능함.
  • 애플리케이션은 사용 과정에서 실행 가능한 어휘를 축적하며, Lisp는 함수 조합 규칙을 제공하고 커널은 변화하는 정의를 보존하고 관리 대상 효과를 추적함.

커널 구조와 Lisp의 역할

  • 컨트롤러는 작업을 전달하고, 지속 실행되는 워커는 평가와 실행 환경의 실시간 재시작을 담당함.
  • 월드 어댑터는 관리 대상 자원, 함수 목록, 복구 훅을 정의함. 호출자 안전성 검사는 변경 수락 여부를 관리하고, 목표는 완료 조건을 설명함.
  • 수락된 관리 대상 변경은 지속 가능한 리비전이 됨.
  • 상호작용형 프로그래밍을 가능하게 하는 기반은 Lisp의 정의, 점검, 조건, 재시작 기능이며, 이러한 요소는 수십 년 동안 Lisp에 존재함.

AI 시대의 소프트웨어 개발 방식

  • LLM에 결과를 요청해 Lisp 프로그램을 작성하는 방식이 가능해지면서, 소스 코드 작성 뒤 비용이 드는 컴파일과 CI/CD를 거치는 과정이 앞으로도 필수인지 질문함.
  • 새로운 기반 기술로 무엇을 할 수 있는지를 제한하는 요인은 사람들의 호기심일 수 있다는 전망임.