marscode性能定位提示词需注入真实现场三要素:线程pid、完整堆栈片段、arthas trace耗时分布,并嵌入终端上下文、技术巧合与ide状态,用动作指令替代模糊建议,输出带验证路径的可执行命令。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让MarsCode生成的性能定位提示词能直接贴进团队排查群,被后端同学一眼认出是“刚压测完、堆栈还在终端里滚动、GC日志刚导出”的真实现场,而不是套着“建议关注”“可考虑优化”“可能存在瓶颈”这类机械复读机式表达——因为没注入时间戳、没绑定具体线程名、没塞进真实采样数据,AI就只能从训练语料里扒出最安全的模糊话术。
锁定当前性能现场的三要素
第一步:把top -H输出里CPU占用最高的线程PID粘进提示词,格式为“线程PID: 18432(占CPU 92.3%)”。【不写PID,MarsCode会泛泛而谈“检查高耗CPU线程”,而你真正要查的是那个卡死在Unsafe.park()里的Netty EventLoop】。
第二步:复制jstack -l输出中该PID对应线程的完整堆栈片段,从“java.lang.Thread.State: RUNNABLE”开始,到下一个“at”行结束。删掉所有“locked ”这类无关锁地址,只留动作链。
第三步:把arthas trace命令返回的耗时分布截图文字化:“trace com.example.service.OrderService.createOrder -n 5 → 第3次调用耗时2847ms,其中redisTemplate.opsForValue().get()占2711ms(95.2%)”。这一步必须带百分比和绝对毫秒值,不能只写“Redis调用慢”。
用工程师即时状态覆盖模板腔调
方法一:在提示词开头植入身体状态与终端上下文
“你是一名刚在生产环境执行完arthas watch命令、终端还挂着watch结果滚动的Java工程师,左手边咖啡杯沿有指纹印,右手正悬停在键盘Ctrl+C键上方。”
方法二:加入一个不可复现的技术巧合
“发现该线程卡住时,恰好收到运维发来的ZK连接抖动告警(时间戳2026-07-13T09:42:17+0800),但ZK客户端日志显示session未失效。”
方法三:绑定一个刚关闭的IDE标签页
“IntelliJ里刚关掉的Tab是/src/main/java/com/example/cache/LocalCacheManager.java,光标停在第87行putIfAbsent()调用处。”
剔除五类机械表达并替换为动作指令
① 把“建议关注GC频率”改成“查jstat -gc 18432 1s 5,看Full GC是否在第3轮后突增”。
② 把“可能存在锁竞争”改成“用jstack -l 18432 | grep -A 10 'waiting to lock',提取锁对象hashcode”。
③ 把“可考虑优化缓存策略”改成“把LocalCacheManager.java第87行的ConcurrentHashMap换成Caffeine.newBuilder().maximumSize(1000).build()”。
④ 把“需检查线程池配置”改成“grep 'corePoolSize' /opt/app/config/application.yml,确认是否仍为默认值4”。
⑤ 把“应分析慢SQL”改成“从slow_query_log中提取18432线程关联的traceId,搜MySQL binlog里对应INSERT语句执行耗时”。
强制输出带验证路径的排查步骤
第一步:列出当前可立即执行的3条命令,每条含预期返回特征
“① jstack -l 18432 | grep 'java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await' → 应出现至少2行匹配;② cat /proc/18432/status | grep Threads → 应返回Threads: 127;③ curl -s http://localhost:8080/actuator/metrics/jvm.memory.used?tag=area:heap | jq '.measurements[0].value' → 应大于1.2e9”。
第二步:标注每条命令失败时的真实含义
“若①无匹配,说明不是AQS条件队列阻塞,转查Unsafe.park()调用链;若②Threads值<50,说明该线程已退出,当前PID是新创建线程,需用jcmd 18432 VM.native_memory查看内存映射”。
第三步:给出一条不可逆操作的确认提示
“执行jmap -histo 18432 > heap-histo.log前,请确认该进程已开启-XX:+UseContainerSupport,否则dump会触发STW导致订单接口超时”。











