Skip to content

DeepSeek Harness headless로 --json 실행

Headless · --json · --session-id · CI

dsh --profile headless는 포트를 열지 않습니다. stdout은 --json용. 알 수 없는 session id는 실패. 여러 턴은 따로 실행하세요.

--json 이벤트 스트림으로 DeepSeek Harness headless를 돌리는 터미널

DeepSeek Harness headless는 Web UI가 아닙니다

DeepSeek Harness headless가 답하는 질문은 npx @deepseek-ai/dsh web와 다릅니다. Web은 로컬 UI—대개 http://127.0.0.1:3080/—를 띄우고 멈출 때까지 유지합니다. Headless는 한 작업을 돌리고 답을 찍은 뒤 끝납니다. 수신 포트를 열지 않으며 뒤에 아무것도 남기지 않습니다. 스크립트와 CI용 면이지, 첫날 클릭 평가용 면이 아닙니다.

업스트림 표기는 dsh --profile headless입니다. 배포된 패키지에서는 같은 형태가 npx @deepseek-ai/dsh --profile headless "run the tests"입니다. 확인한 버전을 고정하세요—2026년 9월 28일 npm latest는 여전히 Pre-release RC—Node와 자격 증명은 설치. 제품이 무엇인지는 DeepSeek Harness란. 브라우저 첫 한 시간은 npx 빠른 시작.

headless 패키지 README와 이 글이 어긋나면 README가 이깁니다.

한 작업, 그다음 종료

sh
npx @deepseek-ai/dsh --profile headless "최상위 파일을 나열하고 README 첫 제목을 인용"

기본 모드는 최종 답을 stdout에 찍습니다. 비어 있지 않은 추론은 stderr에 dsh: reasoning: 제목과 함께 나갑니다. 종료 코드 0은 최종 턴 완료, 1은 중단·오류·쓸 수 있는 턴 없음입니다. 턴 밖 실패도 stderr에 dsh: 줄을 찍습니다.

위치 인수를 생략하거나 단독 -를 넘기면 작업을 stdin으로 줄 수 있습니다.

sh
{ echo "Summarize these changes:"; git diff --stat; } | npx @deepseek-ai/dsh --profile headless

빈 위치 인수는 사용법 오류입니다. 파이프가 기다려도 stdin을 조용히 삼키지 않습니다. -를 다른 작업 말과 섞는 것도 사용법 오류입니다. dsh --profile headless --help는 도움만 찍고 실행하지 않습니다.

여전히 한 발입니다. 같은 프로세스에 대화형 이어가기는 없습니다. 여러 단계는 따로 돌리거나 아래 --session-id로 이어가세요.

--json은 기계 채널이지 Trajectory가 아닙니다

--json은 stdout의 최종 텍스트 줄을 줄바꿈으로 구분한 JSON 이벤트 스트림으로 바꿉니다. stderr에는 dsh: 진단만 남습니다. 스트림은 session(이번 신원)으로 시작하고 final로 끝납니다. 중간에 status, text, thinking, tool_call, tool_result가 나올 수 있습니다.

감독 프로세스용 투영으로 다루고, 손실 없는 세션 로그로 보지 마세요. 끝의 final을 제외한 문자열에는 상한이 있습니다(업스트림은 문자열당 약 8 KiB와 truncated 플래그). 실패 뒤 여는 영속 로그는 여전히 Trajectory—Trajectory 로그 읽기와 관측성 입문.

형식이 맞는 스트림도 실패를 묘사할 수 있습니다. 턴 안 실패는 final(자주 비어 있음)로 끝나고 error 이벤트가 없을 수 있습니다. 종료 코드 1과 턴 종료 이유를 믿으세요. runner가 턴 밖에서 올린 실패는 error를 쓰고 final 없이 끝납니다.

DeepSeek Harness headless 후 --session-id로 같은 대화를 이어가기

--session-id는 빈 이력을 조용히 만들지 않습니다

매 실행은 기본적으로 새 session-… 신원입니다. --json이면 그 id가 맨 앞 session 이벤트에 나옵니다—기동한 cwd와 함께 저장하세요. 이후 호출에 --session-id를 넘겨 그 대화를 이어갑니다.

알 수 없는 id는 작업 전에 실패합니다. 빈 이력을 발명하지 않습니다. 다른 작업 디렉터리에 기록된 세션, 서브에이전트나 fork, cwd 누락, 이 프로세스에서 같은 id를 잡은 살아 있는 Agent, headless 프로필이 조합하지 못하는 preset도 거부합니다. 거부가 목적입니다. CI가 남의 대화를 조용히 몰아서는 안 됩니다.

첫 실행과 같은 폐기 폴더에서 이어가세요. Node나 npx 자체가 안 뜨면 여전히 npx와 포트 3080—headless는 3080을 쓰지 않지만 깨진 Node는 같은 바닥입니다.

십 분 운영 확인

1. 자격 증명과 기본 모델은 Web과 같이 확인. Headless가 다른 인증 이야기를 만들지 않습니다.
2. --json 없이 지루한 한 작업. stdout에 글, 종료 0을 기대.
3. --json을 붙여 다시 실행. 맨 앞 session id와 기동 cwd를 남김.
4. 같은 디렉터리에서 --session-id로 한 번 이어가기. 먼저 cd하면 거부되어야 함.
5. stdin으로 짧은 작업을 흘림. 빈 위치 인수가 그 파이프를 훔치지 않는지 확인.
6. CI에서는 종료 0이고, --json이면 스트림이 final로 끝나고 턴 밖 error가 없을 때만 수락.
7. 추론에 민감한 경로가 섞일 수 있으면 stderr를 공유 로그에 던지지 마세요. 경로를 직접 나누세요.

이 글이 아닌 것

  • 두 번째 Web 빠른 시작이 아님 — npx 빠른 시작.
  • 0.1.7 RC 기능 목록이 아님 — 0.1.7 RC에서 바뀐 점.
  • Computer Use나 SSH 원격 작업 공간 절차가 아님.
  • headless가 운영 인증이라는 주장이 아님. 업스트림은 프리뷰 호환이 깨진다고 여전히 경고합니다.

다음에 열 곳

1. 계약과 플래그: 고정한 태그의 headless README.
2. 브라우저 첫 한 시간: 설치 → npx 빠른 시작.
3. 실패 뒤: Trajectory 로그 읽기.

포털에서 계속

설치 가이드, 튜토리얼, 플러그인 디렉터리로 이어서 보세요.