自然语言编程系统
模块概述
版本: 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 核心组件
| 组件 | 文件 | 行数 | 说明 |
|---|---|---|---|
| SpecTranslator | spec-translator.js | 1,014 | 9步翻译流水线 |
| RequirementParser | requirement-parser.js | 748 | 需求解析+意图分类 |
| ProjectStyleAnalyzer | project-style-analyzer.js | 669 | 6种风格分析 |
| NL Programming IPC | nl-programming-ipc.js | 251 | 10个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 | 导入顺序/路径别名 | @/ 别名, 分组排序 |
COMPONENTS | Vue 组件风格 | Composition API, script setup |
3. 数据模型
3.1 nl_programs
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 翻译ID |
| input_text | TEXT | 原始自然语言输入 |
| intent | TEXT | 分类意图 |
| entities | TEXT(JSON) | 提取的实体 |
| tech_stack | TEXT(JSON) | 技术栈 |
| spec | TEXT(JSON) | 生成的规格 |
| completeness_score | REAL | 完整度评分 (0-1) |
| ambiguities | TEXT(JSON) | 检测到的歧义 |
| status | TEXT | 状态 (draft/complete/refined) |
| created_at | INTEGER | 创建时间 |
| updated_at | INTEGER | 更新时间 |
3.2 nl_program_conventions
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 惯例ID |
| category | TEXT | 类别 (NAMING/ARCHITECTURE/...) |
| pattern | TEXT | 模式描述 |
| examples | TEXT(JSON) | 示例 |
| confidence | REAL | 置信度 (0-1) |
| source_files | TEXT(JSON) | 来源文件 |
| created_at | INTEGER | 创建时间 |
| updated_at | INTEGER | 更新时间 |
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:enhanced | LLM 增强完成 | |
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
