如何使用Trae将Java项目转写到Go项目中呢?

背景:

  1. 接了个活要把现在的Java项目中一部分接口转到Go项目中实现。
  2. 公司只允许使用Trae
  3. 如何跨工作区或者说跨项目,让Trae逐个翻译为Go
  4. 大部分的DAO、Service层代码在Go中都是现成的
  5. Go是微服务的,所有一部分Java代码可能要写到多个服务中(这个可以我手动完成)
    问题:
  6. Trae如何在索引多个不同项目的代码,不能简单的理解为读取,因为还要对代码有“理解”才可以
  7. 我目前只能使用MCP让Trae逐个读取Java文件,很慢,因为Trae看不到函数的调用链

不知道各位有没有什么方法能够解决这个问题呀?

很麻烦,也很容易出错。
大概步骤就是先他把接口逻辑整理成文档,然后写一个测试用例,然后根据文档在写到go项目中,在go项目中运行测试用例

:tieba_025: 你这个要求太难了,还不如直接重写得了。

如果原项目的业务层代码量超出了单次会话上下文就有点麻烦,需要你写个系统架构文档来约束,如果没超出,你就要求ai模型完成 等价重构完全对齐 详细agent工作计划并落到本地,然后AI就会全量阅读原项目写一份工作计划保存到本地,后续发起新会话要求AI按工作计划逐一完成就可以了,基本无法100%完成,后续要求AI按工作计划逐一审查完成度,让AI补足就可以了。我试过将代码量40w+的项目未完成了跨语言重构,顺带把sqlite换成了mysql

接口的话用grpc是不是就可以,改成proto语法 比如你是java语言就限定语言为java,python为python

例如:

// 使用 proto3 语法
syntax = "proto3";

// 指定生成的 Java 代码的包名
option java_package = "com.grpc.user";
// 指定生成的 Java 外部类名,如果不指定,会根据文件名生成
option java_outer_classname = "UserServiceProto";

// 包名,用于防止协议消息类型之间的名称冲突
package user;

// 定义用户服务
service UserService {
  // 根据ID获取用户 (一元 RPC)
  rpc GetUser (GetUserRequest) returns (GetUserResponse);

  // 获取所有用户列表 (服务器流式 RPC)
  rpc ListUsers (ListUsersRequest) returns (stream ListUsersResponse);
}

// 定义 GetUser 方法的请求消息
message GetUserRequest {
  int32 user_id = 1;
}

// 定义 GetUser 方法的响应消息
message GetUserResponse {
  User user = 1;
}

// 定义 ListUsers 方法的请求消息 (可以为空)
message ListUsersRequest {}

// 定义 ListUsers 方法的响应消息 (注意 stream 关键字)
message ListUsersResponse {
  User user = 1;
}

// 定义用户数据结构
message User {
  int32 id = 1;
  string name = 2;
  string email = 3;
}

如果是jetbrains系的话,有一个PSI MCP Server,可以直接获取jetbrains中的结构。不过那个插件不开源,并且每个jetbrains窗口要单独设置端口

你这个是不是,把需求弄出来,重新写了,AI看代码看多了,就乱了,很容易进入一种死循环了

发现被采纳了,但是其实现在jetbrains的官方mcp就足够好用了,不够的话再加jetbrains index mcp server插件