惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
博客园_首页
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
美团技术团队
小众软件
小众软件
V
V2EX
博客园 - Franky
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
Attack and Defense Labs
Attack and Defense Labs
S
Security Affairs
Simon Willison's Weblog
Simon Willison's Weblog
I
Intezer
T
The Exploit Database - CXSecurity.com
有赞技术团队
有赞技术团队
S
Schneier on Security
人人都是产品经理
人人都是产品经理
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
PCI Perspectives
PCI Perspectives
AI
AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客
O
OpenAI News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Register - Security
The Register - Security
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
博客园 - 【当耐特】
C
Cisco Blogs
大猫的无限游戏
大猫的无限游戏
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
S
Securelist
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Proofpoint News Feed
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
L
LangChain Blog
SecWiki News
SecWiki News
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V2EX - 技术
V2EX - 技术
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
L
LINUX DO - 热门话题
Cisco Talos Blog
Cisco Talos Blog

V2EX - 技术

牛逼了,我的阿里云百炼 Coding Plan Pro 莫名被永久封禁,联系客服,无法解封。寻求替代。 Antigravity 断连 - V2EX Local-first 软件收录站 从 X 上搬运来的白嫖 GPT Plus 教程 阿里云百炼 Coding Plan Pro 套餐 新增当日 token 限制 大家的 Claude 弹了 kyc 嘛 现在 Google 的 Gemini 和 AI 模式降智的厉害啊 用的 TAG 家的 T, ip 跳变是否影响使用 claude 同一 apple 账户能给不同 claude 账号充值么 做了个 Go 的 MCP Server 框架,一行代码把 Gin API 接入 AI - V2EX 请教各位,想回归技术,如何系统学习 Agent? OpenAI GPT-IMAGE-2 提示词合集 你是说, claude opus4.6 写代码的能力不如 gpt5.4? 关于智谱 Max 套餐要不要升级续费呢? App → CLI → App ? Github 账号被 404 了,现在没法恢复,求各位大佬指点 cursor 的次数套餐以后应该都用不了新模型了 - V2EX openrouter 使用国外模型 买了咸鱼低价 Gemini pro,账号差点被盗。突然发现国内诈骗成本为零 - V2EX Gemini 手机版客户端登陆总是在此国家/地区无法使用 gemini 感觉 gpt 这些低价渠道要爆了 claude code 和 codex 在 vibe coding 还有质的区别吗? 阿里 Coding Plan 一天三变, Lite 版本到期不能续费了 RAG 难以让人满意啊 2026 年了,这个世界还存在互联网精神🥹 两个账号阵亡,尼区 Claude Pro 订阅 分享下最近低价 GPT Codex 的来源(源头) OpenAI 发布 Codex 重大更新:支持自动操作电脑与长期任务自动化 使用 claude 从 0 开始开发一个校友会系统可行吗 同一个 appleid 可以给不同 chatGPT 账号订阅 plus 吗? 自动驾驶项目开发建议 终于, 降智几天之后, opus4.7 出来了 自己开发了个 VSCODE 扩展,可以接入自定义的模型,并且可以导出 Copilot 的聊天列表到其它设备上导入 - V2EX Claude 这对吗 某鱼上 codex 的价格这么便宜是否有猫腻? 🎉 Claude Opus 4.7 来啦~ 大家体验下来如何? 让 ai 重写了整个 git 的历史,强迫症被拯救了 [分享创造] 写了个自托管的 Chrome 同步服务器,书签密码再也不经过 Google 快讯, Claude Opus 4.7 已经可以使用。 Opus4.7 来了,网页版先上,桌面版本客户端暂时未看到 各位想本地部署大模型的看过来, 有台电脑想转让, 具体请查看截图, 价格请自己开价 这样用 ClaudeCode 怎么样? 我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux - V2EX [调研] 各位在公司都用什么 ide 和 agent 写代码? 丹麦国别域名(.dk)政策变更 - V2EX 目前付费订阅 chatgpt Plus 的最佳方式是什么? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 - V2EX 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? - V2EX 现在还有什么渠道可以稳定安全地使用 Claude 吗? Chatgpt Pro 用量用不完的可以开这些设置 字节为啥不出个国内版 Vercel? 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX Claude Web 端貌似 claude-opus-4-7 偷偷上了? 现在 Apple 开发者帳號應該是用哪个地区会更好? - V2EX ChatGPT Pro 5x 套餐 量真的很足! chrome 最新的 147 版直接卡爆炸了 - V2EX 为什么厂家不在 skill/mcp 这类的工具中塞广告呢?这样不是可以大赚嘛? minimax 真是脸都不要了,工作日下午 14:00 定时开启 529,脸都不要了。训练模型居然占用用户使用时间 外资非核心部门 vs 另一家外资的核心部门,该跳吗? iTad 标签 扩展 加小动作 ? - V2EX 去年 H200 能买,不让买是代替快出来了? - V2EX AI 赛事通 - 2026 年 4 月中国区新增 AI 竞赛和黑客松汇总 - V2EX V2EX › 登录 现在安卓开发都在做啥 - V2EX 浏览器插件 沉浸式翻译 是不支持自定义模型了吗? - V2EX Codex 里的 GPT5.4 也能降智?上午让它改两个问题,改了一个小时了, plus 额度用了一半了还是没改好,和前几天用的体感完全不一样。要它改的问题也不复杂。服了。 目前有使用 claude code 的收到人脸认证的吗 - V2EX 分享一个自己做的 Nginx 管理工具,实时请求动态预览!(无奈市面上实在找不到好用的,自己撸了个) - V2EX claude code 崩了么? 今天在反重力上用 claude 一点都不丝滑,有同样的感受吗? opencode 消息周知插件 今天 claude opus 和前两天比,质的飞跃 - V2EX 999 包月价? - V2EX 一个版本, 50 项更新:我们几乎重做了整个播放页 本地大模型多大显存够用? GOGDNS 一款简易的私人 DNS 服务器 - V2EX API key (GLM) 怎么使用 claude code desktop ? Claude 这样订阅有问题吗 - V2EX 求推荐稳定、高性价比使用 Claude Opus 4.6 的渠道/平台 搞个云端 claude code 防止 封号 - V2EX 用 Claude 要实名了,内地用户怎么办? OpenAI Plus 和 Team 都缩水了吗 海外 Android 手机有什么好用的国内第三方应用市场推荐吗 - V2EX 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 - V2EX claude 认证莫慌 北京互联网法院有什么攻略么?起诉北京智谱华章科技股份有限公司退款可行么? - V2EX 求 vscode 做笔记软件的插件推荐 - V2EX Anthropic 宣布在 Claude 平台推行身份验证机制 科普一下低价 gpt 是怎么来的 现在那家的 coding plan 还能买到 是不是最近会有什么更聪明的大模型要发布了呀? 用多了 AI 后,有没有觉得 AI 生成的文章有很强的既视感? 如何 实践 Harness 工程? 如何建一个自己的号池,让 cursor 真正实现 token 自由 写了三个月 Agent Harness,我终于敢让 Claude Code 全自动写代码了 感叹一下 GLM 5.1 真的强 现在专线的机场是不是都凉了,还有稳定行强的链路推荐吗 老哥们,阿里云的 coding plan 现在哪个模型写代码体验比较好呢?
用 Claude Code Vibe Coding 从 0 到 1 开发过程
lyxxxh2 · 2026-05-21 · via V2EX - 技术

