주요 콘텐츠로 건너뛰기
학습으로 돌아가기
13비교읽는 데 16분초급

비교 · 하나의 작업, 두 가지 흐름

DeepSeek Harness와 Pi 비교: 같은 버그 직접 고치기

환불 주문을 잘못 포함하는 집계처럼 결과를 확인할 수 있는 작업부터 시작하세요. 독립적인 복사본 두 개를 만들고, 양쪽에서 지원한다면 같은 모델을 사용하며, 통과 기준을 고정합니다. 제품 소개 문구가 아니라 검토 가능한 수정에 도달하는 과정을 비교합니다.

마지막 검증
2026년 9월 6일
가이드 소스 기준
0.1.3-alpha.1
설치 상태
선택한 항목의 기록 확인
검증된 범위
  • 고정 DSH Alpha 소스와 Pi 공식 CLI·세션·확장 문서
  • 로컬에서 실행한 주문 집계 합성 예제, 참고 수정과 지정 파일 복구
  • 모델 비교 벤치마크나 실제 공급자 작업 결과를 주장하지 않음
이 페이지에서
  1. 실제로 확인한 범위
  2. 작업과 성공 기준을 동일하게 유지하기
  3. 이 실습에서 이런 항목을 확인하는 이유
  4. 실패를 확인할 수 있는 작은 프로젝트 만들기
  5. 같은 초기 상태의 독립 복사본 두 개 만들기
  6. DSH에서 작업 진행하기
  7. Pi에서 같은 작업 진행하기
  8. 두 에이전트에 동일한 범위의 작업 맡기기
  9. 에이전트의 최종 답변 밖에서 직접 검증하기
  10. 실제로 필요했던 작업 비교하기
  11. 의도적으로 중단·재개·복구하기
  12. 홍보 문구보다 완료한 검토를 기준으로 선택하기

실제로 확인한 범위

작업과 성공 기준을 동일하게 유지하기

입력은 orders.csv, report.mjs, report.test.mjs입니다. 산출물은 범위를 좁힌 report.mjs 수정, 통과한 검증 세 개, 합계 2000, 짧은 설명입니다. 어느 에이전트도 입력 데이터를 바꾸거나 테스트를 약화하지 않게 하세요. 실제 모델·공급자, 도구 설정, 추가 프롬프트, 경과 시간을 기록합니다. 조건이 다르면 차이를 전부 하네스 탓으로 돌릴 수 없습니다.

이 실습에서 이런 항목을 확인하는 이유

Pi 제작자 Mario Zechner의 2025년 설계 글은 확인 가능한 컨텍스트와 작은 도구 집합을 강조합니다. 이 문제에서는 각 하네스가 세 파일 중 무엇을 실제로 읽었고 어떤 추가 지침을 불러왔는지 기록합니다. Anthropic의 Agent 평가 글은 대화 기록과 최종 결과를 구분합니다. 따라서 마지막 답변만 평가하지 말고 도구 로그, 저장된 report.mjs, 변경하지 않은 테스트를 함께 확인하세요. 2025년 글은 설계 배경이며 현재 Pi 명령은 최신 공식 문서를 따릅니다.

실패를 확인할 수 있는 작은 프로젝트 만들기

Node.js 24와 Bash 호환 터미널을 사용해 버려도 되는 새 디렉터리에서 시작하세요. 명령은 macOS/Linux의 Bash 기준이며, Windows에서는 Git Bash 또는 WSL을 사용합니다. harness-lab 디렉터리가 이미 있으면 안 됩니다. 예제에는 npm 의존성, 계정, 비공개 데이터, 운영 파일이 없습니다. CSV에는 따옴표로 감싼 쉼표가 없으며, 이 코드는 범용 CSV 파서가 아닙니다.

bash
create_harness_lab() {
mkdir harness-lab || return
cd harness-lab || return
cat > orders.csv <<'CSV'
id,status,cents
A,paid,1200
B,refunded,700
C,paid,800
D,pending,400
CSV
cat > report.mjs <<'JS'
export function totalPaid(csv) {
  const rows = csv.trim().split(/\r?\n/).slice(1);
  return rows.map(row => row.split(','))
    .filter(([, status]) => status !== 'pending')
    .reduce((sum, [, , cents]) => sum + Number(cents), 0);
}
JS
cat > report.test.mjs <<'JS'
const { default: assert } = await import('node:assert/strict');
const { readFileSync } = await import('node:fs');
const { default: test } = await import('node:test');
const { totalPaid } = await import('./report.mjs');
const csv = readFileSync(new URL('./orders.csv', import.meta.url), 'utf8');
test('only paid orders count', () => assert.equal(totalPaid(csv), 2000));
test('refunds alone count as zero', () => assert.equal(totalPaid('id,status,cents\nB,refunded,700\n'), 0));
test('an empty ledger counts as zero', () => assert.equal(totalPaid('id,status,cents\n'), 0));
JS
cp report.mjs report.original.mjs
node --test report.test.mjs
}
create_harness_lab
파일 세 개를 만들고 버그 재현하기

