Claude Code 实战投稿:我如何用“一键排障包”把桌面支持脚本效率提升 3 倍(Prompt 模板 + 代码 + 踩坑复盘)
对我来说,Claude Code 不是“替我写代码”,而是让我把时间花在更值钱的地方:我把“写代码”变成“定义正确 + 快速验收 + 快速交付”。如果你也是做开发、做运维、做桌面支持的,我非常建议你试试这种工作流:先写验收清单,再让 AI 产出,再用日志和复现条件做迭代。你会发现效率提升真的不是一点点。⬆️ 返回顶部。

Claude Code 实战投稿:我如何用“一键排障包”把桌面支持脚本效率提升 3 倍(Prompt 模板 + 代码 + 踩坑复盘)
- 1、我为什么选择这个题:Claude Code 让我从“写代码”变成“验收代码”
- 2、项目背景:我做的“一键排障包”到底解决什么问题?
- 3、我怎么写 Prompt:我不用“请帮我写脚本”,我用“验收清单”
- 4、核心代码:我最终交付给同事的 PowerShell 版本(可直接运行)
- 5、我如何对比效率:传统方式 vs Claude Code(我的计时口径)
- 6、我怎么迭代修 bug:我把“事实”喂给 Claude Code,让它做“最小改动”
- 7、我用 Mermaid 画出自己的 Claude Code 工作流(我每次都按这个走)
- 8、我踩过的坑(写出来更像“实战文章”,也更容易拿高分)
- 9、结语:我眼里的“AI 编程效率”到底是什么?
这篇文章是我参加 「星图计划年度征文(第1期)—Claude Code 开发者创客大赛:AI 编程实战征文计划」 的实战投稿。我不会空谈“AI 编程多厉害”,而是用一个我日常桌面支持真实会用到的小项目——一键排障包(Triage Pack),把我从需求、Prompt、迭代、验收到交付的全过程讲清楚,大家可以直接照着抄。

1、我为什么选择这个题:Claude Code 让我从“写代码”变成“验收代码”
以前我做桌面支持脚本开发,最大的时间消耗不在“核心逻辑”,而在这些反复出现的边角料:
- 参数怎么设计更顺手
- 日志怎么写才方便复盘
- 异常怎么处理才不崩
- 输出目录怎么统一
- README 怎么写才让同事一看就会用
我发现 Claude Code 最猛的地方,是它能把这些“工程化边角料”一次性补齐。
所以我现在的工作方式变成了: 我负责把需求说清楚、验收标准写清楚;Claude Code 负责把工程化交付补齐。

2、项目背景:我做的“一键排障包”到底解决什么问题?
在企业桌面支持里,我最怕的不是“问题难”,而是“信息不够”。
用户一句“电脑卡”“Outlook 弹窗”“VPN 连不上”,如果我拿不到关键证据链,就会陷入反复追问:
- 系统版本?补丁?启动项?
- 事件日志哪一段?
- 网络 DNS / 代理 / 路由是什么?
- 是否有组策略、证书、驱动冲突?
于是我给自己定了一个非常明确的目标: 把“来回问 10 次”变成“发我一个 zip 我就能开工”。
✅ 一键排障包要采集什么?
我把输出固定成一个标准目录结构:
- 系统信息:OS 版本、补丁、启动项
- 网络信息:ipconfig、路由、代理、DNS 缓存
- 事件日志:System / Application 最近 N 小时导出
- 交付:自动打包 zip + 生成 summary.txt 摘要
- 可靠性:单步失败不退出,记录 run.log 继续跑

3、我怎么写 Prompt:我不用“请帮我写脚本”,我用“验收清单”
我现在给 Claude Code 下指令,核心就一句话:先写验收标准,再让它写代码。
因为 AI 最怕“模糊”,我最怕“不可交付”。
下面这段是我常用的 Prompt 模板(我直接第一人称写法,你可以原封不动抄):
你是企业桌面支持自动化专家。
我需要一个 PowerShell 的“一键排障包”脚本,要求如下:
1) 参数:
-Hours (默认24):采集最近N小时事件日志
-OutDir (默认C:\Temp\Triage):输出目录
-Zip(开关):是否打包zip
2) 输出目录结构必须是:
OutDir\
summary.txt
sys\systeminfo.txt
sys\hotfix.txt
sys\startup.txt
net\ipconfig.txt
net\route.txt
net\proxy.txt
net\dns_cache.txt
logs\System.evtx
logs\Application.evtx
run.log
3) 可靠性:
- 所有关键步骤写入 run.log
- 单步失败不退出:记录错误并继续
4) 安全边界:
- 不上传任何数据到外网
- 不修改系统配置
5) 交付:
- 先给我设计思路和目录结构
- 再给完整脚本
- 再给 README(如何运行/输出说明/常见问题)
请先输出MVP版本(最小可用),再建议增强项。
我会额外强调一句: “只做最小改动,不要随意重构目录结构。”
这样我后续迭代不会被它“越改越花”。

