Skip to content

自然语言编程系统

模块概述

版本: v3.1.0 状态: ✅ 已实现 IPC处理器: 10个 最后更新: 2026-03-05

自然语言到代码的翻译系统。支持 9 步翻译流水线、9 种意图分类、6 种代码风格分析和项目惯例学习,结合知识图谱上下文和本能记忆模式生成高质量代码规格。

核心特性

  • 9 步翻译流水线: 意图→实体→技术栈→KG上下文→本能→歧义→规格→完整度→LLM增强
  • 9 种意图分类: CREATE_COMPONENT / ADD_FEATURE / FIX_BUG 等
  • 6 种风格分析: 命名/架构/测试/风格/导入/组件
  • 知识图谱集成: 自动从 Code Knowledge Graph 获取上下文
  • 本能记忆: 从 Instinct Manager 获取项目惯例
  • 规格验证: 完整度评分 + 歧义检测

1. 架构设计

1.1 整体架构图

┌──────────────────────────────────────────────────────────────────┐
│                        前端 (Vue3)                                │
├──────────────────────────────────────────────────────────────────┤
│                      自然语言编程界面                               │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────────┐   │
│  │ NL输入    │ │ 意图预览  │ │ 规格编辑  │ │ 代码生成          │   │
│  └──────────┘ └──────────┘ └──────────┘ └───────────────────┘   │
└──────────────────────────────────────────────────────────────────┘
                              ↕ IPC (10个通道, nl-prog: 前缀)
┌──────────────────────────────────────────────────────────────────┐
│                        主进程 (Electron)                          │
├──────────────────────────────────────────────────────────────────┤
│                  nl-programming-ipc.js (251行)                    │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │         SpecTranslator (1,014行, extends EventEmitter)      │  │
│  │  ┌──────────────────────────────────────────────────────┐  │  │
│  │  │  9-Step Translation Pipeline                         │  │  │
│  │  │  1. classifyIntent  → 意图分类                       │  │  │
│  │  │  2. extractEntities → 实体提取                       │  │  │
│  │  │  3. detectTechStack → 技术栈检测                     │  │  │
│  │  │  4. getCKGContext   → 知识图谱上下文                  │  │  │
│  │  │  5. getInstincts    → 本能模式                       │  │  │
│  │  │  6. detectAmbiguity → 歧义检测                       │  │  │
│  │  │  7. buildSpec       → 构建规格                       │  │  │
│  │  │  8. scoreCompleteness → 完整度评分                   │  │  │
│  │  │  9. llmEnhance      → LLM 增强                      │  │  │
│  │  └──────────────────────────────────────────────────────┘  │  │
│  └────────────────────────────────────────────────────────────┘  │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │  RequirementParser (748行)    │ ProjectStyleAnalyzer (669行)│  │
│  │  需求解析 + 实体提取          │  6 种风格分析              │  │
│  │  9 种意图分类                 │  惯例学习                  │  │
│  └────────────────────────────────────────────────────────────┘  │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │                    SQLite Database (2 tables)               │  │
│  └────────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────────┘

1.2 翻译流水线

自然语言输入: "给用户个人页面添加一个头像上传功能"

Step 1: classifyIntent()
    → intent: ADD_FEATURE

Step 2: extractEntities()
    → entities: [用户个人页面, 头像上传]

Step 3: detectTechStack()
    → techStack: { framework: 'vue', language: 'typescript' }

Step 4: getCKGContext()
    → context: { relatedModules: [...], dependencies: [...] }

Step 5: getInstincts()
    → patterns: { fileNaming: 'kebab-case', testFramework: 'vitest' }

Step 6: detectAmbiguity()
    → ambiguities: ['图片格式限制?', '最大文件大小?']

Step 7: buildSpec()
    → spec: { intent, entities, techStack, context, patterns }

Step 8: scoreCompleteness()
    → completenessScore: 0.75

Step 9: llmEnhance()
    → enhancedSpec: { ...spec, suggestions: [...] }

1.3 核心组件

组件文件行数说明
SpecTranslatorspec-translator.js1,0149步翻译流水线
RequirementParserrequirement-parser.js748需求解析+意图分类
ProjectStyleAnalyzerproject-style-analyzer.js6696种风格分析
NL Programming IPCnl-programming-ipc.js25110个IPC处理器

2. 核心模块

2.1 SpecTranslator

javascript
class SpecTranslator extends EventEmitter {
  async initialize(deps)              // 初始化 (不调用db.prepare)

  // 翻译
  async translate(naturalLanguage, options?) // 完整翻译流水线
  async translateToSpec(input)         // 翻译为规格
  async refineSpec(spec, feedback)     // 根据反馈精炼

  // 验证
  async validateSpec(spec)             // 验证规格
  // 返回: { valid, errors, warnings, completeness, suggestions }

