mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
The sandbox deliberately provides no Node API, and now says so instead of letting a bare ReferenceError teach nothing: require, the timers, and fetch are callable traps whose error redirects to the cordis alternative (inject: ['fs'] + ctx.fs, ['web'] + ctx.web, ['bash'] + ctx.bash, ['timer'] + ctx.setTimeout — a fiber effect, unwound on unmount). Only function-shaped globals are trapped; process/Buffer stay undefined so typeof feature probes stay inert. The mount description and the demo persona state the routing rule, and the demo mounts ctx.fs (local provider) and ctx.web (seam + keyless local fetch provider) so agent-built plugins have real capabilities to build on. Live-validated: a model that reached for Node setTimeout self-corrected to inject: ['timer'] in one step and built a working ctx.web fetch tool.
50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
<!-- Generated by scripts/gen-doc-graphs.ts - do not edit by hand.
|
|
Run `pnpm run gen-doc-graphs` to regenerate. -->
|
|
|
|
# Cordis Agent App Composition
|
|
|
|
The self-referential demo puts @deepseek-ai/dsh-tool-cordis on the coding spine, letting the agent inspect its own runtime and mount/unmount plugins into it.
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
cfg["examples/cordis-agent<br/>cordis.yml"]
|
|
plugin_cordis_hmr["hmr<br/>@cordisjs/plugin-hmr"]
|
|
cfg --> plugin_cordis_hmr
|
|
plugin_cordis_llm_deepseek["llm-deepseek<br/>@deepseek-ai/dsh-llm-deepseek"]
|
|
cfg --> plugin_cordis_llm_deepseek
|
|
plugin_cordis_bash["bash<br/>@deepseek-ai/dsh-bash-local"]
|
|
cfg --> plugin_cordis_bash
|
|
plugin_cordis_fs_local["fs-local<br/>@deepseek-ai/dsh-fs-local"]
|
|
cfg --> plugin_cordis_fs_local
|
|
plugin_cordis_web["web<br/>@deepseek-ai/dsh-web"]
|
|
cfg --> plugin_cordis_web
|
|
plugin_cordis_web_fetch_local["web-fetch-local<br/>@deepseek-ai/dsh-web-fetch-local"]
|
|
cfg --> plugin_cordis_web_fetch_local
|
|
plugin_cordis_stdio_agent["stdio-agent<br/>@deepseek-ai/dsh-stdio-agent"]
|
|
cfg --> plugin_cordis_stdio_agent
|
|
plugin_cordis_stdio_agent --> bundle_agent_core["@deepseek-ai/dsh-agent-core"]
|
|
plugin_cordis_stdio_agent --> bundle_jsonl["@deepseek-ai/dsh-session-persistence-jsonl"]
|
|
plugin_cordis_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_cordis_tool_cordis["tool-cordis<br/>@deepseek-ai/dsh-tool-cordis"]
|
|
cfg --> plugin_cordis_tool_cordis
|
|
```
|
|
|
|
| Plugin id | Package / module |
|
|
| --- | --- |
|
|
| `hmr` | `@cordisjs/plugin-hmr` |
|
|
| `llm-deepseek` | `@deepseek-ai/dsh-llm-deepseek` |
|
|
| `bash` | `@deepseek-ai/dsh-bash-local` |
|
|
| `fs-local` | `@deepseek-ai/dsh-fs-local` |
|
|
| `web` | `@deepseek-ai/dsh-web` |
|
|
| `web-fetch-local` | `@deepseek-ai/dsh-web-fetch-local` |
|
|
| `stdio-agent` | `@deepseek-ai/dsh-stdio-agent` |
|
|
| `tool-cordis` | `@deepseek-ai/dsh-tool-cordis` |
|
|
|
|
Source config: [`examples/cordis-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.
|