Kilacraft-AI
2.2.0The first plugin that gives every server an AI Agent that understands you better the more you use it
2.2.0latestWeb scraping, Chat RecSys, Cache hit analysis (cost-saving)Aug 8, 2026 v2.2.0 - Web Search & Fetch, Chat Suggestions, Command Execution Skill, Player Custom Watches, Cross-Player Subscriptions, LLM Budget Governance & Cache Hit-Rate Analytics
- Web Search (highlight of this release): The in-game AI can now look up real-time information on the internet — version updates, mod recommendations, today's gold price / exchange rates, sports scores, wiki entries — no longer limited by training-data cutoff. 9 search-engine providers built in (China: Zhipu/Baidu Qianfan/Doubao/Qiniu/Alibaba IQS; international: Tavily/Brave/Exa/You.com), auto-selected by server language, most with free tiers. Server owners fill in one API Key inNew Features
web.ymlto start;provider: autoroutes by language. Supports time-range filtering and automatic multi-step search (complex questions split into up to 5 sub-searches). Requireskilacraft.websearchpermission (default: all players, but needs an API Key to function) - Chat Suggestions (highlight of this release): After the AI replies, 1–5 clickable "you may also want to ask" follow-ups are appended below the chat — click to send, no typing, like the "suggested questions" in chat apps. Generated from multi-turn history + available skill summaries with a strict "quality over quantity" rule, doubling as a way to discover what else the AI can do (web search, watches, command execution can all appear). Triggers only in command mode, never in continuous-chat mode, preserving the natural feel. Players can/kila suggestion off(default on, no permission needed); the list wraps intelligently to actual chat-box width - Command Execution Skill (CommandSkill, highlight of this release): Players can ask the AI in natural language to execute server commands — "teleport to spawn", "claim daily reward", "clear my chat history" — translated into the actual command run as that player (gated by server permissions, so the AI never exceeds the player's own). Three major upgrades this version: - On by default for all players: previously requiredcommand_skill.enabled: trueinconfig.ymland was OP-only; the toggle is removed and unified under thekilacraft.command.executepermission node (default: all players). Disable by revoking via your permission plugin (e.g. LuckPerms) - Command knowledge-base document: a newcommands/commands.md(zh + en) serves as the AI's command-recognition knowledge base, shipping with all of Kilacraft-AI's own commands (description/examples/permissions/keywords); server owners can append third-party plugin commands (e.g. Essentialshome/tpa) using the template./kila reloadrefreshes,/kila doctorchecks health - Permission-aware dynamic filtering: the command list the AI sees is filtered by the current player's permissions — commands the player can't use never appear, so the AI only suggests/executes what the player actually can - Player Custom Watches (WatchSkill): Set an "auto-watch" with a single natural-language sentence; when the condition is met or the event fires, the AI proactively notifies you. Replaces the removed AFK-task system with stronger, safer capabilities: - Condition watch: watch a number/state — "watch my iron ingots until 64", "remind me when health drops below 30%". Supports read-only queries of built-in skills (Bukkit stats, CMI, market, vanilla API), auto-detecting value type at runtime - Event watch: watch 11 high-value game events — furnace smelt complete, crop mature, boss kill, nearby entity spawn, player death, teleport, XP level-up, world change, block break, fishing, chat keyword - On trigger it only notifies the AI, never auto-executes (safer than old AFK tasks); brief disconnect (within 5 min) and reconnect auto-restores watches - Watchable scope: the AI only creates watches from the built-in watchable list; items outside it (e.g. internet-only gold price/rates) are declined upfront, and AI mis-picks are rejected at the system boundary, leaving no invalid watch - Requireskilacraft.watchpermission (default: all players). Per-player cap: 3 condition / 5 event / 200 server-wide - Cross-Player Online/Offline Subscription (PlayerWatchSkill): Subscribe to friends' login/logout notifications in natural language — "tell me when Steve logs in", "notify me on both for Alex". Replaces the same-named capability in the old AFK-task system and is stronger: supports multiple targets at once (old system tracked one), has anti-reordering (a logout cancels an un-sent login notification), and delays login notifications by 2 seconds so the player is fully loaded. Subscriptions are in-memory only, auto-clearing when the subscriber goes offline. Requireskilacraft.player_watchpermission (default: all players), per-player cap 5 - Web Fetch: Hand the AI a specific URL and it fetches the page body, reads it, and answers questions about that page — "what does this tutorial page say", "what's the crafting recipe on this mod's wiki". Complementary to Web Search: search gives keywords → page list; fetch gives a URL → reads the body. Zero-config, no API Key, with enterprise-grade security built in (see "Security Hardening" below). Requireskilacraft.webfetchpermission (default: all players) - LLM Budget Governance: A safety net across all LLM entry points. Tracks per-player hourly calls; exceeding the threshold (default 200/hour/player, configurable inllm.yml) triggers a 1-hour circuit break. Binary breaking — player-initiated requests never trip; passive calls (greeting/suggestion/reminder/plugin callbacks) are rejected over budget. Normal use never notices it (200/hour is unreachable); it only kicks in under abnormal conditions — prioritizing player experience and the server owner's wallet. Set to 0 or negative to disable - LLM Cache Hit-Rate Statistics (`/kila cache`): A new command to view LLM prompt-cache hit rate in real time, broken down across 10 AI call types (two-phase intent recognition, secondary analysis, chat, greeting, profile, suggestion, tool notification, diagnostics), each showing request count and hit rate. Auto-compatible with DeepSeek/OpenAI/Anthropic cache fields, no config needed. In-game bar chart + console aligned table. Data is memory-only, resets on restart;/kila cache resetfor manual reset. Requireskilacraft.admin.cachepermission (default: operators only)
- AI truthfully reports its capability limits (highlight of this release): when a player requests an operation beyond the AI's capabilities (e.g. teleporting to arbitrary coordinates, which is unsupported), the AI now truthfully states that the operation cannot be completed, while still delivering what it can do (e.g. looking up and reporting the location coordinates) — no more false successes like replying "teleported" when it only fetched the coordinates. No configuration required; takes effect automatically - Knowledge base organization & reliability (key highlight): ① theImprovements
knowledge/directory supports arbitrary subfolder organization — mixed Chinese/English files, nothing lost when switching languages; ② the AI no longer "stitches together" answers from irrelevant chunks — when there is no relevant content it answers normally and never fabricates details (no more invented "server restarts at 4 AM"), and servers without knowledge files are completely unaffected; ③ paraphrased or tangentially related questions are more likely to be matched - Intent-recognition failure anti-hallucination (highlight of this release): when the skill path is attempted but fails (invalid skill name, JSON parse failure, model-call error, etc.), the system now injects a[FAILURE]marker when falling back to normal conversation, guiding the AI to honestly say "the skill system could not handle this request" instead of fabricating a plausible-sounding reply from its own knowledge. Pure chit-chat, real-world topics, a2.1.3Kilacraft-AI 2.1.3Jul 11, 2026 v2.1.3 - Player Real-Time State Awareness, Greeting System Update Reminders, Version Info Query Skill, Knowledge-Base Retrieval Quality Boost, AI Request Resource Optimization & Security/Stability Hardening
- Built-in CLAUDE.md Reference: Starting with v2.1.3, the repository root includes aNew Features
CLAUDE.mdfile for developers using AI coding tools for secondary development. Designed for Claude Code by default (auto-loaded every session), it covers the project architecture, i18n conventions, code conventions, key design constraints, and modification triggers. For other AI code tools (Cline, Cursor, Copilot Chat, etc.), copy the content into that tool's global rules or context file configuration equivalent - AI Real-Time Player State Awareness: The AI can now automatically sense the player's current state — coordinates, health and hunger, held items and worn armor, current world, weather, and time of day — without the player having to explain repeatedly or trigger extra skill queries. For state-dependent requests like "take me back", "can this mine diamonds?", or "is there a desert nearby?", the AI responds with context-aware answers and advice. Enabled by default for all players — fully automatic, zero-config, and stores no data - AI Login Greeting Proactively Notifies of New Versions: Long-running servers that are never restarted can still learn about plugin updates in time. When an admin with thekilacraft.admin.infopermission logs in, the AI proactively mentions in the greeting whether a new version is available, stating the exact version number and download URL. Each version is announced to each admin only once — no repeated nagging. Network-check failures are handled silently without disrupting the normal greeting - Version Info Query Skill: Admins can now ask the AI about plugin version info in natural language — "is there a new version", "what did the latest version update", "what is the download URL", "what features does v2.1.0 have". The AI fetches version info from Gitee/GitHub in real time and answers with the version number, release date, download URL, and full changelog. Requires thekilacraft.admin.infopermission (default OP)
- More Accurate Knowledge-Base Retrieval (highlight of this release): The BM25 algorithm now includes the IDF (Inverse Document Frequency) weight — rare, specialized keywords that appear in only a few docs rank higher, while ubiquitous generic words like "player" and "command" no longer dilute results. Recall accuracy of the default BM25 mode (used by the vast majority of servers) improves overall - More Reliable Knowledge-Base Hot Reload: After switching the server language or toggling Embedding semantic retrieval,Improvements
/kila reloadnow automatically rebuilds the knowledge-base chunks, statistics, and vector cache — preventing cache/content mismatches that cause retrieval anomalies or slow responses - AI Request Resource Optimization: AI requests still in progress are automatically cancelled when a player goes offline, no longer continuing to drain API quota and server threads - Embedding Cache Concurrency: Concurrent queries from multiple players no longer serialize and wait on each other (more noticeable on large servers with Embedding enabled) - More Precise AI Error Hints: On a 404 error, the hint now distinguishes "model name may be incorrect" from "API URL may be incorrect", so server owners don't troubleshoot in the wrong direction - Faster Security Cache Cleanup on Huge Servers: Cleanup of the recent-active-player cache no longer slows down noticeably as the player count grows - More Traceable AFK Task Callbacks: When a callback can't be delivered because the player is offline, a console log is now recorded to help diagnose "the task didn't seem to fire" - Auditable Command-Type Skill Operations: Command-type skills executed as OP (e.g./tpa <target>) keep their cross-player capability while now also logging an audit trail - More Reliable Server Anomaly Alert Notifications: Server performance anomaly alerts are now delivered to every authorized admin via the login greeting, instead of only the first one who comes online. Each alert is announced to each admin only once — no repeated nagging
- Corrected the comment direction for the retrieval relative threshold (Bug Fixes
relative_threshold) inknowledge.yml— the old comment wrongly labeled "raise = stricter" as "raise = more lenient", which could lead server owners to tune in the wrong direction; default value unchanged - Hardened a defensive path that could cause a no-response hang when the secondary analysis hit an extreme exception before calling the AI - Fixed hot-reloading the output config occasionally causing individual replies to briefly land on the wrong display channel - Hardened the concurrency safety of AFK-task creation
#### Upgrading from v2.1.2 1. Stop server, replace JAR, start; no database migration needed 2. Removed the deprecated console AI-chat entry: Chatting with the AI directly from the console viaCompatibility
/kila <message>(an early debugging feature that became unusable as Agent capabilities grew — the console can't use most skills) has been fully removed. The console still keeps/kila plugins(third-party plugin integration),/kila doctor,/kila reload,/kila knowledge reload, and other management commands; the player side is completely unaffected 3. This is a quality release: no new config entries, no permission changes, no database changes — fully backward compatible 4. If you customized theknowledge.ymlcomments, you may regenerate it to get the corrected threshold notes (comment-only correction, no new config entries)2.1.2Kilacraft-AI 2.1.2Jun 26, 2026 v2.1.2 - New In-Game Query & Diagnostic Commands (usage / history / memory / skills / run / doctor / about), Knowledge-Base Retrieval Refactor & AI Error Handling
- Corpus Seeding Dictionary: On startup, automatically scans the knowledge base for command names (e.g.New Features
/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 fixedavg_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
- Retrieval Filter Refactor (hard threshold → soft/adaptive threshold): The oldImprovements
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.)
- Fixed NPE from missing null defenses inBug Fixes
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
#### Upgrading from v2.1.1 1. Stop server, replace JAR, start 2. Recommended (for the full retrieval optimization): deleteCompatibility
knowledge.ymland restart to let the plugin regenerate the latest version with the new config entries, then tweak as needed 3. Works without deletingknowledge.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) 4. If you previously hand-maintained command names / identifiers incustom_dictionary.words, consider trimming them after upgrade — the new corpus-seeding dictionary auto-extracts these from knowledge-base content 5. 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 6. 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 redundancy2.1.1Kilacraft-AI 2.1.1Jun 18, 2026 v2.1.1 - Two-Phase Intent Recognition Architecture, Skill SPI Structured Response (needInfo Secondary Confirmation), Prompt System Restructuring, LLM Thinking Mode Governance
- Two-Phase Intent Recognition Architecture (Core of this release): Splits the original "single full skill list to LLM" into two phases, significantly reducing Token consumption - Phase 1 (Coarse Selection): Sends only one line ofNew Features
name + descriptionper skill; LLM determines which skill categories are needed; pure small talk returnsnulldirectly, skipping Phase 2 for normal AI conversation - Phase 2 (Precise Selection): Sends full details (actions + hints) only for skills selected in Phase 1, completing action selection and parameter extraction; validatesskill_nameagainst whitelist, invalid names rejected - Quantified benefits: - Pre-refactor baseline (single-phase, per recognition): main rules ~26K + all skills full ~80K (incl. BukkitAPI 77 actions ~38K) ≈ 106K chars - Pure small talk: only Phase 1 (returnsnull, no Phase 2) ≈ 8K chars, ↓ ~92% vs baseline - Normal skill (1 built-in skill hit, median full size ~3.1K): Phase 1 + Phase 2 ≈ 38K chars, ↓ ~65% - Complex skill (hit incl. BukkitAPI 77 actions): Phase 1 + Phase 2 ≈ 73K chars, ↓ ~32% - Token conversion (Chinese-mixed content ~0.6 token/char): baseline ≈ 64K → three scenarios ≈ 4.8K / 22.6K / 43.5K - Response speed: two-phase adds one ultra-lightweight Phase 1 call, but each recognition no longer carries the full skill list; net latency depends on model and network - Skill SPI Structured Response Architecture (new `needInfo` secondary confirmation): Skill response semantics upgraded from "message-string prefixes" to typed status - New `SkillResult.needInfo(message)` factory: the official contract for third-party Skills to implement "needs info / secondary confirmation" (missing-param prompts, large-transfer confirmation, etc.); the framework emits a[NEED_INFO]marker and intent recognition drives the confirmation flow -SkillResultadds a typedSkillStatusenum (SUCCESS/FAILURE/NEED_INFO) +getStatus(); a new normalization layerSkillResultFormatteruniformly tags output to the LLM as[SUCCESS]/[FAILURE]/[NEED_INFO]— Skills write plain text, eliminating the inconsistency and double-tagging caused by hand-written prefixes - SPI Jar adds theSkillStatusclass (6th class) - Intent Recognition Prompt System Restructuring (Chinese/English synced): Added "Three Inviolable Rules" top-priority rule (default to multi-step when uncertain); single-intent/multi-step decision refactored to three-condition check (required param provided by user + completable in one action + no dependency on other actions' return values); arithmetic placeholders unified foramount/quantity/price/threshold; parameter missing enforced "query-then-act" (null required params prohibited); Phase 1 coarse-selection positioning strengthened (favor recall over precision) - LLM Thinking Mode Governance: Normal conversation path auto-disables thinking for models with thinking on by default (MiMo, DeepSeek V4+, GLM 4.5+, Kimi K2+, Qwen3, Grok 4, Doubao thinking, MiniMax-M3, etc.); admin reasoning path injects enable params per model family; adapted OpenAI o-series / Doubao thinkingmax_completion_tokens. Resolves thinking tokens sharingmax_tokensbudget with output tokens causing empty output in MC scenarios (small quota) - Placeholder Arithmetic Evaluation Utility (ArithmeticUtil): Evaluation logic extracted to a public utility class; application scope expanded from multi-step task scalar params (amount/quantity/price) to CUSTOM taskthreshold, supporting relative thresholds like "5 below current health" ({step_0.health}-5). Single binary operation only (+ - * /), pure regex, no injection risk - JSON Auto-Repair Utility (JsonSafeGetUtil): Three-phase repair (filter excess closing → complete missing closing → remove trailing commas), abandons on cross-nesting, unified replacement of multiple duplicate implementations - Startup Version Update Detection: Async GitHub latest release check, colored console box notification on new version, silent on failure
- Diagnostic Model Fallback Mechanism: WhenImprovements
admin.ymlhas no reasoning model configured, auto-falls back tollm.ymlbase chat model (reuses url/key/model only, max_tokens/timeout still use diagnostic-specific values to avoid report truncation), lowering the barrier for health monitoring - Health Monitoring Unavailable Layered Diagnostics: Checks prerequisites one by one (model / guardian switch / Spark installed), gives precise hints; diagnostic report header adds a "Diagnostic Model" row marking the actual generation model - DB History Load Count Tuning:loadFromDBlimit changed frommaxHistory×2tomaxHistory(default 20), reducing redundant loading - AFK Task String Condition Value Display Optimization:EvaluationResultaddsactualValueStr; string conditions (e.g., block types) display real values instead of 0/1 placeholders - LLM Empty Response Friendly Hint: Returns "AI temporarily unavailable" to the player when streaming response is empty instead of an empty message (also logs SSE chunk count and recent raw data for troubleshooting) - JSON Scenarios Disable `max_tokens`: Intent recognition, profile analysis, etc. no longer setmax_tokens, preventing complex JSON truncation; GenericBukkitAPI description enhanced to improve Phase 1 classification accuracy - Concurrency & Thread Safety:ConversationManagerhistory queue upgraded toConcurrentLinkedDeque+ auto trim (MAX_HISTORY_SIZE=100);AFKTaskManageratomic registration prevents overflow;ProfileManager.flushAllProfilessingle-connection batch update prevents cascade failure - Code Cleanup & Observability: LLMProvider interface simplified, ThinkingModelCapable upgraded to functional interface; SkillIntentRecognizer exception catching with full stack trace; GreetingPromptBuilder event summary merge eliminates ~140 lines of duplication; unified history access; cleaned up redundant i18n wrappers and translation dead keys - Configuration Hot-Reload Hardening:PersonalitiesConfigManagerswitched to snapshot replacement pattern,LLMConfigManagerfields fullyvolatile- Embedding Retrieval Optimization: chunk vector norm precomputed and cached, cosine similarity computation reduced by 2/3 - `reconcileOnlineProfiles` Single-Connection Batch: aligned withflushAllProfilespattern - Profile Analysis Prompt Temporal Optimization (Chinese/English synced): No longer extracts volatile transient data like balance, coordinates, and inventory counts; retains only long-term stable traits to avoid stale wrong info lingering in the profile; existing profiles are auto-cleaned on the next analysis - Built-in Skills fully migrated to structured output: MarketActionSkill / CMISkill / MarketQuerySkill / CommandSkill stripped hand-written[FAILURE]/[NEED_INFO]prefixes (~80 sites), uniformly tagged by the framework normalization layer;TaskExecutormulti-step internal skip status switched to a typed enum, removing the old Chinese-prefix sniffing (fixes a latent classification mismatch under English locale) - Secondary confirmation & prompt governance (Chinese/English synced): intent recognition prompts add a "confirmation-flow" rule (reads the concrete value from history when the player confirms a prior action);llm.ymlsystem prompt uniformly documents marker semantics;messages_en.ymlstrips marker prefixes embedded in keys/values and fixes a duplicate key;Skill-SPI-Integration-Guide.md(zh+en) fully rewritten
- FixedBug Fixes
BM25Scorer.countOccurrencesinfinite loop on empty keyword causingmvn testto hang forever - FixedKnowledgeRetriever.splitByFixedSizeo2.0.2Kilacraft-AI 2.0.2May 14, 2026 v2.0.2 - Group Server Data Isolation, Skill Permission Pre-Filter, Incremental Profile Analysis, Profile Historical Snapshots, Placeholder Arithmetic, JSON Auto-Repair
- Incremental Profile Analysis: Profile analysis upgraded from "generate fresh each time" to "old profile + new conversations fusion update", long-term player traits are not overridden by short-term fluctuations - Prompts support Chinese/English bilingual configuration (first analysis / incremental analysis configured separately), supports hot-reload - Profile Historical Snapshots: NewNew Features
kca_profile_snapshottable, automatically saves a profile snapshot after each analysis, supports tracing any version's profile content and analysis time range, permanently retained - Group Server Data Isolation: Supports BungeeCord/Velocity cross-server data sharing and isolation -database.ymladdsgroup.server_idconfig, requires deleting old config file to regenerate - Conversation history, server events, skill audit logs isolated byserver_id; player profiles & social relations are inherently cross-server shared (noserver_idfield, not configurable) - Schema upgraded to v2, auto-createsserver_idindexes (H2 / MySQL compatible) - Supports group config hot-reload - Skill Permission Pre-Filter: Dynamically filters available skills by player permissions during intent recognition; unauthorized skills excluded from LLM candidates -Skillinterface addsgetRequiredPermission(), all built-in Skills implement permission declaration -PluginPermissionEnumadds 8 Skill-level permission enums - Placeholder Arithmetic Expressions: Multi-step tasks support{step_x.field + 10}style arithmetic - LLM JSON Auto-Repair: Auto-completes missing closing braces in AFK task callback JSON
- Fixed API_KEY unconfigured prompt pointing to wrong config file (Bug Fixes
config.yml→llm.yml) - FixedgetBoolean()silently returning default for"shared"/"isolated"string values (Critical) - FixedDatabaseManager.reload()not updatingcurrentConfigon hot-reload - Fixed enchanted golden apple event name exceeding length limit - Fixed SQL syntax incompatibility in expired conversation/event/audit log cleanup using derived table syntax - FixedProfileManagernot rebuilding DAO on hot-reload, causingtable_prefixchanges to not take effect - Fixedupdate()overwriting profile analysis fields with cached stale values:profile_data/profile_analyzed_atnow exclusively written byupdateProfileData(), runtime state updates no longer overwrite AI analysis results - Fixed/ai clearnot preventing DB history reload on next conversation: introduced one-timeclearedmarker to skip DB loading inloadHistoryIfNeeded- Fixed AI greeting writing to memory history causingloadHistoryIfNeededto skip DB load: empty check now excludes assistant-only history - Fixed AI request errors being silently swallowed without console output - Unified AI call timeout settings, fixed profile analysis timeout inconsistency with other AI calls
- Distributed scheduled task race safety: watermark markers +Improvements
SELECT FOR UPDATErow locks for distributed mutual exclusion -database.ymlgroup config section moved up + unified comment style - RemovedDataCleanupService.serverIddead code - Improved key field length documentation comments - Removed unused parameter from social relation interaction type enum - ConditionPlan operator descriptions migrated toI18nService.tr()system - Profile injection extended to all player-facing LLM output paths (secondary analysis, stage notifications, broadcast) with unifiedProfileManager.injectProfileSummary()API - Player profile dimensions expanded from 5 to 8 (added interests/boundaries/communication/spatial/facts), profile injection wording changed to "reference context" to avoid interfering with AI conversation judgment, incremental analysis auto-migrates legacy fields - Incremental profile analysis now filters outversion/analyzed_atmetadata fields when injecting old profile, preventing LLM misinterpretation - SPI integration guide, database config guide, and player profile & social relations system guide updated in both Chinese and English (corrected table field descriptions to match actual DDL, added incremental analysis workflow and snapshot mechanism) - Intent recognition prompt global optimization: strengthened skill semantic matching standard, clarified "data retrieved could help answer" ≠ "skill matches user intent", constrained question decomposition to user's explicitly stated information needs - BukkitStatsSkill prompt narrowed: limited to Minecraft vanilla statistics only, prohibited guessing or fabricating enum names - CommandSkill prompt optimization: clarified matching boundary between "executable action" and "information query", removed examples unsuitable for survival players - LLM secondary analysis prompt enhanced with boundary constraints, reducing hallucination and unreasonable inference - Third-party Skill registration adds compatibility pre-check mechanism, registration failure does not affect main process
#### Upgrading from v2.0.1 1. Stop server, replace JAR, start — defaults to standalone mode, no config changes needed 2. Database Schema auto-upgrades to v2 (addsCompatibility
profile_snapshottable + 3server_idindexes), no manual migration needed 3. All new config entries have code-level default values — the plugin works correctly even without deleting any config files 4. Recommended (to get the full v2.0.2 prompt optimization effects): delete the following config files and restart the server to let the plugin regenerate the latest versions: -intent_prompts.yml/intent_prompts_en.yml(intent recognition prompts strengthened with semantic matching standards) -skills/bukkit/BukkitStatsSkill.yml/BukkitStatsSkill_en.yml(narrowed stats query matching scope) -skills/command/CommandSkill.yml/CommandSkill_en.yml(optimized command matching boundary) -llm.yml(strengthened prohibition on exposing statistics, old version has similar rules but weaker wording, optional) -database.yml(new group server config section + incremental profile prompts + profile dimensions upgraded to 8 + profile timeout adjustment, can manually add or delete to regenerate) 5. For group server mode, addgroup.server_idconfig todatabase.yml(leave empty for single-server) 6. v2.0.2 addsprofile.incremental_system_prompt/incremental_system_prompt_enconfig entries (incremental analysis prompt when existing profile is present), leave empty to use built-in defaults #### Upgrading from v2.0.0 1. Follow the "Upgrading from v2.0.1" steps above first 2. v2.0.1 added configurable profile analysis prompts (profile.analysis_system_promptetc. indatabase.yml), deletedatabase.ymlto regenerate if you want to customize prompts 3. If using English mode (language: en), agreeting_en.ymlEnglish greeting config file will be auto-generated on first startup #### Upgrading from versions before v2.0.0 1. You must read the v2.0.0 compatibility section first — that version introduced database persistence, config architecture refactoring, and other major changes 2. Upgrade steps: - Stop server and backup the entireplugins/Kilacraft-AI/directory - ReplaceKilacraft-AI.jarwith the new version - On first startup, the plugin will auto-create new config files and database tables (Schema auto-upgrades to v2); old config files will not be deleted - Follow log prompts to manually migrate custom settings from the oldconfig.ymlto new config files (llm:→llm.yml,agent:→llm.yml,output:→output.yml,knowledge:→knowledge.yml) - If using MySQL, create the database in advance and configuredatabase.yml- Strongly recommended to deleteintent_prompts.yml/ `int
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta