mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Hard line breaks mid-paragraph make docs harder to edit and diff — a one-word change reflows and re-diffs the whole paragraph. Reflow all tracked non-vendor Markdown (plus vendor/AGENTS.md) so each prose paragraph is a single line; soft-wrapping is the editor's job. Fenced code, tables, and list structure are preserved (wrapped list items fold to one line per bullet). Documents the convention in AGENTS.md.
1.9 KiB
1.9 KiB
dsh-system-prompt
System prompt assembly registry. Plugins contribute ordered text sections and tool-schema providers; the agent loop calls assemble() once per step.
Service: SystemPrompt (ctx key: systemPrompt)
Public API
ctx.systemPrompt.section(section: PromptSection): () => voidContribute a section. Disposed with the calling fiber.ctx.systemPrompt.tools(provider: () => ToolSchema[]): () => voidContribute tool schemas (evaluated at each assembly). Disposed with the calling fiber.ctx.systemPrompt.assemble(): Promise<PromptAssembly>Assemble the current prompt. Runs through thesystem-prompt/assemblewaterfall.
Events
| Event | Mode | Purpose |
|---|---|---|
system-prompt/assemble |
waterfall | Mutate/extend the assembly before it reaches the model |
system-prompt/change |
emit | A section or tool provider was registered or unregistered |
Key types
PromptSection—{ name, order, text: string | (() => string) }. Sections are concatenated in ascendingorder.PromptAssembly—{ sections: PromptSection[], tools: ToolSchema[] }. Tool schemas are part of the assembly by design: "what the model is told it can do" is one coherent thing, even though adapters transmit schemas as a separate wire field.renderPrompt(assembly)— joins section texts with blank lines.
Merge-extensible: plugins can declare extra fields on PromptAssembly via declaration merging.
Extension points
- Section providers: AGENTS.md reader, cwd notifier, persona config, etc.
- Tool schema providers:
ToolRegistryregisters itself as a tool provider automatically. - The
system-prompt/assemblewaterfall: mutate or replace the assembly (system-prompt configurability, dynamic tool filtering).
What is NOT here
- Any hardcoded prompt text — every section comes from plugins.
- Prompt compaction (belongs on the
agent/requestseam indsh-agent).