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 (
{/* TODO: JSX 结构 */}
); }`, 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: ` `, }; 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