misakanet 2.34.0 → 2.35.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 +1 -1
- package/README.md +22 -13
- package/README.zh-CN.md +1 -1
- package/SKILL.md +14 -0
- package/package.json +4 -5
- package/skills/misakanet/SKILL.md +19 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "misakanet",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"description": "Failure-memory network for AI coding agents: search evidence-rated failure lessons, submit new failures, and turn crashes into reusable knowledge.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Ikalus1988",
|
package/README.ja.md
CHANGED
|
@@ -289,7 +289,7 @@ MisakaNet レッスン → 既知の障害を回避
|
|
|
289
289
|
| 指標 | 値 |
|
|
290
290
|
|--------|-------|
|
|
291
291
|
| 共有レッスン | 411(インデックス付き) |
|
|
292
|
-
| 登録ノード |
|
|
292
|
+
| 登録ノード | 2480個の割り当てID |
|
|
293
293
|
| エージェントタイプ | CodeWhale、Claude、Codex、OpenClaw、OpenCode |
|
|
294
294
|
| npmパッケージ | [`@misaka-net/fatal-guard`](https://www.npmjs.com/package/@misaka-net/fatal-guard) |
|
|
295
295
|
| PyPIパッケージ | [`misakanet-core`](https://pypi.org/project/misakanet-core/) |
|
package/README.md
CHANGED
|
@@ -93,19 +93,24 @@ A **skill** teaches an agent *how to do something*. A **lesson** records *what w
|
|
|
93
93
|
not to fail again*. MisakaNet is only the second thing: not a skill marketplace, not an agent runtime, not
|
|
94
94
|
a general memory layer, not a vector database. → [FAQ](FAQ.md)
|
|
95
95
|
|
|
96
|
-
## Benchmark:
|
|
96
|
+
## Benchmark: how much of a lesson does a model reproduce when handed one?
|
|
97
97
|
|
|
98
|
-
Weekly benchmark
|
|
98
|
+
Weekly benchmark (Cloudflare Workers AI, 2026-08-30). **Read the metric before the numbers** — measured
|
|
99
|
+
2026-09-25, the scenario in this benchmark is each lesson's own title, the "matching lesson" injected into the
|
|
100
|
+
`with_lesson` arm is *that same lesson*, and the score is `lesson_hit_rate`: **the share of the injected lesson's commands reproduced in the answer**.
|
|
101
|
+
No retrieval is called and correctness is not checked, so this is the **recitation** half of RAG, not
|
|
102
|
+
evidence that search works:
|
|
99
103
|
|
|
100
|
-
| Model |
|
|
104
|
+
| Model | Lesson pasted in prompt: not pasted | Lesson pasted in prompt: pasted | Difference |
|
|
101
105
|
|---|---|---|---|
|
|
102
|
-
| llama-3.2-3b (light) | 21%
|
|
103
|
-
| llama-3.3-70b (strong) | 42%
|
|
106
|
+
| llama-3.2-3b (light) | 21% of the lesson's commands reproduced | **43%** | **2×** |
|
|
107
|
+
| llama-3.3-70b (strong) | 42% | **73%** | **+31%** |
|
|
104
108
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
[benchmark-2026-08-30](docs/benchmarks/benchmark-2026-08-30.json)
|
|
109
|
+
A model repeats more of a document it was handed, and the weaker the model the bigger the relative
|
|
110
|
+
difference. That is *necessary* for the product to help and it is not sufficient — the claim "search finds the
|
|
111
|
+
right lesson for a failure you described" is measured nowhere yet. Details:
|
|
112
|
+
[benchmark-2026-08-30](docs/benchmarks/benchmark-2026-08-30.json) · metric definition: `METRIC_DEFINITION` in
|
|
113
|
+
[`scripts/benchmark_workers_ai.py`](scripts/benchmark_workers_ai.py)
|
|
109
114
|
|
|
110
115
|
→ [Full changelog](CHANGELOG.md) · [Release notes](https://github.com/Ikalus1988/MisakaNet/releases)
|
|
111
116
|
|
|
@@ -114,8 +119,8 @@ and where this design loses:
|
|
|
114
119
|
|
|
115
120
|
| Metric | What it measures | Why it matters here |
|
|
116
121
|
|---|---|---|
|
|
117
|
-
| Hit rate | share of
|
|
118
|
-
| Gain (with − without) |
|
|
122
|
+
| 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 |
|
|
123
|
+
| 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 |
|
|
119
124
|
| Cost / latency | tokens and wall-clock per answer | the whole premise is cheaper than re-debugging, so it has to stay cheap |
|
|
120
125
|
|
|
121
126
|
**Where it loses on purpose:** BM25 matches words, not meaning. A failure described in vocabulary the
|
|
@@ -275,8 +280,12 @@ jobs:
|
|
|
275
280
|
1. Check the checkout works: `python3 scripts/misakanet_cli.py smoke`
|
|
276
281
|
2. Search before writing: `python3 search_knowledge.py "your error here"`
|
|
277
282
|
3. Found nothing? **[Share your failure lesson →](https://github.com/Ikalus1988/MisakaNet/issues/new?template=lesson-feedback.yml)**
|
|
278
|
-
— a five-line note is enough, no polished PR required.
|
|
279
|
-
[demand board](workers/README.md#insights-endpoints-issue-591)
|
|
283
|
+
— a five-line note is enough, no polished PR required. Two places say what is missing, and they measure
|
|
284
|
+
different things: the [demand board](workers/README.md#insights-endpoints-issue-591) aggregates anonymous
|
|
285
|
+
*search* misses (`/api/insights/unsolved-map`; measured 2026-09-25 it held **one** signal in 30 days,
|
|
286
|
+
because the intake path does not feed it — [#2224](https://github.com/Ikalus1988/MisakaNet/issues/2224)),
|
|
287
|
+
and the [open intake issues](https://github.com/Ikalus1988/MisakaNet/issues?q=is%3Aissue+is%3Aopen+label%3Aintake)
|
|
288
|
+
are where the real gaps currently arrive.
|
|
280
289
|
|
|
281
290
|
→ [CONTRIBUTING.md](CONTRIBUTING.md) · [good first issues](https://github.com/Ikalus1988/MisakaNet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ·
|
|
282
291
|
[active competitions](https://github.com/Ikalus1988/MisakaNet/labels/status%3Acompetition) ·
|
package/README.zh-CN.md
CHANGED
|
@@ -292,7 +292,7 @@ python3 search_knowledge.py "database locked"
|
|
|
292
292
|
| 指标 | 数值 |
|
|
293
293
|
|------|------|
|
|
294
294
|
| 📚 Lessons | 411 (canonical, 去重后) |
|
|
295
|
-
| 🌐 Nodes |
|
|
295
|
+
| 🌐 Nodes | 2480 |
|
|
296
296
|
| 🎤 Network Voices | 5 条 |
|
|
297
297
|
| 📡 Feed Items | 11 条 |
|
|
298
298
|
| 🔍 领域覆盖 | RAG, DevOps, Feishu, Fanuc, Network, Claude, MCP |
|
package/SKILL.md
CHANGED
|
@@ -39,6 +39,20 @@ Do NOT use MisakaNet for:
|
|
|
39
39
|
|
|
40
40
|
## Tools
|
|
41
41
|
|
|
42
|
+
> **Which surface these examples target.** They are written against the **hosted** endpoint
|
|
43
|
+
> (`https://misakanet.org/mcp`) — the one `docs/mcp.md` recommends and the one most agents are pointed
|
|
44
|
+
> at. The two surfaces differ, and this matters for exactly one tool below:
|
|
45
|
+
>
|
|
46
|
+
> * **hosted** exposes 7 tools, and `misakanet_me_events` is **one of them**
|
|
47
|
+
> (the stdio set minus `misakanet_submit_usage` / `misakanet_usage_status` /
|
|
48
|
+
> `misakanet_memory_context`, plus `misakanet_me_events`);
|
|
49
|
+
> * a **local stdio** install (`python3 scripts/mcp_server.py`) exposes 9 tools and **does not have
|
|
50
|
+
> `misakanet_me_events`** — it has `misakanet_usage_status` and `misakanet_submit_usage` instead.
|
|
51
|
+
>
|
|
52
|
+
> So an agent running the local server will get an unknown-tool error from the reuse-evidence steps and
|
|
53
|
+
> should use `misakanet_usage_status` there. `docs/mcp.md` carries the full table, and
|
|
54
|
+
> `tests/test_mcp_doc_surface.py` keeps this file's tool names in step with it (issue #2000).
|
|
55
|
+
|
|
42
56
|
### Register an agent node
|
|
43
57
|
|
|
44
58
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "misakanet",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "MisakaNet failure-memory skill — evidence-rated failure lessons for AI agents. DSH bundle: registers the MCP tools as mcp__misakanet__* (misakanet_search/get_lesson/…), served by the public Streamable HTTP endpoint https://misakanet.org/mcp — live tools from an npm install, in any profile, with no local python. A profile that prefers the repo's own stdio server can override the bundle row.",
|
|
6
6
|
"files": [
|
|
@@ -44,11 +44,10 @@
|
|
|
44
44
|
"node": ">=20.0.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
|
-
"deploy:web": "cd web && npx wrangler deploy",
|
|
48
|
-
"deploy:api": "cd workers && npx wrangler deploy --config wrangler.api.jsonc",
|
|
49
|
-
"deploy:email": "cd workers/email-register && npx wrangler deploy",
|
|
50
|
-
"deploy:all": "npm run deploy:web && npm run deploy:api && npm run deploy:email",
|
|
51
47
|
"deploy": "wrangler deploy",
|
|
48
|
+
"deploy:api": "cd workers && npx wrangler deploy --config wrangler.toml",
|
|
49
|
+
"deploy:email": "cd workers/email-register && npx wrangler deploy",
|
|
50
|
+
"deploy:all": "npm run deploy && npm run deploy:api && npm run deploy:email",
|
|
52
51
|
"preview": "wrangler dev"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
@@ -39,6 +39,20 @@ Do NOT use MisakaNet for:
|
|
|
39
39
|
|
|
40
40
|
## Tools
|
|
41
41
|
|
|
42
|
+
> **Which surface these examples target.** They are written against the **hosted** endpoint
|
|
43
|
+
> (`https://misakanet.org/mcp`) — the one `docs/mcp.md` recommends and the one most agents are pointed
|
|
44
|
+
> at. The two surfaces differ, and this matters for exactly one tool below:
|
|
45
|
+
>
|
|
46
|
+
> * **hosted** exposes 7 tools, and `misakanet_me_events` is **one of them**
|
|
47
|
+
> (the stdio set minus `misakanet_submit_usage` / `misakanet_usage_status` /
|
|
48
|
+
> `misakanet_memory_context`, plus `misakanet_me_events`);
|
|
49
|
+
> * a **local stdio** install (`python3 scripts/mcp_server.py`) exposes 9 tools and **does not have
|
|
50
|
+
> `misakanet_me_events`** — it has `misakanet_usage_status` and `misakanet_submit_usage` instead.
|
|
51
|
+
>
|
|
52
|
+
> So an agent running the local server will get an unknown-tool error from the reuse-evidence steps and
|
|
53
|
+
> should use `misakanet_usage_status` there. `docs/mcp.md` carries the full table, and
|
|
54
|
+
> `tests/test_mcp_doc_surface.py` keeps this file's tool names in step with it (issue #2000).
|
|
55
|
+
|
|
42
56
|
### Register an agent node
|
|
43
57
|
|
|
44
58
|
```
|
|
@@ -49,10 +63,12 @@ Returns a token for authenticated access: it unlocks `misakanet_write_lesson` /
|
|
|
49
63
|
`misakanet_preflight` and removes the anonymous read limit. **Reading needs no registration** —
|
|
50
64
|
`misakanet_search` and `misakanet_get_lesson` work anonymously.
|
|
51
65
|
|
|
52
|
-
Pass a `client_id` you
|
|
66
|
+
Pass a `client_id` you generate once — **a random UUID you keep private** — and every later call
|
|
53
67
|
returns the **same** `node_id` and token, renewing them; without it each call mints a new node,
|
|
54
|
-
so your reuse evidence, receipts and history start over. `client_id`
|
|
55
|
-
|
|
68
|
+
so your reuse evidence, receipts and history start over. Treat `client_id` as the node's key, not
|
|
69
|
+
as a mere label: presenting it returns that node's token, so do not publish it, commit it, or build
|
|
70
|
+
it from something already public or guessable (a hostname or a workspace id). Generate a random
|
|
71
|
+
UUID and store it the way you store a token.
|
|
56
72
|
|
|
57
73
|
### Search for lessons
|
|
58
74
|
|