netxops/docs/KNOWLEDGE_BASE.md
oliver 3a731389f0 Add KB local write tools and align Netx Ops with standard preset.
Host-side netx__kb* tools jail create/update/delete under paths.local memories/drafts/suggestions; Netx Ops agent.cordis.yml now includes full standard capability rows plus ops tools.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 21:43:41 +08:00

4 KiB

Knowledge base

Operator-subset knowledge packages are wired through netxops settings, not into the netx API or netx-ops skill text.

Role split

Surface Responsibility
netx-ops Live netx evidence (alarms / inventory / CLI) — pure netx, no KB playbooks
kb-context Identity annotation from MANIFEST (KB_*)
_skills/kb-* Shared operator KB triage / ingest / retrieve / export / package
paths.localSkills Operator-local skills (alongside _skills/; same toggles)

Setup

  1. Settings → Plugins → Netx Ops → 知识库 / Knowledge base
  2. Browse (or paste) a folder that contains (or uniquely nests ≤3 levels) a MANIFEST.json — browse auto-saves
  3. Leave 知识库技能 → 在 Netx Ops 预设中启用 on (default) so _skills/kb-* register into Netx Ops sessions
  4. Optionally enable 对其他预设公开 to publish those pack skills on the host public skill layer

MANIFEST v1.0 (plugin checks)

Field Rule
schemaVersion must be "1.0"
packageType must be "operator-subset"
operator.name / operator.country required non-empty strings
version required non-empty string
content.* booleans; contract keys hasRegions / hasTheory / hasPacket / hasCommon / hasSkills (missing → false). Legacy short keys regions/theory/packet/skills map to has* when the contract key is absent
paths.* optional relative dirs under package root (packaging-generated). Plugin uses skills (default _skills) and localSkills; missing / blank values skipped

Location: ${kbRoot}/MANIFEST.json, else recurse ≤3 levels and exactly one hit. Zero or multiple → error.

Authoritative packaging prose lives in the workspace contract notes (插件 / 契约); this doc only describes what the plugin enforces.

Injected context

Channel Fields
process.env KB_ROOT, KB_LOCAL (when paths.local set), KB_OPERATOR, KB_COUNTRY, KB_VERSION, KB_CONTENT (JSON of has*), KB_STATUS
Skill kb-context Same identity + kbLocal + local create/update/delete tool names
Skills from pack Registered when configured and hasSkills and the inPreset/public toggle for that plane
Local FS tools When configured + paths.local + same KB toggles: netx__kbWriteMemory / WriteDraft / WriteSuggestion / UpdateLocal / DeleteLocal / ListLocal — jail under memories|drafts|suggestions only (identity/ host persona, agent read-only)

RPC (channel /netxops): kb.status (saved snapshot), kb.resolve with { path } (preview unsaved paths).

Pack skill registration

When KB_STATUS=configured and content.hasSkills=true, the plugin scans (same register rules / toggles / provider: netxops-kb-pack):

${realRoot}/${paths.skills || '_skills'}/*/SKILL.md
${realRoot}/${paths.localSkills}/*/SKILL.md   # only when paths.localSkills is set

paths.localSkills missing, blank, or an empty/missing directory → skipped (ops continues). Invalid SKILL.md bundles are skipped the same way as under _skills/.

Setting Default Plane
groupKbInPreset true Netx Ops preset sessions
groupKbPublic false Host public skills (other presets)

Invalid or missing _skills directories are skipped (ops continues).

Degradation matrix

Condition KB_STATUS Behavior
Empty kbRoot unconfigured Pure netx; no invented operator; no kb-* packs
Missing / ambiguous / invalid MANIFEST error Pure netx; badge shows error detail
Valid MANIFEST, hasSkills=false configured Identity only (kb-context + env)
Valid + hasSkills + toggles configured Identity + pack skills (_skills / paths.skills) and optional paths.localSkills on the enabled plane(s)

Never invent an operator when status is not configured.