前言
7年牛马程序员,使用ai已经很长一段时间了,一天干爆老板600刀,也算小有经验,目前用ai做项目感觉最大的问题是,我之前用ai这么写是为啥来着?
AI编程困境
现在ai越来越强,如果给它准确的任务描述,干活是基本没有问题的,我从最开始的详细审查ai的代码,到现在渐渐放手给ai做,只做大概的审查,要是一次做不对,就让它多做几遍 感谢老板给的不限量token ,用多了,发现会容易出现对项目掌控不可避免的降低,以及对项目代码的理解只是泛泛水平
比如:
- 前几天这个需求有个bug,字段取得什么值,逻辑是怎么写的,是我的锅吗,不知道
- 前几天明明 ai 做对过的东西,在另一个地方再做一遍怎么做错了,为什么做错了也不知道
- 明明项目里已经有类似组件/工具函数,它又重新写一套,自己也没发现
- 上周为什么要让 ai 这么写,忘了
- 前几天强调过的地方,现在又要强调一遍。
总得来说,就是干活的速度快了,但是对需求的掌控程度下降,我不知道其他人目前使用ai对项目的理解是不是依旧强悍,但是我相信人会越来越懒。
该怎么办
那么有的老铁该想了,我是不是该多在代码审查上多花点时间,不然没几天就忘了为什么这么做了。有道理,确实应该好好看下ai写的代码,但是效率呢,ai 5分钟写的几百行代码半个小时不见得能看得懂,后面的需求还等着你呢,半天下来领导一问你需求做的怎么样了,你说没做多少,会不会觉得你没跟上时代?后台一看你干活没多快token还用了不少,这下好了,员工又贵干活还慢。
那么该怎么办?鄙人拙见,日常让ai改完代码写上详细注释 再加记录项目日志 ,项目开发的进度,ai都做过什么,为什么要这么做,而且让ai来做,不要自己来手动写日志,效率低,还慢,最重要的原因是我懒得自己写
那么该怎么做呢,我参考superpowers这种agent插件自己做了一个wingman,中文名小帮手
主要功能
主要功能包括memory系统用于记录项目日志 ,和project-map生成项目图谱,主要是用来登记项目目前有哪些东西
memory
这个功能会在项目本地生成文件夹,大概长这样
md
.wingman/memory/
brief.md 项目级入口:语言设置、全局 ADR、领域路由表、记忆结构说明、权威顺序。
context.md 当前工作、待办事项、近期高信号日志
domains/ 业务规则、API 契约、字段含义、状态流、权限、配额、生命周期规则等
billing.md
upload.md
history/ 历史追溯:重要事件正文和轻量索引,用于回答"之前为什么这么改"。
index.md
domains/
billing.md
upload.md
topics/ 按需求分类
quota-display.md
upload-retry.md
upload-contract.md
months/
2026-06.md
events/
2026/
06/
2026-06-21-upload-chunk-hash-regression.md
分为四个skill
- memory-setup 启用仓库级记忆,创建最小核心文件。
- memory-load 开始工作前按任务路由读取相关记忆,不加载全部历史。
- memory-sync 完成工作后记录有价值知识,并按价值分流到短期日志长期规范或历史事件。
- memory-clean 在用户明确要求时清理记忆,优先无损压缩、提升长期知识,并对删除设置确认门槛。
初始化仓库后,load 和 sync 可以自动触发,记忆文件也会自动更新,无需手动维护。前提是对话要在 agent 里,当然手动调用 skill 更保险一点。
除此之外还有一个project-map,主要是方便ai知道项目有哪些功能,相似的功能有什么区别,当然每次使用全局扫描其实更稳,但是费token,做这个skill的初衷也是想节省点token,只不过这个功能还在内测,希望大佬们也能多提点建议。
data-contracts 数据对接
一个比较日常的skill,最开始做这个 skill 主要是为了约束让 ai 对接后端接口字段的时候不要乱改,后来把这个概念扩散到当 A 系统的数据和 B 系统的数据发生交接时,ai 该如何处理。
几个常见的问题:
开发阶段前端使用的是 userName,让 ai 对接后端接口后,为了把后端的字段映射成 UI 组件期望的字段(比如把 user_name 转成 userName,把 image 转成 img),写了很多无意义的转换,因为 ai 不知道之前的代码是在调试阶段,不会轻易改之前的代码,比如
ts
// 数据源:[{ id: 1, user_name: "Alex", image: "xxxxx" }, ...]
export function UserList({ userListApiData }) {
return (
<ul className="user-list">
{userListApiData.map((user) => {
// 在 map 内部执行 Scenario A:轻量级解构映射
const {
id,
user_name: userName,
image: img
} = user;
return (
<li key={id} className="list-item">
<span className="name">{userName}</span>
<span >{img}</span>
</li>
);
})}
</ul>
);
}
现有的 UI 组件 ProductCard 原本期望传入 title, img 和 points。但新的 API 返回的却是 product_name, image_url,而且有时候还会漏掉 price 字段。
ts
// 错误的做法:
// 父组件 (Parent Component)
export function ProductList({ apiData }) {
return (
<div>
{apiData.map(item => (
<ProductCard
// 错误示范:在这里做"翻译"和"填坑"
title={item.product_name} // 把 product_name 翻译成 title
img={item.image_url} // 把 image_url 翻译成 img
points={item.price ? item.price : 0} // 缺字段?在这里硬补一个 0
/>
))}
</div>
);
}
// 正确的做法:
// 子组件:ProductCard.tsx
// ✅ 动作 1 直接修改组件的 Interface,拥抱后端的命名
interface ProductCardProps {
product_name: string; // 以前叫 title,现在直接叫 product_name
image_url: string; // 以前叫 img,现在直接叫 image_url
price?: number; // ✅ 打上问号,承认后端有时候会不传这个字段
}
// 组件入参直接使用后端字段
export function ProductCard({ product_name, image_url, price }: ProductCardProps) {
// ✅ 动作 2 遇到没传 price 时,别报错,给个默认值 0,并留下 FIXME 证据
const displayPrice = price ?? 0; // TODO: Field [price] missing in API
return (
<div className="product-card">
<img src={image_url} alt={product_name} />
<h3>{product_name}</h3>
<p>价格: ${displayPrice}</p>
</div>
);
}
// 改完之后的父组件 (Parent Component)
export function ProductList({ apiData }) {
return (
<div>
{apiData.map(item => (
// ✅ 完美:没有任何翻译代码,直接把后端的一整条数据扔进去!
<ProductCard {...item} />
))}
</div>
);
}
乱改 ui,我就想不明白了,对接个接口 ai 为什么老想改样式
除此之外一直想做个提交pr的skill,日常上班是真忙,而且不知道为啥各大skill插件都没有出这个功能,难道是有什么隐患?
安装
很遗憾目前 cursor 和 codex 我都没发上架到官方插件市场,codex 入口都没有,辛苦各位大佬手动安装下
Codex
bash
codex plugin marketplace add lsshym/wingman.ai
codex plugin add wingman@wingman-marketplace
Cursor
text
/add-plugin wingman@https://github.com/lsshym/wingman.ai
做的还有些不完善的地方,平时工作忙,完善只能挤时间,在这里只是提供思路,也希望能多跟大佬们交流下
仓库
GitHub:https://github.com/lsshym/wingman.ai
希望大佬们点点 star。
碎碎念
ai做项目确实快,目前大部分公司会审核ai写的代码,但是不知道各位感觉到没有,自己还有多少看ai产出的代码的耐心,产出的代码有时候难以阅读,而且仔细审查代码消耗的心智和时间成本也比较高。时间一长必然会影响项目速度。员工用ai是为了更轻松,不会有人打工上瘾吧?,对公司来说,效率没那么快那花钱给员工买token的意义是让员工干的更快,如果哪天说想整理整理代码,可能会因为影响工作效率被嫌弃,可能有些领导会说质量效率两手抓,但是真要点时间又该不乐意了。大胆预言,未来ai时代下,难以维护的代码会越来越多,马上会进入大屎山时代,希望不会看到屎山崩塌。