처음에는 검증 두 개가 실패하고 하나가 통과해야 합니다. 잘못된 코드는 환불된 700센트 주문을 포함해 2000 대신 2700을 계산합니다. 규칙은 명확합니다. status가 paid인 행만 합산하고 refunded와 pending은 제외합니다. 금액은 모두 정수 센트입니다.

같은 초기 상태의 독립 복사본 두 개 만들기

어느 에이전트도 파일을 수정하기 전에 복사 명령을 실행하세요. DSH에는 harness-lab, Pi에는 harness-lab-pi를 사용합니다. 두 디렉터리 모두 동일한 실패 코드와 원본 백업을 포함합니다. 대화 분기는 별도 작업 트리가 아닙니다. 비교 중에는 두 에이전트를 같은 디렉터리에서 실행하지 마세요.

bash
copy_harness_lab() {
  (cd .. && test ! -e harness-lab-pi && cp -R harness-lab harness-lab-pi)
}
copy_harness_lab
수정 전 예제 복사하기

DSH에서 작업 진행하기

  1. 01

    런타임과 모델 확인

    연결된 Alpha 빠른 시작의 정확한 소스 빌드 설치 절차를 완료하세요. Settings → Models에서 자신의 공급자 인증 정보를 설정하고 프롬프트에는 키를 넣지 않습니다. 실제 선택한 모델을 기록하세요.

  2. 02

    프로젝트를 명시적으로 선택

    Web UI의 작업 공간 선택에서 harness-lab의 절대 경로를 추가하세요. 프로세스를 프로젝트 디렉터리에서 시작했더라도 새 Web UI에는 선택된 작업 공간이 없습니다.

  3. 03

    적용 중인 권한 확인

    이 임시 로컬 작업에는 지원되는 경우 workspace-write 프리셋을 사용하고 승인 요청을 살펴보세요. 이 프리셋은 workspace-write 샌드박스 모드와 ask 정책을 결합하며 실제 경계는 설정된 실행기가 적용합니다. 모든 파일 쓰기마다 팝업이 뜬다는 뜻은 아닙니다.

  4. 04

    실행 과정과 결과 검토

    아래 공통 프롬프트를 보내고 파일 읽기, 명령, 수정, 테스트 결과를 확인하세요. 예제 밖의 접근이나 무관한 설치를 요청하면 작업을 멈추고 범위를 좁힌 뒤 계속합니다.

Pi에서 같은 작업 진행하기

공식 빠른 시작에 따라 Pi를 설치하고 harness-lab-pi로 이동하세요. /login과 /model로 지원되는 모델을 설정·선택하고, 가능하면 DSH와 같은 모델을 사용합니다. 먼저 아래의 제한된 도구 목록으로 파일을 살펴보세요. 이 명령은 선택적 검색을 꺼 무관한 확장이나 프로젝트 지침이 비교에 몰래 포함되지 않게 합니다.

bash
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
cd ../harness-lab-pi
공식 Pi CLI를 설치하고 별도 프로젝트 복사본으로 이동
bash
pi --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,grep,find,ls
검토 단계: edit·write·bash 도구 없이 시작

Pi에는 파일, 프로세스, 네트워크, 인증 정보를 제어하는 내장 권한 시스템이 없습니다. 허용 목록은 모델에 노출하는 도구만 제한하며 프로세스의 운영체제 권한은 바꾸지 않습니다. 신뢰할 수 없는 프로젝트에는 컨테이너, 가상 머신 등 검증한 운영체제 격리 환경을 사용하세요. 공식 가이드는 도구 실행 위치를 바꾸는 것만으로 호스트의 다른 확장을 격리할 수 없는 이유를 설명합니다.

bash
pi -c --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,edit,write,bash,grep,find,ls
검토 세션을 종료한 뒤 수정에 필요한 도구로 같은 세션 이어가기

두 에이전트에 동일한 범위의 작업 맡기기

text
이 임시 프로젝트에서 totalPaid가 paid 행만 합산하도록 report.mjs를 수정하세요. 먼저 orders.csv와 report.test.mjs를 읽고 node --test report.test.mjs를 실행하여 초기 실패를 보고하세요. orders.csv, report.test.mjs, report.original.mjs는 수정하지 말고 패키지 설치나 다른 디렉터리 접근도 하지 마세요. 구현을 최소한으로 수정하고 검증 세 개를 모두 다시 실행한 뒤 orders.csv의 합계를 계산하세요. 변경한 파일, 실제 테스트 결과, 합계, 한계를 반환하세요. 명령이 환경 문제로 실패하면 검증 실패와 구분하세요.
복사해서 사용할 작업 프롬프트

