一键导入
lina-perf-audit
通过 make db.init/mock 重置数据库、重启服务、安装并启用所有内置插件、准备压测数据,并启动并发子代理; 通常需要几十分钟到数小时,且会消耗大量 Token。不得从其他技能、CI、定时任务、 Git 钩子或模糊的性能请求中触发。 必须用户手动触发,禁止自动触发该技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
通过 make db.init/mock 重置数据库、重启服务、安装并启用所有内置插件、准备压测数据,并启动并发子代理; 通常需要几十分钟到数小时,且会消耗大量 Token。不得从其他技能、CI、定时任务、 Git 钩子或模糊的性能请求中触发。 必须用户手动触发,禁止自动触发该技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
手动触发:将主仓库与 apps/lina-plugins 对齐最新 main 后, 按提示在两侧各建独立分支;分支就绪后继续处理提示词中的后续请求。 必须用户手动触发,禁止自动触发该技能。
用于处理用户对已有实现的反馈分诊与执行闭环:先判断是否需要纳入 OpenSpec 活跃变更或新建变更,再完成根因分析、实现、验证和必要测试。凡是用户针对已有实现反馈 Bug、缺陷、改进点、建议或实现遗漏,即使没有明确提到“反馈”或 OpenSpec,也必须使用本技能。
用于审查 LinaPro OpenSpec 工作流中的代码变更和规范合规性。在完成 /opsx:apply 任务、 完成 lina-feedback 反馈修复、执行 /opsx:archive 归档前必须使用;在用户要求代码审查、 规范合规检查,或明确调用 /lina-review 时也必须使用。
手动触发:为 LinaPro 主仓库及 apps/lina-plugins 子模块完成提交、PR 前 rebase、推送、创建 PR, 主仓 CI 修复回路,以及 PR 合并后恢复原始分支并同步 main。禁止自动触发。
审查 LinaPro 社区 GitHub Issues,并按项目规范和源码实现分类处理。 必须用户手动触发,禁止自动触发该技能。
先执行 lina-openspec-archive-changes 归档活跃变更,再执行 lina-openspec-archive-consolidate 做归档摘要。 必须用户手动触发,禁止自动触发。
| name | lina-perf-audit |
| description | 通过 make db.init/mock 重置数据库、重启服务、安装并启用所有内置插件、准备压测数据,并启动并发子代理; 通常需要几十分钟到数小时,且会消耗大量 Token。不得从其他技能、CI、定时任务、 Git 钩子或模糊的性能请求中触发。 必须用户手动触发,禁止自动触发该技能。 |
使用此技能对 apps/lina-core 和 apps/lina-plugins 下的所有内置插件进行全面的 LinaPro 后端 API 审计。审计内容包括 N+1 查询、缺少索引、无限制的列表响应、重复读取、可合并的 SQL 调用、循环中的阻塞操作,以及读/查询端点中执行了 INSERT、 UPDATE、DELETE、REPLACE、TRUNCATE 或 ALTER 等写入 SQL 的问题。此技能仅生成报告和问题卡片,不修复生产代码。
此技能为纯 Markdown 格式,以便 Claude Code、Codex 及其他 AI 编码工具均可读取。
交互语言:与用户交互的内容语言以用户上下文使用的语言为准,用户使用英文则使用英文,用户使用中文则使用中文。
此技能会对本地开发环境产生破坏性影响,且运行成本较高。它会重置数据库、重新加载模拟数据、重启服务、安装并启用所有内置插件、写入临时审计日志、运行多个子代理,并可能消耗大量 Token 预算。
仅在用户明确要求全面审计时才继续执行,例如:
run lina-perf-audit执行 LinaPro 性能审计对所有后端 API 进行全面性能审计使用性能审计技能检查所有后端 API 的 N+1 问题对于模糊请求,如 API 好像有点慢、性能怎么样 或 检查接口性能,应先请求用户确认。确认消息中必须提及数据库重置、服务重启、耗时、子代理扇出和 Token 成本。在确认前,不得运行 make stop、make db.init、make db.mock、setup-audit-env.sh、prepare-builtin-plugins.sh 或 stress-fixture.sh。
lina-perf-audit 或要求运行完整的 LinaPro API 性能审计。lina-core 和内置插件进行系统性后端 API 审计。temp/lina-perf-audit/<run-id>/ 下生成运行报告,并在 perf-issues/ 下生成持久化问题卡片。lina-review、lina-feedback 或 lina-e2e)触发。这些技能可以建议用户手动运行 lina-perf-audit,但不得自行调用。仅在需要时加载以下文件:
references/sub-agent-prompt.md:阶段 1 子代理的提示模板,包括端点或小型模块分片。references/severity-rubric.md:HIGH / MEDIUM / LOW 分级标准和反模式签名。references/report-template.md:audits/<module>.md、SUMMARY.md 和 meta.json 模板。references/issue-card-template.md:持久化 perf-issues/*.md 问题卡片模板。references/fingerprint-rule.md:精确的指纹生成、去重、更新和跨运行规则。确定性的辅助脚本维护在此技能目录下的 scripts/ 中。从仓库根目录运行,路径格式如 bash .agents/skills/lina-perf-audit/scripts/scan-endpoints.sh ...。不要将这些脚本复制到 hack/ 或在技能目录外维护第二套脚本;技能目录是审计工作流的所有权边界。
严格按三个阶段运行审计。
YYYYMMDD-HHMMSS 格式的唯一 run_id,并设置 run_dir=temp/lina-perf-audit/<run_id>。make stop。make db.init confirm=init rebuild=true 和 make db.mock confirm=mock 重置本地数据。bash .agents/skills/lina-perf-audit/scripts/setup-audit-env.sh --run-id <run_id>,修补审计日志配置、启动后端、等待就绪并获取 admin Token。bash .agents/skills/lina-perf-audit/scripts/prepare-builtin-plugins.sh --run-dir <run_dir>,发现、同步、安装、启用所有内置插件并加载模拟数据。bash .agents/skills/lina-perf-audit/scripts/stress-fixture.sh --run-dir <run_dir>。bash .agents/skills/lina-perf-audit/scripts/scan-endpoints.sh --run-dir <run_dir>,从宿主和插件 API DTO 生成 catalog.json。bash .agents/skills/lina-perf-audit/scripts/probe-fixtures.sh --run-dir <run_dir>,生成 fixtures.json 并对不可达的声明路由快速失败。meta.json 中,原因为 no backend API。无论成功或失败,都必须通过 bash .agents/skills/lina-perf-audit/scripts/restore-audit-env.sh --run-dir <run_dir> 恢复临时日志设置并停止服务。
使用子代理执行端点审计任务。默认为 catalog.json 中的每个模块分配一个子代理。如果模块过大无法在单个提示中处理,将其拆分为端点分片或小型模块分片;每个子代理提示必须保持在 5KB 以下,且仅包含其分配的端点子集。
每个子代理接收:
moduleendpoints[]fixtureslog_pathtokenrun_dir每个子代理串行调用其分配的端点,读取 GoFrame Trace-ID 响应头,在 server.log 中搜索匹配的 SQL 行,检查相关的控制器/服务源码,对发现进行分类,并在 temp/lina-perf-audit/<run-id>/audits/ 下编写一个审计 Markdown 文件。对于每个 GET/读取/查询端点,子代理还必须验证请求追踪中不包含写入 SQL 语句(INSERT、UPDATE、DELETE、REPLACE、TRUNCATE、ALTER、DROP 或 CREATE)。在读取请求中观察到写入 SQL 即为发现,即使端点响应很快也是如此,除非追踪中同时包含读取 SQL 且每个写入语句仅操作 sys_online_session 和/或 plugin_monitor_operlog。
如果 Trace-ID 不可用,子代理必须使用按调用时间窗口加请求 URL 的回退搜索方式,并将证据标记为 trace ID unavailable, evidence quality reduced。不得仅因 Trace-ID 缺失而跳过端点。
启动阶段 1 前,加载 references/sub-agent-prompt.md 作为基础模板。
bash .agents/skills/lina-perf-audit/scripts/aggregate-reports.sh --run-dir <run_dir>。audits/*.md,将结果合并到 temp/lina-perf-audit/<run-id>/SUMMARY.md,并根据 references/severity-rubric.md 审查报告严重性,将发现分类为 HIGH、MEDIUM 和 LOW。perf-issues/<severity>-<module>-<slug>.md 下为每个发现生成或更新一张持久化问题卡片。references/fingerprint-rule.md 按指纹对卡片进行去重。perf-issues/INDEX.md,按严重性排列所有 open 和 in-progress 状态的卡片。meta.json,包含开始/结束时间、Git 提交、压力测试数据状态、子代理数量、子代理状态、跳过的插件、日志设置和恢复结果。SUMMARY.md 使用仓库相对路径链接到每张新建或更新的问题卡片。temp/lina-perf-audit/<run-id>/ 是每次运行的快照。perf-issues/ 是跨运行的持久化积压列表,不得放在 temp/ 下。
子代理必须处理破坏性端点,同时不损坏共享的审计数据。
autonomous fixture completed, shared data not polluted。SKIPPED: no matching create endpoint, manual follow-up required。使用三个严重性级别:
HIGH:列表/详情中存在 N+1 问题且有源码证据、大数据量表缺少索引、非批量端点超过 1 秒、循环中存在阻塞的远程/文件/事务操作,或任何 GET/读取/查询端点的请求追踪中执行了非运维性写入 SQL。MEDIUM:小样本 N+1、缺少分页、重复读取相同数据,或多个 SELECT 调用可通过 JOIN 或 WHERE IN 合并。LOW:SQL 次数略高但查询有索引且快速、可在应用层过滤的内容可下推到数据库,或仅在静态分析中发现的风险。每个发现必须包含方法和路径、模块、Trace ID 或回退标记、SQL 次数、适用时的写入 SQL 次数、关键 SQL 片段、相对源文件和行号,以及至少一条具体的改进建议。
GET 端点以及描述为列表、查询、树、选项、计数、健康检查、当前状态或详情的端点应为只读。其追踪的 SQL 不得包含写入操作。检查范围为首个有效 Token 为 INSERT、UPDATE、DELETE、REPLACE、TRUNCATE、ALTER、DROP 或 CREATE 的 SQL 语句。
sys_online_session 和/或 plugin_monitor_operlog 且同时读取数据,将该会话心跳或操作日志写入视为预期的运维性副作用。仅在模块审计文件中记录为 PASS 说明,不要为此生成发现、汇总违规或 perf-issues/ 卡片。HIGH,反模式签名前缀为 read-write-side-effect。LOW 并标注仅静态分析,不要伪造运行时证据。每次运行输出:
temp/lina-perf-audit/<run-id>/
catalog.json
fixtures.json
server.log
audits/<module-or-shard>.md
SUMMARY.md
meta.json
持久化问题卡片:
perf-issues/
HIGH-<module>-<slug>.md
MEDIUM-<module>-<slug>.md
LOW-<module>-<slug>.md
INDEX.md
运行报告使用 references/report-template.md,问题卡片使用 references/issue-card-template.md。
每个性能问题对应一张持久化 Markdown 卡片。阶段 2 负责所有卡片的创建和更新。
perf-issues/<severity>-<module>-<slug>.md,状态为 open。last_seen_run、递增 seen_count、追加历史记录,不创建重复卡片。fixed 或 obsolete 且问题再次出现:将状态改回 open 并追加回归历史记录。in-progress:保持状态并更新观察字段。perf-issues/INDEX.md。问题描述、复现方式、证据、改进方案 和 历史记录。perf-issues/INDEX.md 标题必须使用中文编写。API 路径、SQL 片段、Trace ID、指纹、frontmatter 字段名和状态枚举值保持不变。允许的状态为 open、in-progress、fixed 和 obsolete。此技能不得引入超出这些字段更新的自动状态机。
SUMMARY.md 必须使用仓库相对路径链接到当前运行中创建或更新的所有问题卡片。run_id 和 temp/lina-perf-audit/<run-id>/audits/<module-or-shard>.md。apps/lina-core/internal/service/user/user.go:142。perf-issues/。