deepseek-harness/examples/headless-agent
Tianyi Cui 6e1ae76c9b test(e2b): satisfy the steer() receipt signature in Agent stubs
Master's steering-receipt API (agent.steer returns SteeringReceipt) reached
this branch through the parent sync; the two E2B live-fixture Agent stubs
return the same rejected-outcome receipt the pty test stubs use.
2026-08-08 22:19:13 +08:00
..
tests test(e2b): satisfy the steer() receipt signature in Agent stubs 2026-08-08 22:19:13 +08:00
advanced.cordis.snapshot.yml cleanup(cli): remove dsh-cli-demo 2026-08-08 15:08:07 +08:00
advanced.cordis.yml cleanup(cli): remove dsh-cli-demo 2026-08-08 15:08:07 +08:00
compaction.cordis.snapshot.yml fix(replay): mark local compaction calls 2026-08-08 15:28:35 +08:00
composition.md cleanup(cli): remove dsh-cli-demo 2026-08-08 15:08:07 +08:00
cordis.yml cleanup(cli): remove dsh-cli-demo 2026-08-08 15:08:07 +08:00
credentials.cordis.snapshot.yml refactor(llm-deepseek)!: rename the provider route to deepseek-official 2026-07-29 16:36:07 +08:00
e2b.cordis.yml fix(e2b): address review round on cadence config, disposal, and SDK edge cases 2026-08-08 22:19:13 +08:00
goal.cordis.snapshot.yml test(headless): isolate goal replay from live adapter 2026-07-27 17:21:40 +08:00
goal.cordis.yml Merge goal tool fixes and align same-session blockers 2026-07-20 17:23:55 +08:00
package.json fix(examples): isolate headless agent example 2026-07-16 16:12:27 +08:00
pty.cordis.snapshot.yml test(sandbox-policy): record cache-safe policy context 2026-07-30 22:15:34 +08:00
ralph.cordis.snapshot.yml test(ralph): snapshot fresh-agent rounds in headless app 2026-07-20 18:18:08 +08:00
README.i18n.yaml feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
README.md feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
README.zh.md feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
retry.cordis.snapshot.yml fix(llm): isolate retry policy histories 2026-07-25 15:38:58 +08:00
semantic-checkpoint.cordis.snapshot.yml refactor(subprocess): rename the process seam to subprocess and address review 2026-07-26 12:43:59 +08:00
subagent-diagnostic.cordis.snapshot.yml fix: address PR #1802 review round 2026-08-07 00:05:41 +08:00
subagent-inheritance.cordis.snapshot.yml fix(example): drop the never-activated bash stack from the inheritance fixture 2026-07-30 16:52:14 +08:00
workspace-context-resume.cordis.snapshot.yml fix(workspace-context): deduplicate baseline on resume 2026-08-04 19:55:27 +08:00

headless-agent

English | 中文

Headless one-shot agent wiring: DeepSeek V4 + local bash and filesystem tools + subagent delegation + workflows and fresh-agent Ralph iteration + todo_write + JSONL persistence, with @deepseek-ai/dsh-cli-demo as the app front door.

Run it

# repo root .env (gitignored) or exported env:
#   DEEPSEEK_API_KEY=sk-…
#   DEEPSEEK_BASE_URL=https://…   # optional; defaults to the public API
pnpm run demo:headless "fix the failing test in this workspace"
pnpm run demo:headless --output-format json -- "summarize the implementation"
pnpm run demo:headless --output-format stream-json -- "run the focused tests"

Exactly one nonblank positional task is required; quote tasks containing spaces. There is no -p flag. text prints the last text-bearing assistant message, json prints one DSH-native result record, and stream-json emits the top-level session's canonical task-turn events before that record. Child sessions surface only through parent tool events and results.

Each invocation creates and persists a fresh session, runs all model and tool steps in one turn, flushes, disposes, and exits. This is non-interactive automation: there is no prompt, approval, resume, second turn, or stdin context. The configured tools can mutate the launch workspace, run commands, spawn child agents, and consume provider tokens.

E2B POC overlay

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:

pnpm run demo:e2b "create hello.txt, read it back, and run pwd"

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 demo kills its sandbox on timeout and disposal. It is a provider-composition POC, not a whole-harness migration or a workspace-sync feature.

Advanced and snapshot wiring

advanced.cordis.yml adds Code Mode and the Cordis tools to the shipped leaf. advanced.cordis.snapshot.yml replaces only the live LLM with replay. The tests under tests/ own the keyless real-Loader smoke, key-gated world-verified smoke, and the stream-json replay snapshot with its parent and child session fixtures.

The package-level CLI contract documents output records, exit status, cancellation, persistence, and model/token effects.