mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Master rewrote the headless README around the profile CLI and removed cli-demo; the replay had resurrected the old body. The branch's claim is the E2B overlay section alone, now inserted into master's text with the credential-gated live composition e2e as the runnable instruction (the config-file demo runner no longer exists).
33 lines
2.3 KiB
Markdown
33 lines
2.3 KiB
Markdown
# headless-agent
|
|
|
|
English | [中文](README.zh.md)
|
|
|
|
This directory owns the replay and real-model test composition for a headless coding agent: DeepSeek V4 + local bash and filesystem tools + subagent delegation + workflows and fresh-agent Ralph iteration + `todo_write` + JSONL persistence. It explicitly mounts the shared agent spine, one root agent, persistence, and checkpoint policy; it is not a second product front door.
|
|
|
|
## Run it
|
|
|
|
```sh
|
|
# repo root .env (gitignored) or exported env:
|
|
# DEEPSEEK_API_KEY=sk-…
|
|
# DEEPSEEK_BASE_URL=https://… # optional; defaults to the public API
|
|
pnpm run dsh run "fix the failing test in this workspace"
|
|
```
|
|
|
|
The product command is [`dsh run`](../../apps/cli/README.md): it accepts one nonblank task, creates and persists a fresh session, prints the final assistant text, and exits. The root `demo:headless` script is only an alias of that command.
|
|
|
|
Snapshot suites run this directory's configuration through [`tests/fixtures/headless-driver.ts`](tests/fixtures/headless-driver.ts), an unexported test-only process that emits canonical session events as JSONL before its result record. That stream is test infrastructure, not a supported CLI output format. Child sessions surface only through parent tool events and results.
|
|
|
|
## E2B POC overlay
|
|
|
|
[`e2b.cordis.yml`](e2b.cordis.yml) replaces the local filesystem and subprocess providers with one shared E2B sandbox while retaining `dsh-bash-local` and the same model-facing tools. Put `E2B_API_KEY` beside `DEEPSEEK_API_KEY` in the gitignored root `.env`, then run the credential-gated live composition, which drives FS, Bash, PTY, and LSP in one sandbox and proves final deletion:
|
|
|
|
```sh
|
|
pnpm exec vitest run --config vitest.e2e.config.ts packages/e2b/e2b/tests/composition.e2e.ts
|
|
```
|
|
|
|
The overlay creates the same absolute cwd inside the sandbox, but it does not upload or mount the host workspace. File and Bash mutations exist only in E2B; Cordis, model calls, agent/session state, session logs, skills, and SDK buffers remain on the host. The composition kills its sandbox on timeout and disposal. It is a provider-composition POC, not a whole-harness migration or a workspace-sync feature.
|
|
|
|
## Advanced configuration
|
|
|
|
[`advanced.cordis.yml`](advanced.cordis.yml) adds Code Mode and the Cordis tools to the test composition.
|