v0.0.46 - Sync README with SKILLS docs: context modes, fallback chains, triggers, safety limits, and doc links

This commit is contained in:
Your Name
2026-03-06 15:07:30 -04:00
parent 97dca12bb1
commit 927c313a87
3 changed files with 29 additions and 15 deletions
+26 -12
View File
@@ -45,17 +45,19 @@ Because all identity, communication, and memory live on Nostr, the agent is **po
### Skills are the new apps.
Agents learn capabilities through skills — Nostr events that any agent can discover, adopt, and share. There is no app store, no gatekeeper, no approval process. An agent can use public or private skills.
Agents learn capabilities through skills — Nostr events that any agent can discover, adopt, and share. There is no app store, no gatekeeper, no approval process. An agent can use public or private skills.
Skills support context modes (`inject`, `full`, `override`) and per-skill LLM fallback chains (for example: `anthropic/claude-sonnet-4-20250514, openai/gpt-4o-mini, cheap`) so each skill can tune behavior and cost. See [`docs/SKILLS.md`](docs/SKILLS.md).
### Private inference.
Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers.
## Current Status — v0.0.45
## Current Status — v0.0.46
**Active build — this project is barely working. Experiment at your own risk.**
> Last release update: v0.0.45 — Add comprehensive comments to config.jsonc and validate JSONC loading
> Last release update: v0.0.46 — Sync README with SKILLS docs: context modes, fallback chains, triggers, safety limits, and doc links
- Connects to configured relays with auto-reconnect and relay state transition logging
- Publishes configured startup events per relay as each relay becomes connected
@@ -66,7 +68,7 @@ Didactyl will support local inference, which is very privacy preserving. Remote
- Builds LLM context from soul template (`---template---` section in kind `31120`) with named sections, variable resolution, and per-provider content overrides; falls back to hardcoded assembly if no template present
- Adopted skills injected into context automatically from the agent's `10123` adoption list
- Supports tool-calling loop with configurable max turns and local safety limits
- Triggered skills — Nostr event filters that fire skill execution automatically
- Triggered skills — Nostr event filters that fire skill execution automatically with `template` (deterministic) or `llm` (context-aware) actions; see [`docs/SKILLS.md`](docs/SKILLS.md)
- Deduplicates inbound messages via event-ID cache and FNV-1a fingerprint debounce window
- Appends every outbound LLM context payload to [`context.log`](context.log)
- Localhost HTTP admin API on port `8484` — inspect context, run prompts, compare variants, change model at runtime
@@ -195,7 +197,7 @@ CLI debugger notes:
- Example:
```bash
./didactyl_static_x86_64 --config ./config.jsonc --test-tool nostr_file_md_to_longform_post '{"file":"docs/TOOLS_AND_SKILLS.md","title":"TOOLS_AND_SKILLS"}'
./didactyl_static_x86_64 --config ./config.jsonc --test-tool nostr_file_md_to_longform_post '{"file":"docs/SKILLS.md","title":"SKILLS"}'
```
### Talk to it
@@ -256,16 +258,24 @@ The CLI prints each message block with a speaker label (`You` / `Didactyl`) and
## Didactyl Kinds (Nostr)
Didactyl uses a two-layer skill model: authors publish public skill definitions, and adopters publish which skills they use.
Didactyl uses a two-layer skill model: authors publish skill definitions, and adopters publish which skills they use.
- `31120` — **Soul** (private instruction baseline)
- `d=soul`
- `31123` — **Public Skill Definition** (markdown skill body in `content` or structured JSON in `content_fields`)
- `31123` — **Public Skill Definition** (replaceable by `d` tag)
- `content` is JSON with fields like `description`, `context_mode`, `llm`, `tools`, `template`, optional `max_tokens` / `temperature`
- `d=<skill_slug>` (example: `d=long_form_note`)
- `31124` — **Private Skill Definition** (private/internal procedures)
- `31124` — **Private Skill Definition** (same schema as `31123`, private scope)
- `d=<skill_slug>` (example: `d=admin_ops`)
- `10123` — **Public Skill Adoption List**
- tags contain one or more `a` references to selected `31123` skills
- `10123` — **Skill Adoption List**
- tags contain one or more `a` references to selected skills
Context modes:
- `inject` — skill instructions are layered into soul context
- `full` — skill provides full prompt template (soul optional via `{{soul}}`)
- `override` — skill replaces soul prompt, standard context structure remains
Full skill schema, trigger tags, template variables, fallback resolution, and limits are documented in [`docs/SKILLS.md`](docs/SKILLS.md).
## Skill Sharing & Discovery
@@ -304,7 +314,7 @@ Didactyl builds tier-aware context:
- **ADMIN** request context — assembled from the soul's `---template---` section (if present), otherwise hardcoded order:
1. Soul personality (everything above `---template---` in kind `31120`)
2. Named template sections in order — e.g. `admin_identity`, `admin_profile`, `admin_relay_list`, `startup_events`, `adopted_skills`, `dm_history` (expand), `admin_notes`
2. Named template sections in order — e.g. `admin_profile`, `admin_notes`, `admin_relays`, `adopted_skills`, `dm_history`, `message`, `triggering_event`, `tools`
3. Each section resolves `{{variable}}` placeholders from live data at call time
4. Provider-specific content overrides per section (e.g. XML tags for Anthropic)
5. Section names are used in `context.log` headers and `/api/context/parts` response
@@ -313,6 +323,8 @@ Didactyl builds tier-aware context:
Every serialized LLM context payload is appended to [`context.log`](context.log).
Triggered skills and tool loops are bounded by runtime safeguards (for example, trigger cooldowns and action rate limits); see [`docs/SKILLS.md`](docs/SKILLS.md) for the current defaults.
## Tooling Interface
Current tool schema exposed to the LLM in [`tools_build_openai_schema_json()`](src/tools.c:881):
@@ -398,7 +410,9 @@ Full reference: [`docs/API.md`](docs/API.md). Frontend brief: [`plans/admin_web_
│ └── debug.c / .h # Runtime log levels/macros
├── docs/
│ ├── API.md # HTTP admin API endpoint reference
│ └── TOOLS_AND_SKILLS.md # Tool and skill system documentation
│ ├── TOOLS.md # Tool architecture and catalog
│ ├── SKILLS.md # Skill schema, context modes, triggers, and limits
│ └── CRASH_FIXES.md # Crash analysis and fixes log
├── plans/ # Architecture and planning documents
└── README.md
```
+1 -1
View File
@@ -364,4 +364,4 @@ A spelling checker runs with no soul — purely functional, minimal context, che
## Related Documentation
- Tool architecture and complete tool catalog: [TOOLS.md](TOOLS.md)
- Combined index page: [TOOLS_AND_SKILLS.md](TOOLS_AND_SKILLS.md)
- Project overview and runtime behavior: [README.md](../README.md)
+2 -2
View File
@@ -12,8 +12,8 @@
// Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros
#define DIDACTYL_VERSION_MAJOR 0
#define DIDACTYL_VERSION_MINOR 0
#define DIDACTYL_VERSION_PATCH 45
#define DIDACTYL_VERSION "v0.0.45"
#define DIDACTYL_VERSION_PATCH 46
#define DIDACTYL_VERSION "v0.0.46"
// Agent metadata
#define DIDACTYL_NAME "Didactyl"