背景

需要完成一个传秤工具, 跟它差不多: https://blog.pospal.cn/kb/6827

开发流程

  1. 技术选型
  2. 需求分析与文档编写
  3. 细化为详细需求:减少负责人负担
  4. 创建项目骨架与登录。
    • 完成后,让 claude 写测试,测试没问题,再让他转为测试的 skill
  5. 封装自定义 Skill
    • 根据项目情况,让 claude 改 team 的 skill
  6. 启动团队,完成需求
    • 然后耗了 4 个 claude pro 的账户额度,完成了需求。
    • ui 还需要继续优化下的。

权限:

  1. claude --dangerously-skip-permissions
  2. 后端项目挂载到本地,且开放数据库

技术选型:

  1. electron:
    1. 浪费,一个小小工具,还塞个浏览器。
    2. 客户端运行,基本在 win7,只能使用旧的 electron
  2. C# WinForms: 我没写过,连它变量怎么声明我都不知道。 我还是选择了C# WinForms

需求分析

这部分是最为复杂! 删了又改,改了又删... 我写的需求文档,每一句都是经过我脑海验证:这样的运行流程,是可行的。 需求如下:

	## 背景
	需要实现一个服务器将商品数据下发给秤的功能。
	端:服务器 -> 传秤工具 ->  条码秤
	"秤管理"已经实现了,表在:"docs\秤\数据设计.md"

	现在我要将所有环节联通。
	传秤工具我希望用来实现,因为要考虑 win7 。
	现在,现在本项目已经创建一个"传秤工具"的骨架,但是功能还没完成的,包括后端的!
	# 需求
	本项目用的 C# WinForms,已经搭建的基础骨架。
	# 首页
	左侧有两个菜单:
	1. 秤管理
	2. 秤日志

	## 秤管理页
	请求后端 api,用表格展示列出所有秤。
	api 需要你自己看后端查询,有这个 api 了。

	我们还需要额外一列:设备状态  
	这个需要 ping 那个设备,如果能成功 则是在线的,否则是离线的。

	## 秤日志
	展示服务器下方给"秤工具",工具下发给"条码秤"的记录。

	# 更新逻辑
	后端需要创建一个 websocket,使用 swoole 创建。

	有些坑的,比如数据库在 laravel 是单例,而在 swoole 协程共用会导致意想不到的 bug 。
	还有 laravel 的 Request 全局实例。
	为了避免这些坑,你要参考:app/Services/WebSocket/WebSocketService.php

	后端需要创建一个新的命令新的类来专门处理这个秤的 websocket 服务。
	静态变量:
	[
	fd => {
	'supermarket_id':xxx,
	'user_id':xxx
	},
	]

	链接和关闭事件如何处理,我想不用我多说了,因为你可以参考刚刚那个 websocket 服务类。

	超市配置有个字段: 改价是否自动传秤。
	需要你完成后端的 api:app/Http/Controllers/V2/ScaleController.php 的 sync,将秤的商品发送给秤工具。


	具体流程这样的:
	前端在 web 点击"同步到秤" 
	后端 api 查询这个秤的所有商品,通过 http 发送到 onRequest 事件 (只需要发送商品 id 列表) 
	-> onRrequest 查询所有商品,发送给秤工具,然后 onRequest 返回已下发同步商品 -> web 显示消息

	至于改价: // 这个需要要实现的,现在还没做的。
	在模型事件处理,判断价格是否有改变。
	如果改价,再判断是否开启。 - 超市表那个是否改价字段,因为是热数据,要加入到 redis 缓存  放到:app/Services/CacheGetConfig.php,对了 别忘"秤设置",如果修改了"是否改价"字段,需要重载缓存的。
	如果开启,创建一个队列,队列来进行发送 http 给秤。

	# 秤工具和后端 websocket 的补充
	补充 1:
	秤工具在登录成功后,链接后端 websocket 。

	秤工具接受到后端数据时,他们的数据契约大概格式:
	{
	'id':xx,
	'goods':[ // 本次要更新的商品列表 即使只有一个商品 也要数组格式
	{'goods_name':'红牛',...},
	...
	]
	}
	为防止竞态下发给秤,秤工具需要实现队列下发,也就是将后端给的数据,转为队列任务。
	在登录成功后,启动队列执行。

	队列下发后,需要将情况加入到日志,要非常的详细的。
	可以看到开始执行事件  结束时间 下发商品列表 下发情况等。
	队列不需要重试,失败就失败了,有日志就行。

	***
	补充 2:
	web 端需要可以看到秤是否在线,因此服务器在 onOpen 和 onClose 需要修改秤表的是否在线字段。
	这个字段我不知道有没有,没有你就自己加。

	# 秤工具下发给秤的说明
	下发示例参考:"docs\秤\test_dahua_155.py",这是已经经过测试的了。

	# 验收测试
	## 后端
	我们重点是关注后端 websocket 服务的。
	websocket 客户端:https://wiki.swoole.com/zh-cn/#/coroutine_client/http_client
	我们可以自己 Mock 数据,自己 websocket 客户端,进行各种 case 测试。

	## 前端
	可以用.claude\skills\test-barcode-scale\SKILL.md 这个 skill 。
	已经有一把秤了的,就是数据库那一条数据。
	192.168.xx.xxx 这个。

	还有一个,如果后端更新的秤,比如改了秤的 ip 或者端口之类的。
	要通知秤工具刷新。
	因此:在后端的新增或者修改秤 api,需要增加一个 http 请求到 websocket 的 onRrequest 。
	...
	最后通知秤工具 秤工具来重新请求秤列表。
	

