deepseek-harness/examples/acp-agent
Yichen Jiang adb133e303 Merge remote-tracking branch 'origin/master' into worktree/fix-system-prompt-order
# Conflicts:
#	examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.1.jsonl
#	examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.2.jsonl
#	examples/acp-agent/tests/snapshots/subagent-mixed/session.1.jsonl
#	examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
#	examples/acp-agent/tests/snapshots/subagent-multi/session.1.jsonl
#	examples/acp-agent/tests/snapshots/subagent-multi/session.2.jsonl
#	examples/acp-agent/tests/snapshots/subagent-parallel/session.1.jsonl
#	examples/acp-agent/tests/snapshots/subagent-parallel/session.2.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
#	examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
#	examples/headless-agent/tests/snapshots/compaction-recovery/session.jsonl
#	examples/headless-agent/tests/snapshots/pty-tools/session.jsonl
2026-08-24 20:52:52 +08:00
..
tests Merge remote-tracking branch 'origin/master' into worktree/fix-system-prompt-order 2026-08-24 20:52:52 +08:00
advanced.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
advanced.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
agent-instructions.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
agent-instructions.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
background-job-admission.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
background-job-admission.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
both-mode.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
both-mode.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
child-question.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
child-question.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode-image.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode-image.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode-workspace-context.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode-workspace-context.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
code-mode.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
composition.md test(acp): refresh profile-launched application transcripts 2026-08-23 10:59:00 +08:00
cordis-tools.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
cordis.yml Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
depth-two.cordis.snapshot.yml Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
depth-two.cordis.yml Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
fs.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
fs.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
image-text-route.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
image-text-route.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
image.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
image.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
package.json refactor(acp): reduce bridge to automation protocol 2026-07-24 01:40:25 +08:00
partial-landlock.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
partial-landlock.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
product-subagent-both.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
product-subagent-both.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
product-subagent-codex.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
product-subagent-codex.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
pty-snapshot-backend.mjs refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
pty.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
pty.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
README.i18n.yaml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
README.md refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
README.zh.md refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
retry.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
retry.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-query.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-query.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-sandbox-root.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-sandbox-root.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-title.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
session-title.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-configured-effort.cordis.snapshot.yml Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
subagent-configured-effort.cordis.yml Merge pull request #2663 from deepseek-harness/feat/subagent-provider 2026-08-24 18:23:42 +08:00
subagent-continuable-inheritance.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-continuable-inheritance.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-durability-failure.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-durability-failure.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-report.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-report.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-result-diagnostic.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
subagent-result-diagnostic.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
web-fetch-fixture-server.mjs refactor: apply repository naming contract 2026-08-13 00:54:38 +08:00
web.cordis.snapshot.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00
web.cordis.yml refactor(acp): launch automation through the dsh acp profile 2026-08-23 10:59:00 +08:00

acp-agent example

English | 中文

Automation-oriented Agent Client Protocol server over JSON-RPC stdio. It is intended for parent agents, subagent providers, and other programmatic clients, not as the product UI.

pnpm run demo:acp             # needs DEEPSEEK_API_KEY (repo-root .env or env)
pnpm run demo:code-mode       # same protocol with the Code Mode tool transport

The dsh launcher applies the shipped acp profile (dsh-base plus dsh-acp-app), then this leaf's cordis.yml patch. The profile supplies the ACP bridge, DeepSeek adapter, sandboxed shell and filesystem stacks, approval policy, compaction, subagents, workflows, a session-query index, and repeat guard; the leaf pins demo and snapshot values and adds hook bridges. The bridge creates one fresh agent per session/new, persists sessions to JSONL, and keeps stdout protocol-pure. Optional patch overlays add session-query tools, spill settings, Code Mode, or web fetching.

Protocol channel

Stdout carries only newline-delimited ACP JSON-RPC. @deepseek-ai/dsh-acp-app and this patch install no stdout logger; added plugins must use stderr for diagnostics.

The automation contract — supported methods, baseline prompt content, committed-text output, and the intentionally absent UI surfaces — lives in @deepseek-ai/dsh-acp.

Session workspaces and permissions

Each session/new supplies an absolute cwd. Sandboxed bash and filesystem mutations resolve workspace-write against that session cwd, so concurrent sessions can use separate project roots; platform temporary roots remain shared writable scratch space (sandbox contract). DSH_PERMISSION_MODE selects workspace-write or danger-full-access for the deployment.

Under workspace-write, a model retry requesting wider sandbox access triggers session/request_permission with allow_once and reject_once. The client decides programmatically; dismissal or an unavailable answer fails closed. The selected outcome applies only to that retry and is recorded through the normal tool-result/audit path. The server never exposes a permission picker or persists client policy.