블로그하네스·Pi4분 읽기

에이전트가 한 모든 일을 타임라인으로 까볼 수 있게 된 순간

DeepSeek Harness의 커널 Cordis와 모든 스텝을 펼치는 Trajectory 탭을 뜯어봤습니다.

에이전트가 한 모든 일을 타임라인으로 까볼 수 있게 된 순간 대표 이미지

dsh 데스크톱의 세션을 열었습니다. 채팅 탭 옆에 Trajectory라는 탭이 하나 더 있습니다. 눌러보니 에이전트가 한 모든 일을 시간 순서로, 토큰 사용량과 소요 시간까지 달아서 나열해 줍니다.

이 탭은 Cordis 위에서 돕니다. DeepSeek Harness의 플러그인 커널이에요.

하네스의 심장, Cordis

Cordis는 DeepSeek Harness를 움직이는 플러그인 커널이에요.

하네스가 몸이라면, Cordis는 그 몸의 심장이자 신경계입니다. 모델 어댑터, 도구, 세션, 샌드박스, 저장소, 에이전트 루프, UI까지. 전부 Cordis 커널 위에서 도는 플러그인이에요.

실제 구현도 그렇습니다. 하네스 자체조차 커널 위의 플러그인이고, 특권 계층(privileged core)이 없어요. 전부 교체 가능합니다.

핫스와프의 비밀

Cordis는 두 가지 설계로 이걸 해냅니다.

되돌릴 수 있는 부수효과(reversible effects). 플러그인이 등록한 모든 부수효과를 제거할 때 Cordis가 깔끔하게 되감습니다. 플러그인을 뺐다 꽂아도 시스템에 흔적이 안 남아요.

반응형 의존성 주입(reactive dependency injection). 플러그인을 로드하거나 언로드하면 그 플러그인에 의존하는 다른 플러그인들이 자동으로 반응합니다.

이 둘을 합치면, 실행 중에 모델을 바꾸고, 도구를 바꾸고, 에이전트 루프를 통째로 갈아끼우는 핫스와프를 할 수 있어요. 소스 코드를 건드릴 필요 없이 설정만으로요.

툴 호출도 파이프라인이다

Cordis는 툴 호출도 재미있게 처리해요.

Hooks → approval → sandbox → timeout

툴 호출 하나가 이 단계들을 거치는데, 각 단계가 전부 플러그인으로 확장 가능합니다. 승인 정책을 바꾸고 싶으면 approval 플러그인을 교체하면 되고, 샌드박스 규칙을 바꾸고 싶으면 sandbox 플러그인을 교체하면 돼요.

개발자는 워크플로우 자체를 조립할 수 있습니다.

세션은 로그다

Cordis는 모든 세션을 **덧붙이기만 하는 이벤트 로그(append-only)**로 기록합니다.

하네스가 타입이 있는 이벤트를 순서대로 기록하고, 모델에게 보여줄 히스토리도 이 로그에서 뽑아요. 모델이 본 모든 것을 세션 기록에서 재구성할 수 있어야 하죠. "로그가 기억한다"는 원칙입니다.

DeepSeek은 이 로그 덕분에 아래 트라제토리 탭을 만들 수 있었어요.

트라제토리: 에이전트의 모든 흔적을 보는 눈

dsh 데스크톱(웹 UI)에서 세션을 열면, 채팅 탭 옆에 Trajectory 탭이 있어요. 이건 에이전트가 한 모든 일을 시간 순서로 보여주는 **이벤트 원장(ledger)**입니다.

화면 구성은 이래요.

  • User / Assistant / Tool / 중첩 Subtool 레코드가 구분되어 표시됩니다
  • 두꺼운 규칙 = 턴 경계, 얇은 인라인 마커 = 스텝
  • 원장은 인덱스·이벤트·내용만 담고, 선택하면 로컬 인스펙터가 열려요