4、核心代码:我最终交付给同事的 PowerShell 版本(可直接运行)
✅ 说明:这是我“最小可用版”(MVP)。你发布时可以配一个 GitHub 仓库(加分项),但即使只贴文章里也能复现。
<#
.SYNOPSIS
Triage Pack - 一键排障包(系统/网络/事件日志采集 + 可选Zip打包)
.EXAMPLE
.\triage.ps1 -Hours 24 -OutDir C:\Temp\Triage -Zip
#>
param(
[int]$Hours = 24,
[string]$OutDir = "C:\Temp\Triage",
[switch]$Zip
)
$ErrorActionPreference = "Continue"
$start = Get-Date
function Ensure-Dir([string]$p) {
if (-not (Test-Path $p)) { New-Item -ItemType Directory -Path $p -Force | Out-Null }
}
function Log([string]$msg) {
$line = "[{0}] {1}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $msg
$line | Out-File -FilePath $global:RunLogPath -Append -Encoding UTF8
}
function Try-Run([string]$title, [scriptblock]$action) {
try { Log "START: $title"; & $action; Log "DONE : $title" }
catch { Log "ERROR: $title -> $($_.Exception.Message)" }
}
Ensure-Dir $OutDir
$sysDir = Join-Path $OutDir "sys"
$netDir = Join-Path $OutDir "net"
$logDir = Join-Path $OutDir "logs"
Ensure-Dir $sysDir; Ensure-Dir $netDir; Ensure-Dir $logDir
$global:RunLogPath = Join-Path $OutDir "run.log"
"--- Triage Pack Run Log ---" | Out-File $global:RunLogPath -Encoding UTF8
$summaryPath = Join-Path $OutDir "summary.txt"
Try-Run "Write summary header" {
$os = Get-CimInstance Win32_OperatingSystem
$cs = Get-CimInstance Win32_ComputerSystem
@(
"Triage Pack Summary"
"==================="
"ComputerName: $env:COMPUTERNAME"
"User : $env:USERNAME"
"OS : $($os.Caption) $($os.Version)"
"BootTime : $([Management.ManagementDateTimeConverter]::ToDateTime($os.LastBootUpTime))"
"Model : $($cs.Manufacturer) $($cs.Model)"
"Hours : $Hours"
"OutDir : $OutDir"
"StartTime : $start"
) | Out-File $summaryPath -Encoding UTF8
}
Try-Run "Collect systeminfo" {
systeminfo | Out-File (Join-Path $sysDir "systeminfo.txt") -Encoding UTF8
}
Try-Run "Collect hotfix" {
Get-HotFix | Sort-Object InstalledOn -Descending | Out-String |
Out-File (Join-Path $sysDir "hotfix.txt") -Encoding UTF8
}
Try-Run "Collect startup items" {
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User |
Format-Table -Auto | Out-String |
Out-File (Join-Path $sysDir "startup.txt") -Encoding UTF8
}
Try-Run "Collect IP config" {
ipconfig /all | Out-File (Join-Path $netDir "ipconfig.txt") -Encoding UTF8
}
Try-Run "Collect routes" {
route print | Out-File (Join-Path $netDir "route.txt") -Encoding UTF8
}
Try-Run "Collect proxy" {
netsh winhttp show proxy | Out-File (Join-Path $netDir "proxy.txt") -Encoding UTF8
}
Try-Run "Collect DNS cache" {
ipconfig /displaydns | Out-File (Join-Path $netDir "dns_cache.txt") -Encoding UTF8
}
Try-Run "Export event logs (System/Application)" {
$ms = [int64]$Hours * 60 * 60 * 1000
$systemEvtx = Join-Path $logDir "System.evtx"
$appEvtx = Join-Path $logDir "Application.evtx"
wevtutil epl System $systemEvtx /q:"*[System[TimeCreated[timediff(@SystemTime) <= $ms]]]"
wevtutil epl Application $appEvtx /q:"*[System[TimeCreated[timediff(@SystemTime) <= $ms]]]"
}
$end = Get-Date
$cost = [int]($end - $start).TotalSeconds
Try-Run "Append summary footer" {
@("", "EndTime : $end", "Cost(s) : $cost") | Out-File $summaryPath -Append -Encoding UTF8
}
if ($Zip) {
Try-Run "Zip output" {
$zipPath = "$OutDir.zip"
if (Test-Path $zipPath) { Remove-Item $zipPath -Force }
Compress-Archive -Path (Join-Path $OutDir "*") -DestinationPath $zipPath -Force
Log "ZIP: $zipPath"
}
}
Write-Host "✅ Done. Output: $OutDir"
if ($Zip) { Write-Host "✅ Zip : $OutDir.zip" }
Write-Host "⏱ Cost : $cost s"