에이전트의 최종 답변 밖에서 직접 검증하기

bash
node --test report.test.mjs
node --input-type=module -e "import {readFileSync} from 'node:fs'; import {totalPaid} from './report.mjs'; console.log(totalPaid(readFileSync('orders.csv','utf8')))"
diff -u report.original.mjs report.mjs
각 프로젝트 복사본에서 직접 실행할 명령

테스트 세 개가 통과하고 별도로 계산한 합계가 2000이어야 합니다. 보통 diff에는 필터를 status === 'paid'로 바꾼 내용만 나타납니다. 같은 규칙을 만족하고 테스트를 유지한다면 다른 구현도 가능합니다. 파일이 다를 때 diff의 종료 코드는 1이며, 여기서는 정상적인 차이 표시이지 테스트 실패가 아닙니다. Node 실행 파일 부재나 권한 거부는 환경 문제이며 계산이 틀렸다는 증거가 아닙니다.

실제로 필요했던 작업 비교하기

토큰역할확인
시작 컨텍스트DSH에서는 작업 공간을 선택하고 세션·도구를 확인합니다. Pi에서는 cwd와 검색한 컨텍스트가 시작 프로젝트를 결정하며 이 연습은 선택적 검색을 명시적으로 끕니다.정확한 디렉터리와 불러온 컨텍스트를 기록하세요. 프롬프트가 같아도 컨텍스트는 다를 수 있습니다.
승인과 격리DSH 프리셋은 샌드박스와 승인 설정을 조합합니다. Pi에서는 노출할 도구를 설정하며 더 강한 운영체제 경계는 별도로 구성합니다.팝업 개수를 안전성으로 간주하지 말고 실제 경계와 수동 승인을 기록하세요.
계획과 위임DSH 구성에는 계획과 하위 에이전트가 포함될 수 있습니다. Pi 코어는 plan-mode와 하위 에이전트 흐름을 확장이나 패키지에 맡깁니다.파일 세 개를 고치는 데는 둘 다 필요하지 않습니다. 연결된 공식 plan-mode 예제에서 추가 설치 없이 확장 접근법을 살펴볼 수 있습니다.
검토와 이어가기DSH는 세션 이벤트 로그를 기록합니다. Pi는 /session, /resume, /tree, /fork를 지원합니다.검증한 수정과 인계 메모를 저장하세요. 대화 기록은 유용한 컨텍스트지만 수정한 파일을 복구하지 않습니다.
비용과 속도모델, 프롬프트, 로드된 확장, 승인 대기 시간에 따라 결과가 달라질 수 있습니다.관측값 또는 ‘측정하지 않음’을 기록하세요. 합성 작업 하나로 일반적인 순위를 정할 수 없습니다.

의도적으로 중단·재개·복구하기

중단하기 전에 목표, 변경 파일, 실제 명령 결과, 다음 단계를 요약하도록 요청하세요. DSH에서는 저장된 같은 세션을 다시 열고 작업 공간을 확인합니다. Pi에서는 해당 프로젝트에서 pi -c로 최근 세션을 이어가거나 pi -r로 선택합니다. /tree와 /fork는 대화 기록을 분기하며 파일을 되돌리지 않습니다. 실패한 수정을 취소하기 전에 시도한 파일을 보관한 뒤 이 예제의 원본 구현만 복구하세요.

bash
cp report.mjs report.attempt.mjs
cp report.original.mjs report.mjs
node --test report.test.mjs
수정 시도를 보관하고 연습 파일만 원본으로 복구

복구 후에는 원래의 테스트 실패 두 개가 다시 나타나야 합니다. 의도적인 복구 검증입니다. 비교할 수 있도록 report.attempt.mjs를 보관하세요. 실제 저장소에서는 깨끗한 브랜치·작업 트리와 검토한 파일별 복구를 사용하고, 이 예제의 덮어쓰기 명령을 무관한 작업에 적용하지 마세요.

홍보 문구보다 완료한 검토를 기준으로 선택하기

공유 Web 작업 공간, 눈에 보이는 세션·도구 상태, 조합한 작업 흐름이 필요하다면 DSH를 시도해 볼 만합니다. 터미널, 명시적인 CLI 시작, 작고 확장 가능한 코어가 기존 도구와 맞는다면 Pi를 시도해 보세요. 같은 작업을 끝내고 diff를 읽은 뒤 선택합니다. 어느 인터페이스도 올바른 수정이나 신뢰할 수 없는 코드의 안전한 실행을 보장하지 않습니다.