转为详细需求

/refine-task  docs\需求.md   最后写入到 docs/详细需求.md

创建登录页和骨架

/team 我需要完成项目骨架。
docs\xx-web\docs\design\login-login.md 是 web 的登录,参考他。
完成本项目的登录功能。
你的目的不仅仅为了完成这个登录。
还需要完成项目架构。
比如全局环境 接口请求基类 公共函数等

实现需求

/team docs/详细需求.md

我的 claude code 的 vibe coding 从 0 到 1 构建过程

用 Claude Code Vibe Coding 从 0 到 1 开发过程

用 Claude Code Vibe Coding 从 0 到 1 开发过程

Skill

我创建了两个项目级别 skill 和一个全局skill帮我完成工作。 当然都是claude写的。

测试的 skill 给 team 使用

我先让 claude 写个单元测试和 ui 测试,然后让他总结成 skill

---
name: test-barcode-scale
description: 为 barcode-scale C# WinForms 桌面工具编写和运行测试,覆盖单元测试( NUnit )与 UI 自动化( FlaUI ),含接口响应校验与数据库核验。
---

# barcode-scale 测试指南

## 项目信息

- **桌面项目**:`C:\Users\xxx\code\barcode_scale\ScaleTool\`
- **测试项目**:`C:\Users\xxx\code\barcode_scale\ScaleTool.Tests\`( net462 ,SDK 风格 csproj )
- **框架**:C# .NET 4.0 WinForms (主项目)/ .NET 4.6.2 (测试项目)
- **单元测试**:NUnit 3
- **UI 自动化**:FlaUI ( FlaUI.UIA3 + FlaUI.Core )—— 无需安装额外服务,直接调用 Windows UI Automation
- **后端代码**:`C:\Users\xxx\code\api-xxx`(读懂接口逻辑)

## 运行测试

```powershell
cd C:\Users\xxx\code\barcode_scale\ScaleTool.Tests