인스펙터는 토큰 사용량, 소요 시간, Input, Output, Timing까지 보여줍니다. 에이전트가 각 스텝에서 뭘 보내고 뭘 받았는지, 얼마나 걸렸는지, 토큰을 얼마나 썼는지 전부 까볼 수 있어요.

Overview: 시간을 보는 법

트라제토리에서 제가 가장 마음에 든 건 Overview예요.

원장 위에 고정된 Overview가 실제 레코드의 시작/지속 시간을 왼쪽에서 오른쪽으로 투영합니다. 마치 타임라인처럼요.

  • 구간을 드래그하면 그 시간대에 활성화된 레코드만 원장에 포커스
  • 휠 제스처로 시간 축을 줌
  • 우클릭 드래그로 줌된 뷰를 팬
  • 에이전트가 어느 순간 뭘 하고 있었는지, 병렬로 뭐가 돌았는지 한눈에 보여요

어시스턴트 응답은 TTFT(첫 토큰까지의 시간)와 디코딩 시간을 분리해서 표시하고, 500ms 동안 호버하면 정확한 시각·소요시간을 보여줍니다.

채팅과 분리된 원장

트라제토리는 채팅 스냅샷을 건드리지 않습니다. 완성된 답변의 블록·타이밍·사용량은 트라제토리 상태에 보존하고, 세션 창은 원시 이벤트를 그대로 유지해요.

대화와 기록을 따로 둔 셈이에요. 그리고 이 뷰는 순수 소비자 플러그인이라 모델 요청을 하나도 안 보냅니다. 그냥 로컬에서 렌더링만 해요.

하네스가 컴팩션(컨텍스트 압축)을 해도 원장에 "Between turns" 섹션으로 흔적을 남깁니다. 무엇을 압축했는지도 투명하게 보여주는 거죠.

장인의 손

이 모든 걸 한 줄로 요약하면 이래요.

AI 워크플로우 장인은 모델만 고르지 않고, 커널까지 다룹니다.

모델은 뇌일 뿐이에요. 저는 뇌가 일하는 환경, 도구, 흐름, 규칙을 설계하는 데서 진짜 실력을 봅니다. Cordis는 그걸 조립식으로 만들었고, 트라제토리는 그 결과물을 낱낱이 보여줍니다.

아직 개발자 프리뷰라 DeepSeek이 파격적으로 바꿀 가능성이 크지만, 방향성은 분명해요. 이제 개발자는 에이전트 워크플로우를 코드로 고정하는 대신 플러그인으로 조립하고 로그로 검증할 수 있습니다.

원문과 참고 자료

FAQ

자주 묻는 질문

Cordis가 뭔가요?
DeepSeek Harness를 움직이는 플러그인 커널입니다. 모델 어댑터, 도구, 세션, 샌드박스, 저장소, 에이전트 루프, UI까지 전부 이 커널 위에서 도는 플러그인이고, 특권 계층이 없어 전부 교체 가능해요.
트라제토리 탭은 뭘 보여주나요?
에이전트가 한 모든 일을 시간 순서로 보여주는 이벤트 원장입니다. 각 스텝의 토큰 사용량, 소요 시간, Input/Output까지 까볼 수 있고, Overview에서 시간대별로 드래그·줌해서 볼 수 있어요.
핫스와프가 가능하다는 게 사실인가요?
네. 플러그인의 모든 부수효과는 되돌릴 수 있고(reversible effects), 의존성도 자동 반응이라 실행 중에 모델이나 도구, 에이전트 루프를 통째로 갈아끼울 수 있어요. 소스 코드를 건드릴 필요 없이 설정만으로요.
원고, 봉투, 책자가 오렌지 리본 하나로 이어진 모습

SEASON 3

시즌3 「콘텐츠로 팔기」

AI와 콘텐츠를 만들고 고객에게 연결하는 4주

제가 에이전트로 조사하고 쓰고 파는 과정을 그대로 보여 드려요. 그다음 각자의 주제로 같이 만들어 봐요.

10월 2일 OT · 10월 5일부터 월·수 4주 · 10월 31일 오프라인

시즌3 커리큘럼 보기