text
하네스/버전:
모델/공급자:
작업 공간과 초기 파일:
적용 중인 도구/권한 설정:
추가 프롬프트와 승인:
테스트: 초기 __개 실패; 최종 __개 통과
관측한 합계:
변경 파일:
경과 시간 / 보고된 사용량 또는 측정하지 않음:
복구 결과:
남은 한계:
간단한 비교 기록 남기기

구체적인 다음 단계

공식 1차 문서 읽기

DeepSeek Harness Alpha 아키텍처고정된 플러그인, Profile, 번들, 도구 및 세션 모델을 확인합니다.DeepSeek Harness 권한 프리셋sandbox mode와 approval policy의 조합 및 실제 적용 경계를 확인합니다.Pi Agent Harness 공식 문서현재 TUI, 확장, Skills, 프롬프트, 테마, 패키지, 세션, RPC 및 SDK 문서를 확인합니다.Pi 공식 저장소현재 패키지 네임스페이스, 기본 도구 권한 및 격리 지침을 확인합니다.DeepSeek Harness 안전 안내작업 공간을 선택하기 전에 실험 단계, 코드 실행, 보안 감사 미실시라는 한계를 확인하세요.DeepSeek Harness Alpha Web UI 가이드고정된 모델 설정, 작업 공간 선택, 첫 작업 및 승인 동작을 확인합니다.Pi CLI 및 컨텍스트 문서도구 허용 목록, 리소스 검색 옵션, 모델 선택, 세션 플래그를 확인합니다.Pi 세션 명령이어가기, 분기, 내보내기와 세션 기록·프로젝트 파일의 차이를 확인합니다.Pi 컨테이너 격리 가이드프로세스 전체 격리와 도구 실행 경로 변경을 비교하고 호스트에서 계속 실행되는 부분을 확인합니다.공식 Pi plan-mode 확장 예제작업 흐름을 확장으로 구현한 실제 코드 예제입니다. 예제에 포함됐다고 기본으로 활성화되는 것은 아닙니다.Mario Zechner: Pi 설계 글 (2025)제작자의 설계 배경이며 현재 CLI 규격의 근거로 사용하지 않습니다.Anthropic: Agent 평가 (2026)대화 기록, 최종 결과, 검증 방식을 구분하는 일차 자료입니다.

일반 질문

변경하기 전에

형식, 호환성, 증거 및 롤백에 대한 답변

이 가이드에서는 무엇을 확인하나요?

이 가이드의 범위: 고정 DSH Alpha 소스와 Pi 공식 CLI·세션·확장 문서, 로컬에서 실행한 주문 집계 합성 예제, 참고 수정과 지정 파일 복구, 모델 비교 벤치마크나 실제 공급자 작업 결과를 주장하지 않음

무엇부터 시작해야 하나요?

환불 주문을 잘못 포함하는 집계처럼 결과를 확인할 수 있는 작업부터 시작하세요. 독립적인 복사본 두 개를 만들고, 양쪽에서 지원한다면 같은 모델을 사용하며, 통과 기준을 고정합니다. 제품 소개 문구가 아니라 검토 가능한 수정에 도달하는 과정을 비교합니다.

가장 중요한 경계는 무엇인가요?

DSH 절차는 커밋 d347e703908d0406b7a7ef80e3a0e594d86b2215에서 빌드한 0.1.3-alpha.1을 사용합니다. Pi 명령은 2026년 9월 6일 공식 문서와 대조했습니다. 주문 예제와 참고 수정은 로컬에서 실행했지만 두 도구의 프롬프트를 모델로 비교 평가하지는 않았습니다.

테스트 세 개가 통과하면 어느 하네스가 더 낫다고 할 수 있나요?

아닙니다. 해당 구현이 이 예제의 세 검증을 만족한다는 뜻입니다. 더 넓은 결론을 내리려면 모델·입력·통과 기준을 통제하고 여러 작업을 비교해야 합니다.

DSH와 Pi에서 같은 세션 파일을 사용할 수 있나요?

형식이 호환된다고 가정하지 마세요. 프로젝트와 일반 텍스트 인계 메모를 복사하고 세션 파일은 각 도구의 형식으로 보관합니다. DSH Alpha의 버전별 형식 마이그레이션은 Pi 세션 가져오기 기능이 아닙니다.

이 예제에 plan-mode 플러그인이 필요한가요?

아닙니다. 짧은 검토·수정·테스트 반복이면 충분합니다. 해당 흐름이 필요할 때 공식 Pi plan-mode 예제를 살펴보세요. 확장을 로드할지는 별도의 신뢰 판단입니다.

학습 계속하기

확인된 증거에서 계속하기

공개된 아티팩트를 비교하거나 설치 문서로 돌아가세요.