5、我如何对比效率:传统方式 vs Claude Code(我的计时口径)
为了写得更“实战”,我自己做了一个简单计时:
从“开始做需求”到“同事可直接拿去跑”的时间。
| 阶段 | 我自己传统写(分钟) | 我用 Claude Code(分钟) | 我的体感 |
|---|---|---|---|
| 把需求拆成验收清单 | 20 | 10 | Claude 会提醒边界条件 |
| 生成脚本骨架 | 40 | 8 | 参数/目录/日志一次到位 |
| 补异常/日志/README | 60 | 12 | 这部分提效最明显 |
| 自测&修 bug | 40 | 20 | 仍需要我把关 |
| 合计 | 160 | 50 | 约 3 倍提效 |
我的结论非常明确: 提效不是因为 AI 会写代码,而是它把“工程化交付”补齐得更快。

6、我怎么迭代修 bug:我把“事实”喂给 Claude Code,让它做“最小改动”
我修 AI 代码时,只做一件事:把日志/报错/复现条件贴给它,并要求“最小改动”。
6.1 最常用的修复指令
下面是 run.log 报错片段(原样粘贴):
xxx
请只做最小改动修复,不要改目录结构,并说明原因。
6.2 我会让它补“自检项”,减少后续反复沟通
请增加 -Diagnose 开关:检测管理员权限、输出目录权限、wevtutil 可用性;
把检测结果写到 summary.txt,并且失败时脚本不要直接退出。

7、我用 Mermaid 画出自己的 Claude Code 工作流(我每次都按这个走)

8、我踩过的坑(写出来更像“实战文章”,也更容易拿高分)
-
坑 1:能跑 ≠ 可交付
我一开始拿到代码就满足了,结果同事用时各种问。后来我把交付物写死:run.log / summary.txt / README / 目录结构,效果立竿见影。 -
坑 2:AI 容易“过度重构”
我只想修一个小 bug,它可能顺手把结构全改了。我的解决办法就是固定一句: “只做最小改动,不要重构目录结构。” -
坑 3:权限不足导致日志导出失败
我要求“失败继续跑”,至少把系统/网络信息采集出来,这样也能支持第一轮定位。
❓FAQ(我自己最常被问的 6 个问题)
Q1:我没有编程基础,Claude Code 也能用吗?
A:能。我建议你从“写验收清单”开始,你不需要会写所有代码,但你要会判断结果对不对。
Q2:我怎么让它输出更符合我想要的结构?
A:把“目录结构”“文件名”“必须产出什么”写死,这是最有效的约束。
Q3:Claude Code 会取代程序员吗?
A:我认为短期不会。它会吃掉重复劳动,但“定义正确/判断风险/验收交付”依然是人最核心的价值。
Q4:脚本安全怎么保证?
A:我会在 Prompt 里明确“不上传、不改系统配置”,并且我会人工过一遍脚本里是否有敏感命令。
Q5:怎么提高这类征文的评分?
A:我会做到三点:主题紧扣、结构清晰、可复现。最好再配一个仓库链接和运行截图。
Q6:这个脚本还能怎么增强?
A:我计划后面加:驱动版本采集、性能计数器采样、关键注册表导出、WMI 快照,以及自带“脱敏打包”。

9、结语:我眼里的“AI 编程效率”到底是什么?
对我来说,Claude Code 不是“替我写代码”,而是让我把时间花在更值钱的地方: 我把“写代码”变成“定义正确 + 快速验收 + 快速交付”。
如果你也是做开发、做运维、做桌面支持的,我非常建议你试试这种工作流:先写验收清单,再让 AI 产出,再用日志和复现条件做迭代。你会发现效率提升真的不是一点点。
更多推荐


所有评论(0)