Update code
This commit is contained in:
162
dev-assistant-mcp/dist/tools/codeWrite.js
vendored
Normal file
162
dev-assistant-mcp/dist/tools/codeWrite.js
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
export const codeWriteTool = {
|
||||
name: "code_write",
|
||||
description: "根据需求描述生成代码编写指引。返回结构化的需求分析、技术方案、代码骨架和最佳实践建议。",
|
||||
inputSchema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
requirement: {
|
||||
type: "string",
|
||||
description: "功能需求描述",
|
||||
},
|
||||
language: {
|
||||
type: "string",
|
||||
description: "编程语言(如 typescript, python, java 等)",
|
||||
},
|
||||
framework: {
|
||||
type: "string",
|
||||
description: "框架(可选,如 react, express, fastapi 等)",
|
||||
},
|
||||
context: {
|
||||
type: "string",
|
||||
description: "额外上下文(可选,如现有代码片段、接口定义等)",
|
||||
},
|
||||
},
|
||||
required: ["requirement", "language"],
|
||||
},
|
||||
};
|
||||
const languageBestPractices = {
|
||||
typescript: [
|
||||
"使用严格类型,避免 any",
|
||||
"用 interface/type 定义数据结构",
|
||||
"async/await 处理异步",
|
||||
"使用 const 优先,必要时 let",
|
||||
"错误处理使用 try-catch + 自定义 Error 类",
|
||||
],
|
||||
javascript: [
|
||||
"使用 const/let,禁用 var",
|
||||
"使用 JSDoc 注释函数签名",
|
||||
"async/await 处理异步",
|
||||
"使用解构赋值简化代码",
|
||||
"模块化:每个文件单一职责",
|
||||
],
|
||||
python: [
|
||||
"遵循 PEP 8 风格规范",
|
||||
"使用 type hints 标注类型",
|
||||
"使用 dataclass/Pydantic 定义数据模型",
|
||||
"用 with 语句管理资源",
|
||||
"异常处理:捕获具体异常而非 Exception",
|
||||
],
|
||||
java: [
|
||||
"遵循 Java 命名约定",
|
||||
"使用 Optional 避免 NullPointerException",
|
||||
"用 Stream API 处理集合",
|
||||
"接口优先于实现",
|
||||
"使用 Lombok 减少样板代码",
|
||||
],
|
||||
};
|
||||
const frameworkTemplates = {
|
||||
react: `// React 组件骨架
|
||||
import React, { useState, useEffect } from 'react';
|
||||
|
||||
interface Props {
|
||||
// TODO: 定义 props
|
||||
}
|
||||
|
||||
export function ComponentName({ }: Props) {
|
||||
const [state, setState] = useState();
|
||||
|
||||
useEffect(() => {
|
||||
// TODO: 副作用逻辑
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
{/* TODO: JSX 结构 */}
|
||||
</div>
|
||||
);
|
||||
}`,
|
||||
express: `// Express 路由骨架
|
||||
import express from 'express';
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
// TODO: 业务逻辑
|
||||
res.json({ success: true, data: {} });
|
||||
} catch (error) {
|
||||
res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;`,
|
||||
fastapi: `# FastAPI 路由骨架
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
class RequestModel(BaseModel):
|
||||
# TODO: 定义请求模型
|
||||
pass
|
||||
|
||||
class ResponseModel(BaseModel):
|
||||
success: bool
|
||||
data: dict = {}
|
||||
|
||||
@router.get("/", response_model=ResponseModel)
|
||||
async def handler():
|
||||
try:
|
||||
# TODO: 业务逻辑
|
||||
return ResponseModel(success=True, data={})
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))`,
|
||||
vue: `<!-- Vue 组件骨架 -->
|
||||
<template>
|
||||
<div>
|
||||
<!-- TODO: 模板结构 -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue';
|
||||
|
||||
// TODO: 定义响应式状态
|
||||
const state = ref();
|
||||
|
||||
onMounted(() => {
|
||||
// TODO: 初始化逻辑
|
||||
});
|
||||
</script>`,
|
||||
};
|
||||
export async function executeCodeWrite(args) {
|
||||
const { requirement, language, framework, context } = args;
|
||||
const practices = languageBestPractices[language.toLowerCase()] || [
|
||||
"遵循语言社区标准",
|
||||
"添加类型标注",
|
||||
"做好错误处理",
|
||||
"保持函数单一职责",
|
||||
];
|
||||
const output = [
|
||||
`# 代码编写指引`,
|
||||
``,
|
||||
`## 需求`,
|
||||
requirement,
|
||||
``,
|
||||
`## 技术规格`,
|
||||
`- **语言**: ${language}`,
|
||||
];
|
||||
if (framework) {
|
||||
output.push(`- **框架**: ${framework}`);
|
||||
}
|
||||
output.push(``, `## ${language} 最佳实践`, ...practices.map((p) => `- ${p}`), ``);
|
||||
if (framework && frameworkTemplates[framework.toLowerCase()]) {
|
||||
output.push(`## 代码骨架模板`, "```" + language, frameworkTemplates[framework.toLowerCase()], "```", ``);
|
||||
}
|
||||
output.push(`## 编写要求`, `1. 代码必须完整可运行,包含所有必要的 import`, `2. 遵循 ${language} 最佳实践和命名规范`, `3. 关键逻辑添加简洁注释`, `4. 包含必要的错误处理和边界检查`, `5. 函数保持单一职责,不超过 50 行`, ``);
|
||||
if (context) {
|
||||
output.push(`## 参考上下文`, "```", context, "```", ``);
|
||||
}
|
||||
output.push(`## 请根据以上指引生成完整代码`);
|
||||
return output.join("\n");
|
||||
}
|
||||
//# sourceMappingURL=codeWrite.js.map
|
||||
Reference in New Issue
Block a user