mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Beyond the mechanical conflicts (provider capability lines vs master's new inheritsParentContext field; generated catalogs regenerated rather than hand-merged; knip/lockfile), three master-side reworks required semantic adaptation of this branch: - The persona rework removed AgentOptions.systemPrompt, which was the structured-output instruction's channel. The instruction now rides the SAME final-request enforcement listener that injects the schema'd tool: appended per request to final.system (per-request wire state, not agent prompt state). Tests assert the wire request (adapter.requests) instead of child.options; the bare-direct-dispatch test pins the no-system arm. - Tool guidance moved out of deployment prompts into per-tool prompt sections; the examples' workflow paragraph became a tool:<toolName> section contributed by dsh-tool-workflow (explicit-ask-only policy), and both example personas resolve to master's minimal identity+behavior form. tool-workflow gains inject: systemPrompt (+ peer dep, tsconfig ref); the export-shape guard updated. - The uniform-RFC-format gate: the dynamic-workflows RFC restructured to the implemented/ skeleton (bare Status line; Proposal -> Decision; What-was-rejected -> Alternatives considered; new Consequences), and the overall-run-timeout deferral is now recorded in the RFC's Deferred list. The doc-graphs atlas classification gains the workflows seam (workflow-vm implementation, tool-workflow consumer). Master's harness-identity section made "empty assembled prompt" states unreachable through the loop, so the instruction-append is a plain undefined-ternary and the structured tests assert append-not-replace. All snapshot goldens (including workflow-run) replay unchanged. Full local CI-equivalent gate sequence green on the merged tree.
74 lines
3.6 KiB
Markdown
74 lines
3.6 KiB
Markdown
<!-- Generated by scripts/gen-doc-graphs.ts - do not edit by hand.
|
|
Run `pnpm run gen-doc-graphs` to regenerate. -->
|
|
|
|
# Coding Agent App Composition
|
|
|
|
The coding REPL demo adds the real DeepSeek adapter, filesystem tools, todo_write, compaction, and both subagent transports on top of the stdio app package.
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
cfg["examples/coding-agent<br/>cordis.yml"]
|
|
plugin_coding_hmr["hmr<br/>@cordisjs/plugin-hmr"]
|
|
cfg --> plugin_coding_hmr
|
|
plugin_coding_llm_deepseek["llm-deepseek<br/>@deepseek-ai/dsh-llm-deepseek"]
|
|
cfg --> plugin_coding_llm_deepseek
|
|
plugin_coding_bash["bash<br/>@deepseek-ai/dsh-bash-local"]
|
|
cfg --> plugin_coding_bash
|
|
plugin_coding_stdio_agent["stdio-agent<br/>@deepseek-ai/dsh-stdio-agent"]
|
|
cfg --> plugin_coding_stdio_agent
|
|
plugin_coding_stdio_agent --> bundle_agent_core["@deepseek-ai/dsh-agent-core"]
|
|
plugin_coding_stdio_agent --> bundle_jsonl["@deepseek-ai/dsh-session-persistence-jsonl"]
|
|
plugin_coding_stdio_agent --> frontdoor_stdio["readline UI<br/>console logger<br/>pre-created main agent"]
|
|
bundle_agent_core --> spine_llm["ctx.llm"]
|
|
bundle_agent_core --> spine_sessions["ctx.sessions"]
|
|
bundle_agent_core --> spine_tools["ctx.tools + tool-bash"]
|
|
bundle_agent_core --> spine_loop["ctx.agents + ctx.agentLoop"]
|
|
plugin_coding_compact_basic["compact-basic<br/>@deepseek-ai/dsh-compact-basic"]
|
|
cfg --> plugin_coding_compact_basic
|
|
plugin_coding_subagent["subagent<br/>@deepseek-ai/dsh-subagent"]
|
|
cfg --> plugin_coding_subagent
|
|
plugin_coding_subagent_spawn["subagent-spawn<br/>@deepseek-ai/dsh-subagent-spawn"]
|
|
cfg --> plugin_coding_subagent_spawn
|
|
plugin_coding_subagent_fork["subagent-fork<br/>@deepseek-ai/dsh-subagent-fork"]
|
|
cfg --> plugin_coding_subagent_fork
|
|
plugin_coding_tool_subagent["tool-subagent<br/>@deepseek-ai/dsh-tool-subagent"]
|
|
cfg --> plugin_coding_tool_subagent
|
|
plugin_coding_tool_subagent_fork["tool-subagent-fork<br/>@deepseek-ai/dsh-tool-subagent"]
|
|
cfg --> plugin_coding_tool_subagent_fork
|
|
plugin_coding_workflow_vm["workflow-vm<br/>@deepseek-ai/dsh-workflow-vm"]
|
|
cfg --> plugin_coding_workflow_vm
|
|
plugin_coding_tool_workflow["tool-workflow<br/>@deepseek-ai/dsh-tool-workflow"]
|
|
cfg --> plugin_coding_tool_workflow
|
|
plugin_coding_tool_todo["tool-todo<br/>@deepseek-ai/dsh-tool-todo"]
|
|
cfg --> plugin_coding_tool_todo
|
|
plugin_coding_fs_local["fs-local<br/>@deepseek-ai/dsh-fs-local"]
|
|
cfg --> plugin_coding_fs_local
|
|
plugin_coding_fs_policy["fs-policy<br/>@deepseek-ai/dsh-fs-policy"]
|
|
cfg --> plugin_coding_fs_policy
|
|
plugin_coding_tool_fs["tool-fs<br/>@deepseek-ai/dsh-tool-fs"]
|
|
cfg --> plugin_coding_tool_fs
|
|
```
|
|
|
|
| Plugin id | Package / module |
|
|
| --- | --- |
|
|
| `hmr` | `@cordisjs/plugin-hmr` |
|
|
| `llm-deepseek` | `@deepseek-ai/dsh-llm-deepseek` |
|
|
| `bash` | `@deepseek-ai/dsh-bash-local` |
|
|
| `stdio-agent` | `@deepseek-ai/dsh-stdio-agent` |
|
|
| `compact-basic` | `@deepseek-ai/dsh-compact-basic` |
|
|
| `subagent` | `@deepseek-ai/dsh-subagent` |
|
|
| `subagent-spawn` | `@deepseek-ai/dsh-subagent-spawn` |
|
|
| `subagent-fork` | `@deepseek-ai/dsh-subagent-fork` |
|
|
| `tool-subagent` | `@deepseek-ai/dsh-tool-subagent` |
|
|
| `tool-subagent-fork` | `@deepseek-ai/dsh-tool-subagent` |
|
|
| `workflow-vm` | `@deepseek-ai/dsh-workflow-vm` |
|
|
| `tool-workflow` | `@deepseek-ai/dsh-tool-workflow` |
|
|
| `tool-todo` | `@deepseek-ai/dsh-tool-todo` |
|
|
| `fs-local` | `@deepseek-ai/dsh-fs-local` |
|
|
| `fs-policy` | `@deepseek-ai/dsh-fs-policy` |
|
|
| `tool-fs` | `@deepseek-ai/dsh-tool-fs` |
|
|
|
|
Source config: [`examples/coding-agent/cordis.yml`](cordis.yml).
|
|
|
|
Maintenance mode: hybrid: the leaf plugin list is parsed from its `cordis.yml`; app package expansion is curated from package source.
|