mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
- `catalogHistory` validated its durable read. `agent.session.events` is a JSONL/SQLite seed on resume or fork, and seed validation guarantees only a source object with a non-empty `kind`; a `skill-catalog` record with missing or wrongly shaped `entries` threw inside the step listener, failing every later turn of that session. It is now skipped as an unrecognizable record, the posture the replaced content digest had, with a regression test over six malformed shapes. - The headless keyless smoke still filtered catalogs by the old plugin source, so the `built-bin-smoke` gate would not have found the catalog message. - Entries record the published description unescaped. The pseudo-XML escaping belongs to the `<available_skills>` frame and is applied when rendering it, so a description containing `<` no longer reaches the card as `<`. `escapeText` is injective, so republish semantics and the model-facing text are unchanged. - Adjacent text blocks join with no separator, matching how provider adapters flatten them; the body no longer shows a line break the model never saw. - Provenance fields are bounded like the text: an unknown producer may record an arbitrarily large value. - Both readers are all-or-nothing, and the row's form marker reports what rendered rather than what was declared, so a partly unreadable record cannot present a confident but incomplete account. - The catalog body consumes `update` as a replacement notice; the digest canonicalizes per entry as JSON, since every separator character is itself legal in a description. - `core.md` documents the form axis with a `ContextForm` type-equiv block, and both projections assert the wiring they duplicate.
skill/ - skill capability family
English | 中文
The canonical three-package capability seam for reusable agent instructions: a provider registry, a local implementation, and the model-facing catalog/loader consumer. All are product packages.
| Package | Role | ctx key |
|---|---|---|
skill/ |
Provider registry, precedence resolution, complete/incomplete catalog snapshots, and full-definition lookup | ctx.skills |
skill-local/ |
Project/custom/user filesystem provider with membership watching | (registers on ctx.skills) |
tool-skill/ |
Initial and replacement catalogs plus the model-facing skill loader |
(registers on ctx.tools) |
The interface lives at skill/skill/. Providers register synchronously and perform asynchronous discovery through ctx.skills; tool-skill consumes only that interface, so an embedded or remote provider can replace or complement skill-local without changing the model-facing contract. agent-core loads this family by default, but it remains a capability outside the core control spine, parallel to bash/, fs/, web/, and subagent/.