DeepSeek Harness headless로 --json 실행
Headless · --json · --session-id · CI
dsh --profile headless는 포트를 열지 않습니다. stdout은 --json용. 알 수 없는 session id는 실패. 여러 턴은 따로 실행하세요.
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 없이 끝납니다.
--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 로그 읽기.
관련 글
- 2026-10-09 macOS에서 DeepSeek Harness: Homebrew, PATH, 전체 디스크 접근 명령은 다른 OS와 같은 npx——Mac에서 막히는 지점은 PATH의 node, TCC, 첫날 전체 디스크 접근입니다.
- 2026-09-28 DeepSeek Harness 0.1.7 RC 운영 확인 v0.1.7-rc.2는 Pre-release입니다. 예약 작업은 꺼져 있고, 로그는 V4, PTC는 ptc-runtime입니다.
- 2026-09-23 DeepSeek Harness Trajectory 로그 읽는 법 cwd와 agentPreset을 먼저 읽고, tool/result가 없는 tool/call을 찾으세요.
포털에서 계속
설치 가이드, 튜토리얼, 플러그인 디렉터리로 이어서 보세요.