misakanet 2.44.1 → 2.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codex-plugin/plugin.json +1 -1
- package/README.ja.md +170 -290
- package/README.md +142 -280
- package/README.zh-CN.md +197 -374
- package/SKILL.md +9 -4
- package/lib/client.js +373 -49
- package/package.json +1 -1
- package/skills/misakanet/SKILL.md +9 -4
package/README.md
CHANGED
|
@@ -8,13 +8,18 @@
|
|
|
8
8
|
|
|
9
9
|
mcp-name: io.github.Ikalus1988/misakanet
|
|
10
10
|
|
|
11
|
-
> **
|
|
12
|
-
> the bugs someone already paid for, instead of rediscovering them one session at a time — the **Lessons**
|
|
13
|
-
> badge above is the live corpus size.
|
|
11
|
+
> **The same failure, paid for twice.**
|
|
14
12
|
>
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
>
|
|
13
|
+
> A `pip install` times out behind a corporate proxy. An agent finds the fix. Days later the same
|
|
14
|
+
> timeout appears on another machine, under another model — and is debugged from scratch, because the
|
|
15
|
+
> fix was never written down anywhere the next agent looks.
|
|
16
|
+
>
|
|
17
|
+
> MisakaNet is that place: a git-backed **failure memory**. Every lesson is a Markdown file in this
|
|
18
|
+
> repository — graded by evidence, reviewed like code, retrieved by an agent instead of guessed at.
|
|
19
|
+
> You fail once; the next agent does not.
|
|
20
|
+
|
|
21
|
+
Agent-native interfaces: [MCP server](https://misakanet.org/mcp) (8 tools), WebMCP, `llms.txt`,
|
|
22
|
+
A2A discovery via `.well-known/agent-card.json`.
|
|
18
23
|
|
|
19
24
|
<p align="center">
|
|
20
25
|
<img src="promotional/misaka-compare.jpg" width="720" alt="MisakaNet — Before: 30+ min manual debugging vs After: 0.02s with MCP"/>
|
|
@@ -23,7 +28,7 @@ mcp-name: io.github.Ikalus1988/misakanet
|
|
|
23
28
|
<p align="center">
|
|
24
29
|
<em>Core</em>
|
|
25
30
|
|
|
26
|
-
<a href="https://github.com/Ikalus1988/MisakaNet/actions/workflows/pr-
|
|
31
|
+
<a href="https://github.com/Ikalus1988/MisakaNet/actions/workflows/pr-checks.yml"><img src="https://github.com/Ikalus1988/MisakaNet/actions/workflows/pr-checks.yml/badge.svg" alt="CI"></a>
|
|
27
32
|
<a href="https://github.com/Ikalus1988/MisakaNet/tree/main/lessons"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Ikalus1988/MisakaNet/data/badges/lessons.json" alt="Lessons"></a>
|
|
28
33
|
<a href="https://github.com/Ikalus1988/MisakaNet/blob/main/scripts/mcp_server.py"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Ikalus1988/MisakaNet/data/badges/tools.json" alt="MCP Tools"></a>
|
|
29
34
|
<a href="https://misakanet.org/api/search-index"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Ikalus1988/MisakaNet/data/badges/retrieval.json" alt="Retrieval backend (today)"></a>
|
|
@@ -38,161 +43,118 @@ mcp-name: io.github.Ikalus1988/misakanet
|
|
|
38
43
|
<a href="https://pypi.org/project/misakanet/"><img src="https://img.shields.io/pypi/v/misakanet" alt="PyPI"></a>
|
|
39
44
|
<a href="https://www.npmjs.com/package/misakanet"><img src="https://img.shields.io/npm/v/misakanet" alt="npm"></a>
|
|
40
45
|
<a href="https://github.com/marketplace/actions/misakanet-intake-bot"><img src="https://img.shields.io/badge/Marketplace-MisakaNet%20Intake%20Bot-blue?logo=github" alt="GitHub Marketplace"></a>
|
|
41
|
-
<a href="https://dsh-plugin.org/plugins/ikalus1988/misakanet"><img src="https://dsh-plugin.org/badges/listed.svg" alt="Listed on dsh-plugin.org"></a>
|
|
42
|
-
<a href="https://dsh.directory/plugins/ikalus1988/misakanet"><img src="https://dsh.directory/badges/listed.svg" alt="Listed on DSH Directory"></a>
|
|
43
|
-
<a href="https://www.dsh.so/artifact/misakanet/"><img src="https://www.dsh.so/badge/install/misakanet.svg" alt="dsh.so install"></a>
|
|
44
46
|
</p>
|
|
45
47
|
|
|
46
48
|
<p align="center">
|
|
47
49
|
<em>Ecosystem</em>
|
|
48
50
|
|
|
49
|
-
<a href="https://glama.ai/mcp/
|
|
50
|
-
<a href="https://
|
|
51
|
-
<a href="https://mcptoplist.com/server/io.github.Ikalus1988%2Fmisakanet"><img src="https://mcptoplist.com/badge/io.github.Ikalus1988%2Fmisakanet.svg" alt="MCP Toplist"></a>
|
|
52
|
-
<!-- Smithery badge uses a shields.io 'endpoint' badge that dynamically reads the Kin
|
|
53
|
-
score from data/badges/smithery.json -- updated daily by the update-smithery-badge
|
|
54
|
-
workflow, so it stays in sync without manual PRs. -->
|
|
55
|
-
<a href="https://smithery.ai/servers/misakanet/misakanet"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Ikalus1988/MisakaNet/refs/heads/data/badges/smithery.json" alt="Smithery"></a>
|
|
56
|
-
<!-- HOL badge: the link still points at hol.org (its listing detector looks for the badge
|
|
57
|
-
in the README, worth +2% trust), but the image is a static flat shield — the live
|
|
58
|
-
hol.org/api/... endpoint is slow/unstable through shields.io and rendered as
|
|
59
|
-
"inaccessible" / a mismatched for-the-badge style. -->
|
|
60
|
-
<a href="https://hol.org/registry/plugins/Ikalus1988%2FMisakaNet"><img src="https://img.shields.io/badge/HOL%20Registry-listed-5599FE?style=flat" alt="MisakaNet on HOL Registry"></a>
|
|
61
|
-
<a href="https://github.com/Ikalus1988/MisakaNet/tree/main/docs/benchmarks"><img src="https://img.shields.io/badge/Benchmark-Weekly%20Workers%20AI-blue" alt="Benchmark"></a>
|
|
51
|
+
<a href="https://glama.ai/mcp/connectors/org.misakanet/misaka-net"><img src="https://glama.ai/mcp/connectors/org.misakanet/misaka-net/badges/score.svg" alt="MisakaNet MCP connector on Glama"></a>
|
|
52
|
+
<a href="https://mcptoplist.com/server/io.github.Ikalus1988%2Fmisakanet"><img src="https://img.shields.io/badge/MCP-Toplist-blue" alt="MCP Toplist"></a>
|
|
62
53
|
</p>
|
|
63
54
|
|
|
64
55
|
---
|
|
65
56
|
|
|
66
57
|
## Install (30 seconds)
|
|
67
58
|
|
|
59
|
+
The point of an install is a first **successful search**, not the install. None of these needs an
|
|
60
|
+
account or a token.
|
|
61
|
+
|
|
68
62
|
| Your host | Command |
|
|
69
63
|
|---|---|
|
|
70
|
-
| **DeepSeek Harness** | `dsh plugin --profile web add misakanet` — or type `misakanet` in
|
|
64
|
+
| **DeepSeek Harness** | `dsh plugin --profile web add misakanet` — or type `misakanet` in **Add plugin** |
|
|
71
65
|
| **Claude Code** | `/plugin marketplace add Ikalus1988/MisakaNet` then `/plugin install misakanet@misakanet` |
|
|
72
|
-
|
|
|
73
|
-
| **Any other MCP client** | point it at `https://misakanet.org/mcp` —
|
|
66
|
+
| Installer-managed | Claude Code · Codex · Hermes · OpenClaw · codewhale · Cursor · Gemini CLI · Copilot CLI · OpenCode · Kiro |
|
|
67
|
+
| **Any other MCP client** | point it at `https://misakanet.org/mcp` — public endpoint, anonymous reads |
|
|
74
68
|
| **Your own code** | `pip install misakanet-core` (library) · `pip install misakanet` (stdio server) |
|
|
75
69
|
|
|
76
|
-
|
|
77
|
-
<img src="docs/assets/dsh-plugin-add.png" width="760" alt="DeepSeek Harness plugin page: (1) the plugin icon in the sidebar, (2) the 添加插件 (Add plugin) button, (3) the Add-plugin dialog with the package name misakanet typed in"/>
|
|
78
|
-
</p>
|
|
79
|
-
|
|
80
|
-
<p align="center"><em>DeepSeek Harness: sidebar <b>插件</b> (1) → <b>添加插件</b> (2) → type <code>misakanet</code> (3) → <b>安装</b>.<br/>The dialog takes the same package name the CLI command above uses (its own hint: a package name, a GitHub URL, or a local path).</em></p>
|
|
70
|
+
The installer-managed row is what `npx @misaka-net/misakanet-setup` writes into each host's config.
|
|
81
71
|
|
|
82
72
|
Updates: `dsh plugin --profile web update misakanet@latest`.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
No account, no token, no Python needed for the plugin path: the npm bundle mounts the hosted endpoint.
|
|
86
|
-
Declared hosts and what was measured: [compatibility](docs/compatibility.md). Every channel, the
|
|
87
|
-
prerequisites, and the two-package trap that costs people an install: [How to use it](#how-to-use-it).
|
|
88
|
-
|
|
89
|
-
## What the DeepSeek Harness plugin adds
|
|
73
|
+
Installer updates: `npx @misaka-net/misakanet-setup@latest`.
|
|
74
|
+
Full prerequisites and the two-package trap: [How to use it](#how-to-use-it).
|
|
90
75
|
|
|
91
|
-
|
|
92
|
-
the same release, so this section lists them by the version that carries them. It is not a dialog: it puts
|
|
93
|
-
MisakaNet where the session already is.
|
|
76
|
+
## Your first five minutes
|
|
94
77
|
|
|
95
|
-
**
|
|
78
|
+
**1. Ask it something you have actually broken.** No client installed? This `curl` is the whole interface:
|
|
96
79
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
| **Voice** | An off-by-default switch that explains both mechanisms: the cue the server names on the next search, and the local hook a page cannot read. |
|
|
105
|
-
|
|
106
|
-
<p align="center">
|
|
107
|
-
<img src="docs/assets/dsh-client-left-column.png" width="820" alt="DeepSeek Harness: a permanent MisakaNet entry in the left column under Plugins, and the full page it opens"/>
|
|
108
|
-
</p>
|
|
109
|
-
|
|
110
|
-
<p align="center">
|
|
111
|
-
<img src="docs/assets/dsh-client-right-panel.png" width="820" alt="The MisakaNet pane in the right column of a DeepSeek Harness session"/>
|
|
112
|
-
</p>
|
|
113
|
-
|
|
114
|
-
**With 2.41.0 — [release PR #2591](https://github.com/Ikalus1988/MisakaNet/pull/2591).** These six surfaces
|
|
115
|
-
are in `main` and ship in 2.41.0; a 2.40.0 install does not have them yet.
|
|
80
|
+
```bash
|
|
81
|
+
curl -sS https://misakanet.org/mcp \
|
|
82
|
+
-H 'Content-Type: application/json' -H 'Accept: application/json' \
|
|
83
|
+
-H 'MCP-Protocol-Version: 2025-06-18' -H 'Origin: https://misakanet.org' \
|
|
84
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
|
|
85
|
+
"params":{"name":"misakanet_search","arguments":{"query":"database is locked","top":3}}}'
|
|
86
|
+
```
|
|
116
87
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
| **Frame-wide toast** | After a `/misakanet` search comes back with lessons, a card appears over every column with the top hit; dismiss it or click through to the lesson. |
|
|
121
|
-
| **Sidebar foot** | One action beside Settings: copy this session's MisakaNet activity as a summary for an issue or a PR body. |
|
|
122
|
-
| **中文 / English** | Every MisakaNet surface follows the host language: the panel, the `/misakanet` card, the settings row, and the plugin page's own title and description. |
|
|
123
|
-
| **Settings → General** | A MisakaNet preference row: play voice cues in this browser, and how much the surfaces show (compact / full). Both stay in the browser. |
|
|
124
|
-
| **Plugin page** | The MCP row's effective configuration — endpoint, transport, timeout — shown read-only, next to where it is edited (the profile's `cordis.patch.yml`). |
|
|
88
|
+
**2. Read what came back.** A hit returns the lesson, its `evidence_level`, and its path — open the
|
|
89
|
+
file and read the fix before running any command in it. A miss returns `no_match` plus a ready-to-call
|
|
90
|
+
intake: the corpus saying it does not know this one yet.
|
|
125
91
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
touch your profile: `python3 scripts/install_smoke.py dsh-client --serve`.
|
|
92
|
+
**3. Check the trust signal, not the tone.** `E0`–`E3` say how far a lesson was verified; `E4` is the
|
|
93
|
+
one nobody can write or vote into.
|
|
129
94
|
|
|
130
95
|
## What is MisakaNet?
|
|
131
96
|
|
|
132
|
-
**Git-backed failure memory for AI coding agents.** An error shows up → the agent searches
|
|
133
|
-
|
|
134
|
-
lesson for the next agent.
|
|
135
|
-
|
|
136
|
-
|
|
97
|
+
**Git-backed failure memory for AI coding agents.** An error shows up → the agent searches → it
|
|
98
|
+
applies a fix somebody already verified → if nothing matches, the miss becomes an intake, and the
|
|
99
|
+
intake becomes a lesson for the next agent.
|
|
100
|
+
|
|
101
|
+
Every lesson is a Markdown file: reviewed like code, graded by evidence, retrieved with BM25 over the
|
|
102
|
+
Python standard library. No vector database, no embedding model, no server unless you want one.
|
|
137
103
|
|
|
138
104
|
| | |
|
|
139
105
|
|---|---|
|
|
140
106
|
| **Lessons** | failure-recovery knowledge base, open and auditable under `lessons/` |
|
|
141
107
|
| **Domains** | rag · devops · fanuc · docker · feishu · mcp · network · ci · wsl · windows … |
|
|
142
|
-
| **Evidence
|
|
143
|
-
|
|
144
|
-
Registry listings ([Glama](https://glama.ai/mcp/servers/Ikalus1988/MisakaNet/score),
|
|
145
|
-
[Smithery](https://smithery.ai/servers/misakanet/misakanet), MCP Toplist) proxy the hosted endpoint, which
|
|
146
|
-
serves **indexed failure-recovery lessons** — *indexed*, never "verified": evidence level is what says
|
|
147
|
-
how much a lesson has been proven.
|
|
108
|
+
| **Evidence** | E0 intake → E1 reviewed → E2 reproduced → E3 CI verified → **E4 observed reuse by two or more distinct clients** |
|
|
148
109
|
|
|
149
|
-
|
|
|
150
|
-
|
|
151
|
-
| ❌
|
|
152
|
-
| ❌
|
|
153
|
-
| ❌
|
|
154
|
-
| ❌
|
|
155
|
-
| ❌
|
|
110
|
+
| It is not | It is |
|
|
111
|
+
|---|---|
|
|
112
|
+
| ❌ a general memory system | ✅ a failure-recovery knowledge layer |
|
|
113
|
+
| ❌ an agent runtime | ✅ a searchable lesson database |
|
|
114
|
+
| ❌ a vector database / RAG stack | ✅ BM25 keyword search, stdlib only (Python ≥ 3.10 still required) |
|
|
115
|
+
| ❌ a skill marketplace | ✅ debugging knowledge from real sessions |
|
|
116
|
+
| ❌ a retrieval benchmark | ✅ a corpus graded by evidence; the benchmark we have is paused |
|
|
156
117
|
|
|
157
|
-
### What it
|
|
118
|
+
### What it answers — and what it does not
|
|
158
119
|
|
|
159
|
-

|
|
160
121
|
|
|
161
|
-
|
|
162
|
-
`no_match` plus a ready-to-call intake —
|
|
122
|
+
MisakaNet answers for the failures it has indexed, and only those. When nothing matches the reply is
|
|
123
|
+
`no_match` plus a ready-to-call `intake` — the corpus saying "not this one yet", not a dead end.
|
|
163
124
|
|
|
164
125
|
### Lesson vs Skill
|
|
165
126
|
|
|
166
|
-
A **skill** teaches an agent
|
|
167
|
-
not to fail again
|
|
168
|
-
a general memory layer, not a vector database. → [FAQ](FAQ.md)
|
|
169
|
-
|
|
170
|
-
## Benchmark: how much of a lesson does a model reproduce when handed one?
|
|
127
|
+
A **skill** teaches an agent how to do something; a **lesson** records what went wrong before and how
|
|
128
|
+
not to fail again. MisakaNet is only the second thing. → [FAQ](FAQ.md)
|
|
171
129
|
|
|
172
|
-
|
|
173
|
-
score is `lesson_hit_rate`: **the share of the injected lesson's commands reproduced in the answer**.
|
|
174
|
-
No retrieval is called and correctness is not checked, so this is the **recitation** half of RAG, not
|
|
175
|
-
evidence that search works.
|
|
130
|
+
## Where it is today
|
|
176
131
|
|
|
177
|
-
|
|
178
|
-
|
|
132
|
+
- **The numbers that move are badges**, on purpose: the Lessons badge renders
|
|
133
|
+
`data/badges/lessons.json`, regenerated by `update-badges.yml`, so it can lag a run but is never a
|
|
134
|
+
hand-typed total.
|
|
135
|
+
- **The top of the evidence ladder is empty, and this page says so.** `E4` needs an observation —
|
|
136
|
+
two distinct clients actually retrieving a lesson — and the corpus has none yet
|
|
137
|
+
([distribution](docs/trust-semantics.md), regenerated and checked by CI).
|
|
138
|
+
- **Search is BM25, so it matches words, not meaning.** A failure described in vocabulary the corpus
|
|
139
|
+
has never seen is a miss, and no retriever tuning fixes a corpus gap — which is why a miss returns
|
|
140
|
+
`no_match` plus an intake instead of an empty page.
|
|
141
|
+
- **Reported gaps arrive faster than they are triaged.** The intake queue is the honest bottleneck.
|
|
179
142
|
|
|
180
|
-
|
|
181
|
-
|---|---|---|---|---|---|
|
|
182
|
-
| plain (no lesson) | 0.239 | 0.233 | **23.3%** | ≈510 | 82–83% |
|
|
183
|
-
| with_lesson (pasted) | 0.464 | 0.461 | **46.1%** | ≈512 | 76–77% |
|
|
143
|
+
## Benchmark: what it measured, and why it is paused
|
|
184
144
|
|
|
185
|
-
|
|
186
|
-
|
|
145
|
+
One narrow question: **when you hand a model a lesson, how much of that lesson comes back?** The
|
|
146
|
+
metric is `lesson_hit_rate` — the share of the injected lesson's commands reproduced in the answer.
|
|
147
|
+
Read the setup before the number: the scenario in this benchmark is each lesson's own title, the injected
|
|
148
|
+
lesson is *that same lesson*,
|
|
149
|
+
no retrieval call is made, and correctness is not checked. It measures the **recitation** half of RAG:
|
|
150
|
+
necessary for MisakaNet to help, and **not evidence that search finds anything**.
|
|
187
151
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
152
|
+
The run is **paused**. Two independent runs of ≈500 scenarios each on 2026-09-22: **46.1%** with the
|
|
153
|
+
lesson pasted in, **23.3%** without. What remains is the last snapshot plus its dated record —
|
|
154
|
+
[`docs/benchmarks/latest.json`](docs/benchmarks/latest.json).
|
|
191
155
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
`python3 scripts/update_readme_benchmark.py`. Do not hand-edit: a second source of truth is what made the
|
|
195
|
-
previous copy go stale while the paragraph directly above it explained what the metric does and does not mean.
|
|
156
|
+
The table below is generated by [`scripts/update_readme_benchmark.py`](scripts/update_readme_benchmark.py);
|
|
157
|
+
do not hand-edit it.
|
|
196
158
|
|
|
197
159
|
<!-- BEGIN generated: benchmark-trend -->
|
|
198
160
|
|
|
@@ -221,109 +183,58 @@ with_lesson hit rate (per run date)
|
|
|
221
183
|
|
|
222
184
|
<!-- END generated: benchmark-trend -->
|
|
223
185
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
right lesson for a failure you described" is measured nowhere yet. Details:
|
|
227
|
-
[`docs/benchmarks/latest.json`](docs/benchmarks/latest.json) · per-run files in
|
|
228
|
-
[`docs/benchmarks/`](docs/benchmarks/) · metric definition: `METRIC_DEFINITION` in
|
|
229
|
-
[`scripts/benchmark_workers_ai.py`](scripts/benchmark_workers_ai.py)
|
|
230
|
-
|
|
231
|
-
→ [Full changelog](CHANGELOG.md) · [Release notes](https://github.com/Ikalus1988/MisakaNet/releases)
|
|
232
|
-
|
|
233
|
-
**Beware of a single number.** A benchmark is only as good as what it measures, so here is what these mean
|
|
234
|
-
and where this design loses:
|
|
186
|
+
Per-run files: [`docs/benchmarks/`](docs/benchmarks/) · metric definition: `METRIC_DEFINITION` in
|
|
187
|
+
[`scripts/benchmark_workers_ai.py`](scripts/benchmark_workers_ai.py).
|
|
235
188
|
|
|
236
|
-
|
|
237
|
-
|---|---|---|
|
|
238
|
-
| Hit rate | share of the **injected** lesson's commands reproduced in the answer — a recitation check; the scenario is that lesson's own title and no retrieval happens | it is the ceiling on usefulness, not the measure of it: a corpus can be recitable and still unfindable |
|
|
239
|
-
| Gain (with − without) | how much more of that lesson appears when it is pasted in | separates "the model can use a lesson" from "the model guessed the same words" — it says nothing about finding the lesson |
|
|
240
|
-
| Actionable | whether the model produced a usable answer at all (boolean per scenario) | a high hit rate on an answer that is not actionable is noise; this tracks whether the model engages with the problem |
|
|
241
|
-
| Cost / latency | tokens and wall-clock per answer | the whole premise is cheaper than re-debugging, so it has to stay cheap |
|
|
242
|
-
|
|
243
|
-
**Where it loses on purpose:** BM25 matches words, not meaning. A failure described in vocabulary the
|
|
244
|
-
corpus has never seen is a miss, and no amount of tuning in the retriever fixes a corpus gap. That is why a
|
|
245
|
-
miss returns `no_match` plus an intake call rather than an empty result — the honest answer is "we do not
|
|
246
|
-
know this one yet", and it is also the signal that tells maintainers what to write next.
|
|
189
|
+
## Take part
|
|
247
190
|
|
|
248
|
-
|
|
191
|
+
**1. Report a failure the corpus does not have.** Search first, then call `misakanet_submit_intake` —
|
|
192
|
+
no account, no email, no token, a five-line report is enough. It becomes a tracked issue.
|
|
249
193
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
already exists in someone's terminal history, and is invisible to everyone else.
|
|
194
|
+
**2. Reuse a lesson and leave the trace.** A "this helped" vote is recorded as an `E3` hint, not as
|
|
195
|
+
proof. The proof is quieter: your retrieval is counted, anonymously, as one more distinct client.
|
|
253
196
|
|
|
254
|
-
|
|
197
|
+
**What you get back: attribution.** A lesson cites the intake that produced it (`source:`,
|
|
198
|
+
`provenance.issue:`), and the pipeline can emit a receipt naming the lesson and its evidence level.
|
|
255
199
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
runs on an air-gapped box and cannot rot with an embedding model. The cost is recall on paraphrases.
|
|
260
|
-
* **Evidence is graded, not asserted.** E0–E4 lets an agent weigh a community intake differently from a
|
|
261
|
-
production-proven fix. The cost is bookkeeping, and most lessons sit at E0–E2.
|
|
200
|
+
Nothing here is a bounty: this repository pays nothing and promises nothing. Some issues carry
|
|
201
|
+
third-party reward banners added by our own automation; we do not administer them — see
|
|
202
|
+
[Contributing](#contributing).
|
|
262
203
|
|
|
263
204
|
## How to use it
|
|
264
205
|
|
|
265
|
-
|
|
266
|
-
Python ≥ 3.10 for the library and the stdio server. Nothing else.
|
|
267
|
-
|
|
268
|
-
Supported agents — and what "supported" means per group (evidence levels in
|
|
269
|
-
[docs/integrations/status.md](docs/integrations/status.md)):
|
|
270
|
-
|
|
271
|
-
| Group | Agents | What you get |
|
|
272
|
-
|---|---|---|
|
|
273
|
-
| Installer-managed | Claude Code · Codex · Hermes · OpenClaw · codewhale · Cursor · Gemini CLI · Copilot CLI · OpenCode · Kiro | `npx @misaka-net/misakanet-setup` writes each client's own MCP config, a rules block where the client has one, and (Claude Code only) a turn-counting hook — the five JSON-file clients (Cursor, Gemini CLI, Copilot CLI, OpenCode, Kiro) get the MCP entry alone; `--verify` checks whatever was written |
|
|
274
|
-
| MCP by hand | Cursor · Gemini CLI · Windsurf · OpenCode · Copilot · DeepSeek Harness | the endpoint is standard MCP over HTTP; add the URL in that client's own config. Cursor also has a rules-file mode |
|
|
275
|
-
| Anything else that speaks MCP over HTTP | — | the endpoint is public, reads are anonymous and unmetered |
|
|
276
|
-
|
|
277
|
-
Pick one channel — they are independent, and none of them needs an account (the Claude Code row needs a Claude Code version with plugin support):
|
|
206
|
+
Pick one channel; they are independent.
|
|
278
207
|
|
|
279
208
|
| I want… | Command | What it touches |
|
|
280
209
|
|---|---|---|
|
|
281
|
-
| my assistant to search the lessons | `npx @misaka-net/misakanet-setup` | writes the MCP endpoint into each assistant's
|
|
282
|
-
|
|
|
283
|
-
|
|
|
210
|
+
| my assistant to search the lessons | `npx @misaka-net/misakanet-setup` | writes the MCP endpoint into each assistant's config; optionally a rules block and a hook |
|
|
211
|
+
| **Claude Code**, as a plugin | `/plugin marketplace add Ikalus1988/MisakaNet` then `/plugin install misakanet@misakanet` | the hosted MCP tools, no installer, no local process |
|
|
212
|
+
| **DeepSeek Harness** | `dsh plugin --profile web add misakanet` | `mcp__misakanet__*` tools plus the session panel |
|
|
213
|
+
| to call the endpoint myself | the `curl` in [Your first five minutes](#your-first-five-minutes) | nothing |
|
|
284
214
|
| the library in my own code | `pip install misakanet-core` | nothing |
|
|
285
215
|
|
|
286
|
-
**The two-package trap** (
|
|
216
|
+
**The two-package trap** (it cost a real install failure, #1849):
|
|
287
217
|
|
|
288
218
|
| Looks like | Actually is | Use it for |
|
|
289
219
|
|---|---|---|
|
|
290
220
|
| `@misaka-net/misakanet-setup` (npm) | the **installer** — has `bin`, no plugin entry | teaching your assistant to search |
|
|
291
|
-
| `misakanet` (npm) | the **DSH / Codex plugin**
|
|
292
|
-
| this repository (git) | also a **Claude Code plugin marketplace**
|
|
293
|
-
| `misakanet` (PyPI) |
|
|
294
|
-
| `misakanet-core` (PyPI) | the **library** (stdlib-only BM25
|
|
295
|
-
|
|
296
|
-
A marketplace error such as `@misaka-net/misakanet-setup: entry file missing: index.js` means the resolver
|
|
297
|
-
picked the wrong package — the installer deliberately has no `index.js`.
|
|
298
|
-
|
|
299
|
-
**One anonymous read — no account, no token, no browser:**
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
curl -sS https://misakanet.org/mcp \
|
|
303
|
-
-H 'Content-Type: application/json' -H 'Accept: application/json' \
|
|
304
|
-
-H 'MCP-Protocol-Version: 2025-06-18' -H 'Origin: https://misakanet.org' \
|
|
305
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
|
|
306
|
-
"params":{"name":"misakanet_search","arguments":{"query":"database is locked","top":3}}}'
|
|
307
|
-
```
|
|
221
|
+
| `misakanet` (npm) | the **DSH / Codex plugin** | `dsh plugin --profile web add misakanet` |
|
|
222
|
+
| this repository (git) | also a **Claude Code plugin marketplace** | `/plugin marketplace add Ikalus1988/MisakaNet` |
|
|
223
|
+
| `misakanet` (PyPI) | the stdio **MCP server** | `python3 -m misakanet.server` |
|
|
224
|
+
| `misakanet-core` (PyPI) | the **library** (stdlib-only BM25) | `from misakanet.search import search_lessons` |
|
|
308
225
|
|
|
309
|
-
Reads are
|
|
310
|
-
|
|
311
|
-
`misakanet_preflight` and returns a token valid ~30 days
|
|
226
|
+
**Reads are anonymous and unlimited** (a per-address burst window is a speed limit, not a quota).
|
|
227
|
+
**Registration is for writing**: it unlocks `misakanet_write_lesson` and `misakanet_preflight`
|
|
312
228
|
([why](AGENTS.md#33-注册与配额)).
|
|
313
229
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
external-validation bounty asks for).
|
|
317
|
-
|
|
318
|
-
→ [Quickstart](docs/quickstart.md) · [Install guide](https://misakanet.org/install/) ·
|
|
319
|
-
[MCP docs](docs/mcp.md) · [what the installer writes](integrations/agent-autostart/README.md) ·
|
|
320
|
-
[WebMCP setup](docs/cloudflare-worker.md)
|
|
230
|
+
Verify an install with `npx @misaka-net/misakanet-setup --verify`; undo it with `--uninstall`.
|
|
231
|
+
Prerequisites: Node ≥ 18 for the installer, Python ≥ 3.10 for the library and stdio server.
|
|
321
232
|
|
|
322
233
|
### Use it as a GitHub Action
|
|
323
234
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
235
|
+
When a workflow fails, the action searches the lessons and comments the closest match on the pull
|
|
236
|
+
request (optionally reporting the new error). Published on
|
|
237
|
+
[GitHub Marketplace](https://github.com/marketplace/actions/misakanet-intake-bot).
|
|
327
238
|
|
|
328
239
|
```yaml
|
|
329
240
|
on:
|
|
@@ -345,107 +256,61 @@ jobs:
|
|
|
345
256
|
source: ${{ github.repository }}
|
|
346
257
|
```
|
|
347
258
|
|
|
348
|
-
→ [inputs and outputs](docs/agents/external-usage.md)
|
|
259
|
+
→ [inputs and outputs](docs/agents/external-usage.md)
|
|
349
260
|
|
|
350
261
|
## Documentation
|
|
351
262
|
|
|
352
|
-
**Choose your journey** — MisakaNet is useful in different ways depending on what you are trying to do:
|
|
353
|
-
|
|
354
|
-
| I am... | Start with |
|
|
355
|
-
|---|---|
|
|
356
|
-
| 🔴 Debugging a real failure | [Search existing lessons](https://ikalus1988.github.io/MisakaNet/search/) before retrying |
|
|
357
|
-
| 🤖 Building an AI agent / tool | Use lessons as [failure-memory](docs/mcp-quickstart.md) for your workflow |
|
|
358
|
-
| 🧪 Using DeepSeek Harness | `dsh plugin --profile web add misakanet`, then [what it registers](docs/integration/deepseek-harness.md) — skill + `mcp__misakanet__*` tools, no local Python |
|
|
359
|
-
| 🔧 Contributing a fix | Read [CONTRIBUTING.md](CONTRIBUTING.md) for code style + PR checklist, check [related lessons](https://ikalus1988.github.io/MisakaNet/search/), then open a small PR |
|
|
360
|
-
| 📝 Sharing a failure case | Submit a [5-line failure note](https://github.com/Ikalus1988/MisakaNet/issues/new?template=lesson-feedback.yml) — no polished PR required |
|
|
361
|
-
| 📊 Evaluating agent learning | Run the [benchmarks](scripts/retrieval_noisebench.py) and compare reuse behavior |
|
|
362
|
-
| 💬 Reporting friction | [MCP intake](docs/integrations/mcp-remote.md) or [journey report #510](https://github.com/Ikalus1988/MisakaNet/issues/510) |
|
|
363
|
-
| ❓ New to MisakaNet | Read the [FAQ](FAQ.md) for installation, MCP pairing, troubleshooting, and contribution answers |
|
|
364
|
-
|
|
365
|
-
> 👉 **New here?** [Search failure lessons →](https://ikalus1988.github.io/MisakaNet/search/)
|
|
366
|
-
>
|
|
367
|
-
> No GitHub account? Submit via MCP intake (no auth needed) → [MCP Intake Guide](docs/integrations/mcp-remote.md)
|
|
368
|
-
>
|
|
369
|
-
> Understanding the system → [Label system](docs/label-system.md) · [Troubleshooting](docs/troubleshooting.md)
|
|
370
|
-
|
|
371
|
-
**The rest of the map:**
|
|
372
|
-
|
|
373
263
|
| Topic | Where |
|
|
374
264
|
|---|---|
|
|
375
|
-
| Open the network in a browser | <https://misakanet.org/> · <https://ikalus1988.github.io/MisakaNet/search/> |
|
|
376
265
|
| Install, verify, uninstall | [docs/quickstart.md](docs/quickstart.md) · <https://misakanet.org/install/> |
|
|
377
|
-
| MCP: protocol,
|
|
266
|
+
| MCP: protocol, tools, transports | [docs/mcp.md](docs/mcp.md) · [API.md](API.md) |
|
|
378
267
|
| CLI | [docs/cli-reference.md](docs/cli-reference.md) · `python3 search_knowledge.py "…"` |
|
|
379
|
-
| Architecture
|
|
380
|
-
|
|
|
381
|
-
|
|
|
382
|
-
| Troubleshooting
|
|
383
|
-
| Known limitations
|
|
384
|
-
| Benchmarks | [docs/benchmarks/](docs/benchmarks/)
|
|
385
|
-
|
|
|
386
|
-
|
|
|
387
|
-
| AI crawler policy: robots, JSON-LD, WAF rules | [docs/cloudflare-robots-txt.md](docs/cloudflare-robots-txt.md) · [docs/json-ld-schema.md](docs/json-ld-schema.md) · [docs/cloudflare-waf-rules.md](docs/cloudflare-waf-rules.md) |
|
|
388
|
-
| Roadmap | [ROADMAP.md](ROADMAP.md) · [CHANGELOG.md](CHANGELOG.md) |
|
|
268
|
+
| Architecture | [ARCHITECTURE.md](ARCHITECTURE.md) · [docs/CONCEPTS.md](docs/CONCEPTS.md) |
|
|
269
|
+
| Contributing a fix | [CONTRIBUTING.md](CONTRIBUTING.md) · [label system](docs/label-system.md) |
|
|
270
|
+
| Submitting an intake | [docs/mcp-intake-guide.md](docs/mcp-intake-guide.md) · [mcp-remote](docs/integrations/mcp-remote.md) |
|
|
271
|
+
| Troubleshooting | [docs/troubleshooting.md](docs/troubleshooting.md) |
|
|
272
|
+
| Known limitations | [docs/LIMITATIONS.md](docs/LIMITATIONS.md) |
|
|
273
|
+
| Benchmarks | [docs/benchmarks/](docs/benchmarks/) |
|
|
274
|
+
| Roadmap / changelog | [ROADMAP.md](ROADMAP.md) · [CHANGELOG.md](CHANGELOG.md) |
|
|
275
|
+
| Competitors, domains, crawler policy | [competitive](docs/competitive-analysis.md) · [domains](docs/domains/) · [robots](docs/cloudflare-robots-txt.md) |
|
|
389
276
|
|
|
390
277
|
## Contributing
|
|
391
278
|
|
|
392
|
-
> **Zero bounty. Maximum rigor. Merge earns credit.**
|
|
393
|
-
> real-world CI gating.
|
|
394
|
-
>
|
|
395
|
-
> "Zero bounty" is a statement about *this repository*: MisakaNet pays nothing and promises nothing.
|
|
396
|
-
> It is not a statement about the issue you are looking at. Some issues carry an Opire banner
|
|
397
|
-
> advertising a third-party reward, added automatically by our own
|
|
398
|
-
> [`scripts/question_autopilot.py`](scripts/question_autopilot.py) — Opire is not mentioned anywhere
|
|
399
|
-
> in `CONTRIBUTING.md` and we do not administer those payouts. **Verify any reward offer independently
|
|
400
|
-
> before you plan work around it.** The only thing this repository has ever honoured is a merged PR.
|
|
401
|
-
> ([#2903](https://github.com/Ikalus1988/MisakaNet/issues/2903) — the same banner has also attracted
|
|
402
|
-
> an automated account posting identical payout claims every ~97 seconds.)
|
|
403
|
-
|
|
404
|
-
1. Check the checkout works: `python3 scripts/misakanet_cli.py smoke`
|
|
405
|
-
2. Search before writing: `python3 search_knowledge.py "your error here"`
|
|
406
|
-
3. Found nothing? **[Share your failure lesson →](https://github.com/Ikalus1988/MisakaNet/issues/new?template=lesson-feedback.yml)**
|
|
407
|
-
— a five-line note is enough, no polished PR required. Two places say what is missing, and they measure
|
|
408
|
-
different things: the [demand board](workers/README.md#insights-endpoints-issue-591) aggregates anonymous
|
|
409
|
-
*search* misses (`/api/insights/unsolved-map`; measured 2026-09-25 it held **one** signal in 30 days,
|
|
410
|
-
because the intake path does not feed it — [#2224](https://github.com/Ikalus1988/MisakaNet/issues/2224)),
|
|
411
|
-
and the [open intake issues](https://github.com/Ikalus1988/MisakaNet/issues?q=is%3Aissue+is%3Aopen+label%3Aintake)
|
|
412
|
-
are where the real gaps currently arrive.
|
|
413
|
-
|
|
414
|
-
→ [CONTRIBUTING.md](CONTRIBUTING.md) · [good first issues](https://github.com/Ikalus1988/MisakaNet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ·
|
|
415
|
-
[active competitions](https://github.com/Ikalus1988/MisakaNet/labels/status%3Acompetition) ·
|
|
416
|
-
[code of conduct](CODE_OF_CONDUCT.md)
|
|
279
|
+
> **Zero bounty. Maximum rigor. Merge earns credit.**
|
|
417
280
|
|
|
418
|
-
|
|
281
|
+
"Zero bounty" is a statement about *this repository*: MisakaNet pays nothing and promises nothing. It
|
|
282
|
+
is not a statement about the issue you are looking at. Some issues carry an **Opire** banner
|
|
283
|
+
advertising a third-party reward, added automatically by our own
|
|
284
|
+
[`scripts/question_autopilot.py`](scripts/question_autopilot.py) — we do not administer those payouts,
|
|
285
|
+
and Opire is not mentioned in `CONTRIBUTING.md`. **Verify any reward offer independently** before you
|
|
286
|
+
plan work around it. The only thing this repository has ever honoured is a merged PR.
|
|
287
|
+
([#2903](https://github.com/Ikalus1988/MisakaNet/issues/2903))
|
|
419
288
|
|
|
420
|
-
|
|
289
|
+
1. Check the checkout: `python3 scripts/misakanet_cli.py smoke`
|
|
290
|
+
2. Search before writing: `python3 search_knowledge.py "your error here"`
|
|
291
|
+
3. Found nothing? [Share your failure lesson](https://github.com/Ikalus1988/MisakaNet/issues/new?template=lesson-feedback.yml) — five lines is enough
|
|
421
292
|
|
|
422
|
-
|
|
293
|
+
→ [CONTRIBUTING.md](CONTRIBUTING.md) · [good first issues](https://github.com/Ikalus1988/MisakaNet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) · [code of conduct](CODE_OF_CONDUCT.md)
|
|
423
294
|
|
|
424
|
-
|
|
295
|
+
## Security
|
|
425
296
|
|
|
426
|
-
|
|
297
|
+
⚠️ **Sandbox your agent before executing retrieved commands.** Lessons are community-contributed —
|
|
298
|
+
review before running. CI scans all Markdown for dangerous patterns (`rm -rf`, `curl | sh`, backtick
|
|
299
|
+
injection). See [SECURITY.md](SECURITY.md) and [LIMITATIONS.md](docs/LIMITATIONS.md).
|
|
427
300
|
|
|
428
|
-
|
|
301
|
+
## Troubleshooting
|
|
429
302
|
|
|
430
303
|
| Symptom | Where |
|
|
431
304
|
|---|---|
|
|
432
|
-
| DCO
|
|
433
|
-
| Known limitations of the test suite | [docs/known-issues.md](docs/known-issues.md) |
|
|
305
|
+
| DCO · leaked token · pip timeout · `database locked` · Windows/GBK · WSL permission · FANUC codes | [docs/troubleshooting.md](docs/troubleshooting.md) |
|
|
434
306
|
| MCP returns 403/405, or a client shows no tools | [docs/mcp.md](docs/mcp.md) · [FAQ.md](FAQ.md) |
|
|
435
|
-
| Behind a corporate proxy
|
|
307
|
+
| Behind a corporate proxy | [docs/troubleshooting.md](docs/troubleshooting.md#behind-a-corporate-proxy) |
|
|
436
308
|
|
|
437
309
|
## For Agents & Crawlers
|
|
438
310
|
|
|
439
|
-
**Prefer MCP intake for missing or stale lessons; PRs are optional.**
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
`misakanet_submit_intake` at `https://misakanet.org/mcp`. No GitHub account, no email, no Bearer token.
|
|
443
|
-
Never send secrets or raw private logs. Full protocol:
|
|
444
|
-
[docs/mcp-intake-guide.md](docs/mcp-intake-guide.md).
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
*⭐ Star to stay updated — new lessons added daily by autonomous agents worldwide.*
|
|
311
|
+
**Prefer MCP intake for missing or stale lessons; PRs are optional.** Search first; if nothing matches,
|
|
312
|
+
call `misakanet_submit_intake` at `https://misakanet.org/mcp` — no account, no token. Never send
|
|
313
|
+
secrets or raw private logs. Protocol: [docs/mcp-intake-guide.md](docs/mcp-intake-guide.md).
|
|
449
314
|
|
|
450
315
|
## Contributors
|
|
451
316
|
|
|
@@ -453,10 +318,7 @@ Never send secrets or raw private logs. Full protocol:
|
|
|
453
318
|
<img src="docs/assets/contributors.svg" alt="MisakaNet contributors" />
|
|
454
319
|
</a>
|
|
455
320
|
|
|
456
|
-
*Built by the network, for the network. Zero bounties paid — only
|
|
457
|
-
|
|
458
|
-
*Built by the network, for the network. Zero bounties paid — only merge approval and eternal network
|
|
459
|
-
gratitude.* ⚡
|
|
321
|
+
*Built by the network, for the network. Zero bounties paid — only merge approval and eternal network gratitude.* ⚡
|
|
460
322
|
|
|
461
323
|
## License
|
|
462
324
|
|