  // 历史
  async getTranslationHistory(options?) // 翻译历史
  async getTranslation(translationId)  // 获取翻译

  // 配置
  updateConfig(config)                 // 更新配置
}

2.2 意图分类 (9种)

意图说明示例
CREATE_COMPONENT创建新组件"创建一个用户卡片组件"
ADD_FEATURE添加功能"给列表页添加搜索功能"
FIX_BUG修复Bug"修复登录页面的闪烁问题"
REFACTOR重构代码"重构用户模块为组合式API"
ADD_API添加API"新增获取用户列表的接口"
ADD_TEST添加测试"为用户服务写单元测试"
UPDATE_STYLE更新样式"把导航栏改为深色主题"
CONFIGURE配置修改"配置ESLint规则"
GENERAL通用其他无法分类的请求

2.3 RequirementParser

javascript
class RequirementParser extends EventEmitter {
  async initialize(deps)

  // 解析
  async parse(text)                    // 解析需求文本
  async classifyIntent(text)           // 分类意图
  async extractEntities(text)          // 提取实体
  async detectTechStack(text)          // 检测技术栈

  // 验证
  async validateSpec(spec)             // 验证规格
  // 返回: { valid, issues, completenessScore }
}

2.4 ProjectStyleAnalyzer

javascript
class ProjectStyleAnalyzer extends EventEmitter {
  async initialize(deps)

  // 分析
  async analyze(projectPath?)          // 分析项目风格
  async getConventions()               // 获取已学习的惯例
  async learnFromFile(filePath)        // 从文件学习
  async learnFromDirectory(dirPath)    // 从目录学习

  // 风格类别
  // NAMING:      命名约定 (camelCase/PascalCase/kebab-case)
  // ARCHITECTURE: 架构模式 (组件结构/目录结构)
  // TESTING:      测试模式 (框架/命名/组织)
  // STYLE:        代码风格 (缩进/引号/分号)
  // IMPORTS:      导入模式 (路径别名/排序)
  // COMPONENTS:   组件模式 (组合式/选项式/props风格)
}

风格分析类别 (6种):

类别分析内容输出
NAMING变量/函数/文件命名camelCase, PascalCase, kebab-case
ARCHITECTURE目录结构/模块划分组件目录, 服务目录
TESTING测试框架/测试风格vitest, jest, 命名约定
STYLE缩进/引号/分号2空格, 单引号, 无分号
IMPORTS导入顺序/路径别名@/ 别名, 分组排序
COMPONENTSVue 组件风格Composition API, script setup

3. 数据模型

3.1 nl_programs

字段类型说明
idTEXT PK翻译ID
input_textTEXT原始自然语言输入
intentTEXT分类意图
entitiesTEXT(JSON)提取的实体
tech_stackTEXT(JSON)技术栈
specTEXT(JSON)生成的规格
completeness_scoreREAL完整度评分 (0-1)
ambiguitiesTEXT(JSON)检测到的歧义
statusTEXT状态 (draft/complete/refined)
created_atINTEGER创建时间
updated_atINTEGER更新时间

3.2 nl_program_conventions

字段类型说明
idTEXT PK惯例ID
categoryTEXT类别 (NAMING/ARCHITECTURE/...)
patternTEXT模式描述
examplesTEXT(JSON)示例
confidenceREAL置信度 (0-1)
source_filesTEXT(JSON)来源文件
created_atINTEGER创建时间
updated_atINTEGER更新时间

4. IPC接口 (10个)

4.1 翻译 (3个)

通道说明参数
nl-prog:translate翻译自然语言text, options?
nl-prog:refine精炼规格spec, feedback
nl-prog:validate验证规格spec

4.2 需求解析 (3个)

通道说明参数
nl-prog:parse-requirement解析需求text
nl-prog:classify-intent分类意图text
nl-prog:extract-entities提取实体text

4.3 风格分析 (2个)

通道说明参数
nl-prog:analyze-style分析项目风格projectPath?
nl-prog:get-conventions获取惯例-

4.4 历史/配置 (2个)

通道说明参数
nl-prog:get-history翻译历史options?
nl-prog:get-translation获取翻译translationId

5. 事件

事件负载说明
intent:classified意图分类完成
entities:extracted实体提取完成
spec:built规格构建完成
spec:enhancedLLM 增强完成
ambiguity:detected检测到歧义
style:analyzed风格分析完成

6. 文件结构

desktop-app-vue/src/main/ai-engine/cowork/
├── spec-translator.js             # 9步翻译流水线 (1,014行)
├── requirement-parser.js          # 需求解析+意图分类 (748行)
├── project-style-analyzer.js      # 6种风格分析 (669行)
└── nl-programming-ipc.js          # 10个IPC处理器 (251行)

7. 相关文档


文档版本: 1.0 最后更新: 2026-03-05

基于 MIT 许可发布