Tags
Creators
Details
All versions
2.1.2
Release
Kilacraft-AI 2.1.24 months ago 61
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.5
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
v2.1.2 - New In-Game Query & Diagnostic Commands (usage / history / memory / skills / run / doctor / about), Knowledge-Base Retrieval Refactor & AI Error Handling
⨠New Features
- Corpus Seeding Dictionary: On startup, automatically scans the knowledge base for command names (e.g.
/backāback) and compound identifiers (e.g.mob-farm,ender-dragon) and adds them to the HanLP tokenizer dictionary. No manual dictionary maintenance ā the knowledge base content server owners write is itself the best tokenization reference - Knowledge Base Writing Guide: The official Wiki provides ready-to-use knowledge-base writing templates (Chinese & English) ā 7 writing rules + a complete usable sample; filling in per the template yields the best recall
- BM25 Document Length Auto-Statistics: On startup, automatically computes the actual average length of knowledge-base chunks so BM25 scores long and short docs more fairly. Advanced users may set a fixed
avg_doc_length(default 0 = auto) - In-Game Query & Diagnostic Commands: A set of commands for server owners and players to track AI usage and troubleshoot
/kila usage [player|all] [range]: AI usage stats (conversation turns, skill-call count & success rate, top skills, active players); supports self / specific player / server-wide views/kila history [player] [page]: paginated conversation history/kila memory [player]: view a player's profile (login stats + AI-analyzed 8-dimension profile)/kila skills [page]: list currently available skills
- Force-Execute a Skill:
/kila run <skill> <prompt>skips intent recognition and directly executes the named skill; supports multi-step tasks and gracefully falls back to normal chat if the intent can't be parsed - Configuration Self-Diagnostic:
/kila doctorruns 17 config checks (database / LLM connectivity / Spark / AI capability switches, etc.) to quickly locate misconfiguration; prints a redacted full-config dump to the console - Version & Update Check:
/kila aboutshows current version, latest version, and download URL
š§ Improvements
- Retrieval Filter Refactor (hard threshold ā soft/adaptive threshold): The old
min_relevance_score(single hard threshold 30) is replaced by two-stage filtering- Noise floor: hard cutoff ā anything below is dropped (default 25)
- Relative threshold: soft cutoff ā dropped if below top score Ć ratio (default 0.3)
- Final threshold = max(noise floor, top score Ć relative threshold); mathematically guarantees at least 1 relevant result is returned ā no more "relevant content exists but nothing comes back"
- Tunable: lower both ā more results (weakly related questions also answered); raise both ā stricter (stay silent when unsure)
- BM25 Parameter Tuning: chunk overlap 30 ā 50 chars (longer-doc context more coherent after segmentation); min chunk 25 ā 20 chars (fewer short-but-useful paragraphs wrongly dropped); short-doc protection ā chunks under 50 chars are exempt from the length penalty (old command-style docs were severely under-scored for being too short)
- Embedding Switches to Fusion Mode: No longer replaces BM25 with Embedding alone; instead BM25 + Embedding run in parallel and fuse via RRF (Reciprocal Rank Fusion) by rank. Chunks appearing in both paths rank higher, single-path chunks still participate ā balancing exact keyword match and semantic understanding
- Custom Dictionary Auto-Syncs with Corpus: Hot-reloading the knowledge base re-scans the corpus and rebuilds the tokenizer dictionary; new command names / identifiers take effect immediately
- Project Stability: Fixed several NPE crashes from extreme inputs; hardened defenses against unknown user-authored docs
- AI Error Categorized Hints (highlight of this release): When an AI call fails, players now see an actionable, cause-locating hint (e.g. "The model name may be incorrect. Please check the 'model' setting in llm.yml", "API Key is invalid or lacks permission"); the raw error detail is also logged to console WARN for quick troubleshooting. Covers all AI call scenarios: normal chat, skills, tasks, login greeting, AFK notifications, server broadcast
- AI Timeout Friendly Hint: On response timeout, shows "AI response timed out. Please try again later" instead of exposing technical exception class names to the player
- AFK Task Callback Degradation Hint: When an AFK task's callback config fails to parse, clearly states the task will run in "notify-only" mode (callback action cannot execute), with the raw content logged for troubleshooting
- Code Standard Cleanup: Unified utility-class constructor style, removed fully-qualified class names, consolidated redundant method overloads (internal cleanup, no functional impact)
- Complete English Support: All command output and prompts now fully support Chinese/English bilingual; the English-environment experience is complete
- Permission-Aware Help Menu:
/kila helpshows only the commands the current player has permission to use - Granular Query Permissions: Viewing self / others / server-wide are authorized separately (
kilacraft.query.self,kilacraft.usage.other, etc.)
š Bug Fixes
- Fixed NPE from missing null defenses in
BM25Scorer.countOccurrences/EmbeddingCache.getVector/putVector/getNorm - Fixed players getting stuck on "Thinking..." with no error message when an AI call failed due to config errors (wrong model name / Key / URL, rate limiting, server-side failure, etc.)
- Fixed AI error hints being mistakenly written into conversation history and polluting subsequent chat context (normal chat, login greeting, plugin-command paths)
- Fixed profile analysis writing dirty data and bumping the version number when the AI returned an abnormal structure (added an 8-field whitelist + length cap)
- Fixed occasional no-response hang when the AI secondary analysis failed during skill / task execution
ā ļø Compatibility
Upgrading from v2.1.1
- Stop server, replace JAR, start
- Recommended (for the full retrieval optimization): delete
knowledge.ymland restart to let the plugin regenerate the latest version with the new config entries, then tweak as needed - Works without deleting
knowledge.yml: the oldmin_relevance_scoreis ignored (no longer used), and retrieval filtering auto-applies the default soft thresholds (noise_floor=25, relative_threshold=0.3) - If you previously hand-maintained command names / identifiers in
custom_dictionary.words, consider trimming them after upgrade ā the new corpus-seeding dictionary auto-extracts these from knowledge-base content - Recommended to delete the language config files (
language.yml/language_en.yml): the help-menu format was restructured and many command messages were added this build; keeping the old file leaves new command prompts missing and the help menu outdated. Delete and restart to regenerate the latest version, then re-apply your custom text - Server owners using English (en) mode should delete
i18n/messages_en.yml: player-facing command text was migrated to thelanguage.ymlsystem this build, and the corresponding old keys were removed frommessages_en.yml; deleting and restarting avoids leftover redundancy
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:ZR5R3rKA:dDBLvmqY"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ZR5R3rKA:dDBLvmqY"
}

