bazi_analyze
Analyze Chinese Bazi birth charts to provide insights on personality, career, wealth, relationships, and health using traditional metaphysics principles.
Instructions
分析八字命盘
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chart | Yes | 八字命盘数据 | |
| analysis_type | Yes | 分析类型 | |
| detail_level | No | 分析详细程度 |
Implementation Reference
- src/engines/bazi-engine.js:118-169 (handler)Core handler function executing the bazi_analyze tool logic. Takes chart and analysis_type, dispatches to specific analyzers like personality, career, etc., and compiles results with strengths, challenges, and recommendations.async analyzeChart({ chart, analysis_type, focus_areas = [], detail_level = 'standard' }) { try { this.logger.info('开始分析八字', { analysis_type, focus_areas, detail_level }); let analysis = {}; // 支持数组类型的analysis_type const types = Array.isArray(analysis_type) ? analysis_type : [analysis_type]; for (const type of types) { switch (type) { case 'personality': analysis.personality = await this.analyzePersonality(chart, detail_level); break; case 'career': analysis.career = await this.analyzeCareer(chart, detail_level); break; case 'wealth': analysis.wealth = await this.analyzeWealth(chart, detail_level); break; case 'relationship': analysis.relationship = await this.analyzeRelationship(chart, detail_level); break; case 'health': analysis.health = await this.analyzeHealth(chart, detail_level); break; case 'comprehensive': analysis.comprehensive = await this.analyzeComprehensive(chart, focus_areas, detail_level); break; default: throw new Error(`不支持的分析类型: ${type}`); } } const result = { timestamp: new Date().toISOString(), analysis_type: analysis_type, focus_areas: focus_areas, detail_level: detail_level, analysis: analysis, strengths: this.identifyStrengths(chart, analysis), challenges: this.identifyChallenges(chart, analysis), recommendations: this.generateRecommendations(chart, analysis, analysis_type) }; this.logger.info('八字分析完成'); return result; } catch (error) { this.logger.error('八字分析失败', { error: error.message }); throw error; } }
- src/index.js:427-429 (registration)Tool dispatch/registration in the main switch statement for handling CallToolRequest for 'bazi_analyze', delegating to BaziEngine.analyzeChart.case 'bazi_analyze': result = await baziEngine.analyzeChart(args); break;
- src/utils/validator.js:162-170 (schema)Joi schema for validating input parameters of bazi_analyze tool, used in validateToolInput.function createBaziAnalyzeSchema() { return Joi.object({ chart: Joi.object().required(), analysis_type: Joi.array().items( Joi.string().valid('personality', 'career', 'wealth', 'relationship', 'health') ).single().default(['personality']), detail_level: Joi.string().valid('basic', 'standard', 'detailed').default('standard') }); }
- src/index.js:193-219 (registration)Tool registration in ListToolsRequest handler: defines name, description, and inputSchema for 'bazi_analyze' advertised to MCP clients.{ name: 'bazi_analyze', description: '分析八字命盘', inputSchema: { type: 'object', properties: { chart: { type: 'object', description: '八字命盘数据' }, analysis_type: { type: 'array', items: { type: 'string', enum: ['personality', 'career', 'wealth', 'relationship', 'health'] }, description: '分析类型' }, detail_level: { type: 'string', enum: ['brief', 'standard', 'detailed'], description: '分析详细程度' } }, required: ['chart', 'analysis_type'] } },
- src/engines/bazi-engine.js:420-432 (helper)Example helper method analyzePersonality called by main handler (one of several sub-analyzers). Full method spans lines 420-432.async analyzePersonality(chart, detail_level = 'standard') { const { four_pillars, five_elements, ten_gods } = chart; return { core_traits: this.analyzeCoreTraits(four_pillars, five_elements), behavioral_patterns: this.analyzeBehavioralPatterns(ten_gods), emotional_characteristics: this.analyzeEmotionalCharacteristics(five_elements), social_tendencies: this.analyzeSocialTendencies(four_pillars), strengths: this.identifyPersonalityStrengths(chart), weaknesses: this.identifyPersonalityWeaknesses(chart), development_suggestions: this.generatePersonalityDevelopmentSuggestions(chart) }; }