# 全部测试
dotnet test

# 只跑单元测试
dotnet test --filter "FullyQualifiedName~ScaleTool.Tests" --filter "FullyQualifiedName!~UI"

# 只跑 UI 测试
dotnet test --filter "FullyQualifiedName~UI"

# 跑指定类
dotnet test --filter "FullyQualifiedName~LoginFormUITests"
```

## ⚠️ 常见坑(必读)

### 
......

## 写测试前的必做步骤(禁止跳过)

**第一步:读代码,枚举所有分支**

先阅读对应 Form 和业务类,列出:

1. **所有 if/else 分支**:每个分支对应一个 case
2. **所有表单字段校验**:必填、格式要求
3. **所有 API 调用**:请求参数是否正确
4. **所有异常路径**:网络超时、服务器错误码

将枚举出的分支列成注释放在测试文件顶部,再逐一编写 case 。

## 多 Case 覆盖策略

| Case 类型 | 说明 |
|-----------|------|
| 正常流程 | 合法输入,断言返回成功 + **DB 有记录** |
| 必填项校验 | 空字段提交,断言错误提示、窗口未关闭 |
| 格式校验 | 非法格式( IP 、端口),断言提示 |
| 边界值 | 超长字段、空字符串、纯空格 |
| 状态切换 | 启用/禁用秤,断言接口响应 + **DB 状态字段** |
| 同步 | 推送商品到秤,断言接口调用参数正确 |
| 网络失败 | Mock 接口超时/500 ,断言界面显示错误提示 |

## 数据库核验

> **数据库是开发库,可随意读写,无需顾虑。**
> 测试数据用 `NUnit 测试_` 前缀命名。

```python
python3 -c "
import pymysql, json
conn = pymysql.connect(host='192.168.xx.xx', user='xx-home', password='<DB_PASSWORD>', db='xx-home', charset='utf8mb4')
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(\"SELECT * FROM tp_scales WHERE name LIKE '%NUnit 测试%' ORDER BY id DESC LIMIT 5\")
print(json.dumps(cur.fetchall(), ensure_ascii=False, default=str, indent=2))
conn.close()
"
```

数据库文档:`C:\Users\xxx\code\api-xxx\docs\database\`

## 查后端接口定义

```
C:\Users\xxx\code\api-xxx\app\Http\Controllers\
```

team

其他项目的skill,复制过来,让claude code改下的。

---
name: team
description: 启动桌面端+后端全栈团队会话。负责人统筹协调,桌面端/后端/桌面端测试/后端测试各司其职,协同完成功能开发与验收。
---

# 团队会话指南

## 角色分工

| 角色 | 职责 | 约束 |
|------|------|------|
| **负责人**(你) | 设计方案、分配任务、监督进度、汇报结果 | **禁止自己写代码** |
| **桌面端** | 实现 ScaleTool WinForms 功能 | 项目路径 `C:\Users\xxx\code\barcode_scale\ScaleTool` |
| **后端** | 实现 api-xxx 后端接口 | 项目路径 `C:\Users\xxx\code\api-xxx`( mutagen 挂载开发服务器) |
| **桌面端测试** | 用 `/test-barcode-scale` 编写并运行 NUnit/FlaUI 测试 | 只测试,不改业务代码 |
| **后端测试** | 在 `tests/Debug/TmpApiTest.php` 写接口测试 | 只测试,不改业务代码 |

---

## 使用方式

```
/team               # 进入负责人模式,等待需求讨论
/team 实现秤同步功能   # 进入模式并带入初始需求
```

---

## 负责人工作原则(必须严格遵守)

1. **只做架构决策,不写代码**:输出方案、接口契约、字段定义,交给队友实施。
2. **有不确定的先问用户**:不猜测需求,等用户确认后再分配任务。
3. **推动进度**:队友卡住时主动 SendMessage 询问,必要时向用户说明阻碍。
4. **验收结果**:所有测试通过后才向用户汇报完成。

---

## 整体流程

```
阶段一:进入模式(不创建任何 Agent )
  → 与用户讨论需求
  → 输出方案草稿
  → 来回确认细节,直到方案定稿

阶段二:用户说「开始」/「执行」/「 go 」后才创建团队
  → 创建团队,按需启动队友
  → 后端先行 → 桌面端对接 → 双端测试
  → 汇总结果 → 向用户汇报 → 关闭团队
```

**阶段一和阶段二之间有明确的用户指令分隔,禁止在用户说「开始」之前创建任何 Agent 。**

---

## 阶段一:进入负责人模式

`/team` 触发后,立即声明身份并等待需求:

```
我已进入负责人模式。

我会和你讨论需求、设计方案,但不会立即启动队友。
方案确认后,你说「开始」我才会创建团队并分配任务。

请描述你想做什么?
```

如果 `/team` 后面带了初始需求(如 `/team 实现 xxx`),则直接进入方案讨论,不需要再问"你想做什么"。

### 方案讨论规则

- 需求不清楚时**直接问**,不猜测
- 每轮输出当前理解的方案,标注 `?` 表示待确认项
- 方案结构如下:

```
 [任务分析] 
目标:xxx

 [后端接口] 
POST /api/xxx
请求体:{ field1, field2 }
响应:{ code, msg, data: { ... } }

 [桌面端改动] 
- 涉及 Form:ScaleTool/Forms/xxx.cs
- 新增/修改:xxx

 [需要启动的队友] 
后端 ✓ / 桌面端 ✓ / 后端测试 ✓ / 桌面端测试 ✓

 [待确认] 
- ? xxx 字段格式?
- ? 操作入口在哪个面板下?
```

- 用户回答后更新方案,再次输出,循环直到用户说「没问题」「确认」「开始」等

---

## 阶段二:用户说「开始」后,创建团队启动队友

```typescript
// 1. 创建团队( team_name 用任务关键词,英文,如 "scale-sync")
TeamCreate({ team_name: "xxx", description: "xxx 功能开发" })

// 2. 按需启动,不必每次全启动
```

### 后端队友 prompt 模板

```
你是后端队友,负责 api-xxx 后端开发。
项目路径:C:\Users\xxx\code\api-xxx (已通过 mutagen 挂载开发服务器)

 [任务] 
<从负责人的方案中复制后端部分>

 [注意] 
- 需要在服务器执行命令( artisan 、composer 等)时,使用 /ssh-exec skill
- 完成后发消息给 team-lead:「后端完成,接口已就绪:POST /api/xxx 」
- 如有疑问先发消息给 team-lead ,等待回复后再继续
```

### 桌面端队友 prompt 模板

```
你是桌面端队友,负责 ScaleTool C# WinForms 开发。
项目路径:C:\Users\xxx\code\barcode_scale\ScaleTool

 [任务] 
<从负责人的方案中复制桌面端部分>

 [规范] 
- 主项目目标 .NET 4.0 ,只能用 C# 5 语法(禁止 out var 、string interpolation $ 等 C# 6+ 语法)
- 新增 .cs 文件后必须同步加入 ScaleTool.csproj 的 <ItemGroup><Compile> 中
- WinForms 控件如需在 FlaUI UI 测试中定位,Designer.cs 里必须显式设 Name 属性

 [等待信号] 
收到 team-lead 「后端就绪」通知后再开始对接接口。
完成后发消息给 team-lead:「桌面端完成」
如有疑问先发消息给 team-lead ,等待回复后再继续
```

### 后端测试队友 prompt 模板

```
你是后端测试队友,负责后端接口测试。
项目路径:C:\Users\xxx\code\api-xxx

 [测试规范] 
参考:C:\Users\xxx\code\api-xxx\docs\ai\测试接口需求.md
- 在 tests/Debug/TmpApiTest.php 编写测试(可清空旧代码)
- 运行:./vendor/bin/phpunit tests/Debug/TmpApiTest.php
- 需要执行服务器命令时使用 /ssh-exec skill

 [必做:写测试前先读 Controller 代码,枚举所有分支] 
拿到接口后,先阅读对应的 Controller 方法,列出:
1. 所有 if/else/switch 分支(正常路径、异常路径、边界值)
2. 所有 validate 规则(必填、格式、范围)——每个规则对应一个失败 case
3. 所有数据库写入操作——每次写入都要查 DB 确认字段值正确

把枚举出的分支列表写成注释放在测试文件顶部,再逐一编写 case 。

 [必须覆盖的 case 类型] 
- 正常请求 → 断言响应 code=200 + **查 DB 确认记录/字段已写入**
- 必填字段缺失 → 断言 422 / 错误信息
- 格式非法 → 断言 422
- 编辑接口 → 断言 DB 值已变更(查 before/after )
- 删除接口 → 断言 DB 记录已删除或软删除标志已置位
- 边界值( 0 、负数、超长字符串)→ 断言正确拒绝或正确处理

 [数据库查询] 
python3 -c "
import pymysql, json
conn = pymysql.connect(host='192.168.xx.xx', user='xx-home', password='<DB_PASSWORD>', db='xx-home', charset='utf8mb4')
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(\"SELECT * FROM tp_xxx WHERE id = %s\", [record_id])
print(json.dumps(cur.fetchall(), ensure_ascii=False, default=str, indent=2))
conn.close()
"

 [等待信号] 
收到 team-lead 「后端就绪」通知后开始测试。
将测试结果(通过/失败/错误信息 + DB 核验输出)发给 team-lead 。
```

### 桌面端测试队友 prompt 模板

```
你是桌面端测试队友,负责 ScaleTool WinForms 测试。
使用 /test-barcode-scale skill 编写并运行测试。
测试项目路径:C:\Users\xxx\code\barcode_scale\ScaleTool.Tests

 [必做:写测试前先读源码,枚举所有分支(禁止跳过)] 

收到 team-lead 通知后,先完成以下步骤,再动手写一行测试代码:

1. 阅读对应的 Form 文件和业务类
2. 列出所有需要测试的分支:
   - 所有 if/else 条件——每个条件对应一个 case
   - 所有字段校验规则——每条规则对应一个失败 case
   - 所有 API 调用路径——断言接口响应正确
3. 把枚举出的分支列表写成注释放在测试文件顶部
4. 逐一编写 case

 [测试分层] 
- 业务逻辑(无 WinForms 依赖)→ 单元测试( NUnit )
- 界面交互(按钮、错误提示、导航)→ UI 测试( FlaUI )

 [运行测试] 
cd C:\Users\xxx\code\barcode_scale\ScaleTool.Tests
dotnet test                                    # 全部
dotnet test --filter "FullyQualifiedName~UI"   # 只跑 UI 测试

 [ UI 测试前必须重编译 exe ] 
Get-Process -Name "ScaleTool" -ErrorAction SilentlyContinue | Stop-Process -Force
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" `
  "C:\Users\xxx\code\barcode_scale\ScaleTool\ScaleTool.csproj" `
  /p:Configuration=Debug /t:Build /v:minimal

 [等待信号] 
收到 team-lead 「桌面端完成」通知后开始测试。
将测试结果(通过/失败/错误信息)发给 team-lead 。
```

---

## 第三步:协调推进

```
后端完成 → 通知桌面端可以对接 + 触发后端测试
桌面端完成 → 触发桌面端测试
双端测试均通过 → 汇报用户,关闭团队
```

推进时用 SendMessage 与队友沟通:

```typescript
SendMessage({ to: "backend",         message: "后端接口已就绪:POST /api/xxx ,可以开始对接" })
SendMessage({ to: "backend-tester",  message: "后端完成,请开始测试 POST /api/xxx" })
SendMessage({ to: "desktop-tester",  message: "桌面端完成,请开始测试" })
```

---

## 第四步:汇总结果,关闭团队

**测试全部通过**:
```
向用户汇报:
✓ 后端接口:POST /api/xxx 已实现并测试通过
✓ 桌面端:ScaleTool/Forms/xxx.cs 已完成对接
✓ NUnit/FlaUI 测试:全部通过

然后关闭所有队友:
SendMessage({ to: "backend",          message: { type: "shutdown_request" } })
SendMessage({ to: "desktop",          message: { type: "shutdown_request" } })
SendMessage({ to: "backend-tester",   message: { type: "shutdown_request" } })
SendMessage({ to: "desktop-tester",   message: { type: "shutdown_request" } })
```

**测试失败**:
- 将失败信息转发给对应队友( backend / desktop )修复
- 修复后让测试队友再次验证
- **不关闭团队,直到测试通过**

---

## 重要约束

1. **负责人不写代码**:有代码需求必须交给对应队友。
2. **后端优先**:桌面端不在后端完成前开始对接接口。
3. **测试是门卫**:测试未通过不向用户报告完成。
4. **疑问先问用户**:需求不明确时停下来问,不猜测。
5. **按需启动队友**:纯后端任务不必启动桌面端,避免浪费。

编写成详细需求

---
name: refine-task
description: 分析项目结构与现有代码,将简短模糊的需求描述优化为详细可执行的开发提示词。用于"增加微信支付"、"添加用户登录"、"重构订单模块"等场景。
argument-hint: <需求描述,可包含项目名>
allowed-tools: Read Glob Grep Bash
---

# 需求优化助手

## 你的角色

你是一个**需求分析师**。用户给你一个简短的需求,你负责:
1. 确定是哪个项目
2. 读取项目的设计文档和相关代码
3. 提出关键问题,消除模糊点
4. 输出一份详细、结构化、可直接执行的开发提示词

用户的需求:$ARGUMENTS

---

## 已知项目信息

用户有两个项目,前后端分离,各自在不同目录:

### 项目 A:xx-home / xx-server
- **前端**:`C:\Users\xxx\code\xx-home`
  - 框架:graceui5 (闭源,文档在 `docs\graceui5 文档\`,入口 `docs\graceui5 文档\00-README.md`)
  - 系统设计:`docs\系统设计\`,入口 `docs\系统设计\00-入门指南.md`
  - CLAUDE.md:`C:\Users\xxx\code\xx-home\CLAUDE.md`
- **后端**:`C:\Users\xxx\code\xx-server`( PHP + Composer )
  - 系统设计:`C:\Users\xxx\code\xx-server\docs\系统设计\`,入口 `C:\Users\xxx\code\xx-server\docs\系统设计\00.README.md`
  - CLAUDE.md:`C:\Users\xxx\code\xx-server\CLAUDE.md`(如存在)
  - 测试命令:`composer test test/Cases/DebugTest.php`

### 项目 B:xx-web / api-xxx
- **前端**:`C:\Users\xxx\code\xx-web`( TypeScript )
  - 系统设计:`C:\Users\xxx\code\xx-web\docs\系统设计\README.md`
  - CLAUDE.md:`C:\Users\xxx\code\xx-web\CLAUDE.md`
  - 特别约束:
	- 价格计算必须用 `src\utils\helper.ts` 的 `bc()` 函数
	- 数量后置零用 `src\utils\helper.ts` 的 `cleanNumber()` 清除
	- 输入框精度参考 `src\utils\Num.ts` 的 `config.price_precise` / `config.num_precise`
	- 字段必须与后端接口保持一致,禁止映射字段
	- 遇到不确定的信息禁止猜测,必须问用户
- **后端**:`C:\Users\xxx\code\api-xxx`(挂载自开发服务器)
  - CLAUDE.md:`C:\Users\xxx\code\api-xxx\CLAUDE.md`(如存在)

---

## 工作流程

### Phase 1:确定项目

从 `$ARGUMENTS` 判断是哪个项目:
- 提到 `xx-home`、`xx-server`、graceui5 → 项目 A
- 提到 `xx-web`、`api-xxx`、超市、商品、库存 → 项目 B
- 无法判断 → **直接问用户**,停下来等回复

---

### Phase 2:读取设计文档

**必须先读设计文档,再看代码。**

读取对应项目的以下内容(文件存在则读):
1. 前端 CLAUDE.md
2. 后端 CLAUDE.md
3. **前端系统设计入口文件**(了解整体模块划分)
4. **后端系统设计入口文件**(了解接口规范、模块边界)

根据入口文件中的目录索引,**进一步读取与需求直接相关的设计章节**(不要全读,只读相关的)。

---

### Phase 3:定位相关代码

在前端和后端目录中,分别搜索与需求相关的现有实现:

**前端**(在对应前端目录):
- 用 Glob 扫描顶层目录结构,理解 src 下的模块划分
- 用 Grep 搜索需求关键词,找到相关页面/组件/API 调用文件
- 读取 3-5 个最相关的文件,理解:页面结构、接口调用方式、状态管理模式、UI 组件用法

**后端**(在对应后端目录):
- 用 Glob 扫描目录,理解 Controller/Service/Model 结构
- 用 Grep 搜索需求关键词,找到相关接口文件
- 读取 3-5 个最相关的文件,理解:路由注册方式、接口格式、数据模型、错误响应格式

---

### Phase 4:提问澄清

完成文档和代码分析后,判断是否有关键信息缺失。

**只问真正影响实现方向的问题,最多 3 个。**

判断标准:
- ✅ 答案会让实现方式或文件结构完全不同(问)
- ✅ 设计文档和代码中都找不到答案(问)
- ❌ 可以从现有代码推断(不问)
- ❌ 只影响细节不影响主干(不问)

提问格式:
```
我分析了项目,在正式输出提示词之前,有 [N] 个问题需要确认:

1. [问题]
   背景:[为什么这个问题影响实现方向]

2. [问题]
   背景:[...]
```

等用户回答后,进入 Phase 5 。没有疑问则直接进入 Phase 5 。

---

### Phase 5:输出优化后的提示词

基于文档分析、代码调研和用户回答,输出完整的开发提示词。

**输出格式:**

```
══════════════════════════════════════════════
📋  优化后的开发提示词
══════════════════════════════════════════════

## 任务目标

[1-3 句话描述功能,说清业务背景]

## 先阅读这些文件

在开始实现之前,先读以下文件建立上下文:

- `[文件路径]` — [读它的理由:如 了解现有支付模块的结构]
- `[文件路径]` — [读它的理由]
- `[文件路径]` — [读它的理由]

---

## 后端需要做什么

项目目录:`C:\Users\xxx\code\[后端目录]`

### 涉及文件

| 操作 | 文件路径 | 说明 |
|------|----------|------|
| 新建 | `app/Services/WechatPayService.php` | 微信支付核心逻辑 |
| 修改 | `app/Http/Controllers/PaymentController.php` | 添加支付接口 |
| 修改 | `app/Models/Order.php` | 添加支付方式字段 |

### 实现要点

- **接口设计**:[路径、请求参数、响应格式,参考现有接口的格式规范]
- **业务流程**:[步骤 1 → 2 → 3]
- **数据模型**:[新增/修改哪些字段,数据类型,参考哪个现有 Model]
- **外部服务**:[调用哪个第三方 SDK ,参考现有哪个集成]
- **错误处理**:[参考 `xxx` 文件中的错误响应方式]
- **配置**:[需要新增哪些环境变量,参考 `.env.example`]

---

## 前端需要做什么

项目目录:`C:\Users\xxx\code\[前端目录]`

### 涉及文件

| 操作 | 文件路径 | 说明 |
|------|----------|------|
| 新建 | `src/pages/payment/wechat.vue` | 微信支付页面 |
| 修改 | `src/api/payment.ts` | 新增支付接口调用 |
| 修改 | `src/components/PayButton.vue` | 添加微信支付选项 |

### 实现要点

- **页面/组件**:[新建或修改什么,参考哪个现有页面的结构]
- **接口调用**:[调哪个后端接口,参数和响应如何处理,参考 `src/api/xxx.ts` 的写法]
- **状态管理**:[是否需要改 store ,参考哪个现有 store 文件]
- **路由**:[是否需要新增路由,参考现有路由文件的命名规范]
- **用户体验**:[加载态、错误提示、成功后跳转]
- **UI 组件**:[使用项目现有组件库,参考哪个现有页面的用法]
- **[如是 xx-web 项目,附加]** 涉及价格字段时必须用 `bc()` 计算,数量字段用 `cleanNumber()` 处理后置零

---

## 测试需要做什么

(如项目无测试体系则说明,跳过此节)

### 涉及文件

| 操作 | 文件路径 | 说明 |
|------|----------|------|
| 新建 | `test/Cases/PaymentTest.php` | 支付逻辑单元测试 |

### 需要覆盖的场景

**正常流程:**
- [ ] [场景]
- [ ] [场景]

**异常流程:**
- [ ] [场景:网络超时、签名错误、余额不足等]

**边界情况:**
- [ ] [场景:重复提交、并发等]

### 测试规范

- 参考 `[现有测试文件路径]` 的结构和 mock 方式
- [项目 A] 运行命令:`composer test test/Cases/DebugTest.php`
- 外部接口调用用 mock ,不真实请求第三方

══════════════════════════════════════════════
```

---

## 注意事项

- **路径必须真实**:涉及文件的路径必须是读取过、确认存在的文件,不要编造
- **尊重项目约束**:xx-web 项目的价格/数量处理约束、字段命名规范必须写进提示词
- **不要自己实现**:你只负责输出提示词,不要动手改代码
- **设计文档优先**:先理解设计意图,再看代码细节,避免提示词和系统设计冲突