MarsCode需求拆解需先确认平台类型,再用真实日志、文件行号和生命周期节点生成可落地子任务,并植入团队禁令与交付物格式约束。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你在MarsCode里写代码需求拆解提示词,发现AI输出的子任务总像教科书目录——“1. 初始化模块 2. 实现核心逻辑 3. 添加异常处理”,根本看不出这是Android App里一个RecyclerView嵌套ViewPager2导致滑动卡顿的真实现场,也没法直接塞进Jira任务池。
先锁定平台技术语境
打开MarsCode左侧「项目信息」面板 → 点击「环境识别」→ 确认平台类型(Android/Kotlin、iOS/Swift、Web/React/Vue)及运行时版本。这一步不能跳过。如果未检测到platform.json或Info.plist,MarsCode会默认当成通用JavaScript,后续拆解将丢失View层级、生命周期钩子、Bundle传递等关键上下文。
记下当前平台最常被撕开的三处“缝”:Android关注onCreate→onResume→onLayout调用链断裂;iOS紧盯UIViewController.viewDidLoad→viewWillAppear→CADisplayLink帧同步失效;Web则卡在useEffect依赖数组漏项→渲染阻塞→LCP超限。
把泛需求翻译成平台特有“痛感语言”
方法一:用真实报错日志替换模糊描述
把“页面加载慢”改成:“Systrace中MainThread在onLayout阶段被Choreographer.doFrame阻塞>16ms,且RenderThread连续丢帧3帧以上”(Android);
把“列表滚动不流畅”改成:“Instruments Time Profiler显示-[UITableView _updateVisibleCellsNow:]耗时>80ms,且主线程CPU占用率峰值达92%”(iOS);
把“点击没反应”改成:“Chrome Performance Tab中Input Delay > 100ms,且React Profiler显示onClick handler内触发了forceUpdate()”(Web)。
【必须用平台工具链里真实出现过的指标名称和堆栈片段,不能自己编造】——例如“BINDER_TRANSACTION在Systrace中堆积”比“系统调用慢”更能触发Android工程师条件反射。
方法二:绑定具体文件与行号
在提示词里直接写:“/app/src/main/java/com/example/feed/FeedFragment.kt 第47行,当feedListAdapter.submitList()被调用后,ViewPager2.setCurrentItem()立即执行,导致measure/layout冲突”。AI会据此拆出“分离数据提交与页面切换时机”这个可落地子任务,而不是泛泛而谈“优化性能”。
按平台协作习惯组织子任务颗粒度
第一步:提取平台标准生命周期节点
Android任务必须锚定onCreate→onStart→onResume→onPause→onStop→onDestroy六节点中的某一个;iOS任务需落在viewDidLoad→viewWillAppear→viewDidAppear→viewWillDisappear→viewDidDisappear五节点中;Web任务则要明确是mount前、effect执行中、unmount后。
第二步:按平台调试惯性切分动作粒度
Android工程师看到“修复RecyclerView嵌套ViewPager2滑动卡顿”,会立刻拆成:
① 在FeedFragment#onViewCreated中延迟ViewPager2.setCurrentItem()调用,等待feedListAdapter.notifyItemRangeInserted()完成;
② 将ViewPager2.setOffscreenPageLimit(1)改为setOffscreenPageLimit(0),避免预加载消耗过多内存;
③ 在Adapter#onBindViewHolder中移除Glide.with().load()的placeholder参数,防止占位图触发额外layout。
iOS工程师面对同问题,则会拆成:
• 在viewWillAppear中移除[self.view addSubview:_pager],改用lazy init + viewDidLayoutSubviews中安全添加;
• 替换UIPageViewController为自定义UIScrollView+UIStackView,规避transitionCoordinator阻塞;
• 将cell复用identifier从@"FeedCell"硬编码改为[NSString stringWithFormat:@"FeedCell_%@", @([UIDevice currentDevice].systemVersion)],适配iOS 17.4新视图渲染路径。
Web工程师则聚焦:
– 把useEffect(() => { setCurrentIndex(0) }, [items])改为useEffect(() => { if (items.length) setCurrentIndex(0) }, [items.length]);
– 删除react-virtualized中shouldComponentUpdate的浅比较逻辑,改用memo+useCallback包裹item renderer;
– 在webpack.config.js中将SplitChunksPlugin的chunks设为"all",避免vendor chunk过大阻塞hydrate。
用平台特有约束收束AI发散
方法一:植入团队禁令
“本项目禁用Kotlin协程GlobalScope.launch,所有异步操作必须走viewModelScope;禁用Swift中@objc dynamic修饰符,所有响应式属性必须用Combine Publisher声明;Web端禁止在组件内直接调用fetch,所有API请求必须经由src/lib/apiClient封装。”
方法二:绑定真实交付物格式
“每个子任务标题必须含动词+技术点+影响范围,如【延迟】+【ViewPager2.setCurrentItem】+【避免onLayout阶段主线程阻塞】;
每个子任务描述末尾必须带一句验证方式,如‘验证:Systrace中MainThread onLayout耗时下降至
方法三:插入不可绕过的物理限制
“Android子任务必须标注minSdkVersion=21,iOS子任务必须注明Deployment Target=15.0,Web子任务必须声明支持Chrome 120+/Safari 17.4+;
所有子任务交付代码必须能通过当前CI流水线lint检查(ESLint v8.52.0 / Detekt v1.22.0 / SwiftLint v0.53.0)。”

















