在准备环境前提交次全部更改。
This commit is contained in:
374
docs/migrate/oldworkspace-kiro-agent-config-summary.md
Normal file
374
docs/migrate/oldworkspace-kiro-agent-config-summary.md
Normal file
@@ -0,0 +1,374 @@
|
||||
# Kiro Agent 配置总览
|
||||
|
||||
> 生成日期:2026-02-15 | 适用仓库:NeoZQYY Monorepo
|
||||
|
||||
本文档完整记录当前 `.kiro/` 目录下所有 Agent 相关配置(Hooks、Steering、Skills、MCP、自定义 Agent),说明各组件的作用、协作关系,以及为节省上下文开支所做的优化设计。
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [整体架构概览](#1-整体架构概览)
|
||||
2. [Hooks(事件钩子)](#2-hooks事件钩子)
|
||||
3. [Steering(引导文件)](#3-steering引导文件)
|
||||
4. [Skills(技能)](#4-skills技能)
|
||||
5. [自定义 Agent(子代理)](#5-自定义-agent子代理)
|
||||
6. [MCP(Model Context Protocol)](#6-mcpmodel-context-protocol)
|
||||
7. [辅助脚本](#7-辅助脚本)
|
||||
8. [上下文优化策略](#8-上下文优化策略)
|
||||
9. [组件协作流程图](#9-组件协作流程图)
|
||||
|
||||
---
|
||||
|
||||
## 1. 整体架构概览
|
||||
|
||||
```
|
||||
用户 Prompt
|
||||
│
|
||||
├─→ [promptSubmit] audit-flagger.ps1 ← 判定是否高风险(写 .audit_state.json)
|
||||
├─→ [promptSubmit] prompt_audit_log.ps1 ← 记录 Prompt-ID + 原文到独立日志文件
|
||||
│
|
||||
▼
|
||||
Kiro 主对话(Agent 执行)
|
||||
│ ← Steering 文件注入上下文(always / fileMatch / manual 三种模式)
|
||||
│ ← Skills 按需激活(由 Agent 或 /audit 子代理调用)
|
||||
│ ← MCP 工具按需调用(Postgres / Git / Filesystem / Playwright / OpenAPI)
|
||||
│
|
||||
▼
|
||||
[agentStop] audit-reminder.ps1
|
||||
│ ← 检查 .audit_state.json,若有待审计则提醒(15 分钟限频)
|
||||
│
|
||||
▼
|
||||
用户手动触发 /audit
|
||||
│
|
||||
▼
|
||||
audit-writer 子代理(独立执行)
|
||||
├─→ 调用 Skills:change-annotation-audit / steering-readme-maintainer / bd-manual-db-docs
|
||||
├─→ 写审计产物(docs/audit/changes/、AI_CHANGELOG、CHANGE 注释、docs/database/)
|
||||
├─→ 刷新审计一览表(gen_audit_dashboard.py)
|
||||
└─→ 清除 .audit_state.json 待审计标记
|
||||
```
|
||||
|
||||
核心设计理念:**主对话专注编码,审计写入卸载到子代理**,避免重型文档操作膨胀主对话上下文。
|
||||
|
||||
---
|
||||
|
||||
## 2. Hooks(事件钩子)
|
||||
|
||||
共 7 个 Hook,位于 `.kiro/hooks/`。按启用状态分为两组:
|
||||
|
||||
### 2.1 已启用(4 个 runCommand + 1 个 askAgent)
|
||||
|
||||
| Hook 文件 | 事件类型 | 动作类型 | 功能说明 |
|
||||
|---|---|---|---|
|
||||
| `audit-flagger.kiro.hook` | `promptSubmit` | `runCommand` | 每次提交 prompt 时运行 `audit_flagger.ps1`,基于 `git status` 判定是否存在高风险改动,结果写入 `.kiro/.audit_state.json`。不触发 LLM。 |
|
||||
| `prompt-audit-log.kiro.hook` | `promptSubmit` | `runCommand` | 每次提交 prompt 时运行 `prompt_audit_log.ps1`,在 `docs/audit/prompt_logs/` 生成独立日志文件(含 Prompt-ID、时间戳、原文),同时更新 `.kiro/.last_prompt_id.json`。不触发 LLM。 |
|
||||
| `audit-reminder.kiro.hook` | `agentStop` | `runCommand` | Agent 执行结束时运行 `audit_reminder.ps1`,若检测到待审计状态则通过 stderr 提醒用户运行 `/audit`。15 分钟限频,避免频繁打扰。 |
|
||||
| `run-audit-writer.kiro.hook` | `userTriggered` | `askAgent` | 用户手动触发(`/audit`),启动 `audit-writer` 子代理执行完整审计流程:变更影响审查 → 文档同步 → 审计落盘 → 刷新一览表 → 清除待审计标记。仅返回极短回执。 |
|
||||
| `db-docs-sync.kiro.hook` | `userTriggered` | `askAgent` | 用户按需触发,对比 Postgres 实际 schema 与 `docs/database/` 文档,自动补全或更新缺失/过时的表结构说明。 |
|
||||
|
||||
### 2.2 已禁用(2 个 askAgent)
|
||||
|
||||
| Hook 文件 | 事件类型 | 禁用原因 |
|
||||
|---|---|---|
|
||||
| `change-impact-review.kiro.hook` | `agentStop` | 原设计为每次 agentStop 自动执行变更影响审查 + 审计落盘。因上下文膨胀严重,已改为手动 `/audit` 子代理流程替代。 |
|
||||
| `db-schema-doc-enforcer.kiro.hook` | `fileEdited`(`*.sql` 等) | 原设计为保存 SQL 文件时自动更新 DB 文档。因频繁触发导致上下文浪费,已改由 `/audit` 流程统一处理。 |
|
||||
|
||||
### 2.3 设计要点
|
||||
|
||||
- **promptSubmit 钩子全部使用 `runCommand`**(纯 Shell),不消耗 LLM token
|
||||
- **agentStop 提醒也是 `runCommand`**,仅通过 stderr 输出一行文字
|
||||
- **重型 askAgent 操作全部改为 `userTriggered`**,由用户主动决定何时执行
|
||||
- 两个曾经自动触发的 askAgent Hook 已禁用,避免每次交互都产生大量审计写入
|
||||
|
||||
---
|
||||
|
||||
## 3. Steering(引导文件)
|
||||
|
||||
共 8 个文件,位于 `.kiro/steering/`。通过 front-matter 中的 `inclusion` 字段控制注入时机:
|
||||
|
||||
### 3.1 始终注入(`inclusion: always`)— 5 个
|
||||
|
||||
| 文件 | 内容摘要 | Token 开销 |
|
||||
|---|---|---|
|
||||
| `governance.md` | 审计治理规则:何时必须审计、执行方式(自动判定 + 半自动执行)、审计产物清单 | 小 |
|
||||
| `language-zh.md` | 语言规范:输出简体中文、UTF-8 编码、注释只写"为什么" | 极小 |
|
||||
| `product.md` | 产品概述:ETL/后端/小程序/GUI 功能、业务上下文、主要入口 | 中 |
|
||||
| `structure-lite.md` | 项目结构精简版:顶层目录 + 关键模块边界 + 架构要点摘要 | 中 |
|
||||
| `tech.md` | 技术栈:依赖、数据库、测试、常用命令、配置体系 | 中 |
|
||||
|
||||
### 3.2 条件注入(`inclusion: fileMatch`)— 1 个
|
||||
|
||||
| 文件 | 匹配模式 | 内容摘要 |
|
||||
|---|---|---|
|
||||
| `db-docs.md` | `**/migrations/**`, `**/*.sql`, `**/*schema*.*`, `**/*ddl*.*`, `**/*.prisma` | 数据库文档规则:变更时必须同步 `docs/database/`,含最低文档要求 |
|
||||
|
||||
### 3.3 手动加载(`inclusion: manual`)— 1 个
|
||||
|
||||
| 文件 | 内容摘要 |
|
||||
|---|---|
|
||||
| `steering-readme-maintainer.md` | 变更影响审查快速清单(作为 `/slash command` 参考),详细流程指向同名 Skill |
|
||||
|
||||
### 3.4 按需自动加载(`inclusion: auto`)— 1 个
|
||||
|
||||
| 文件 | 名称 | 内容摘要 |
|
||||
|---|---|---|
|
||||
| `structure.md` | `structure-full` | 完整目录树 + 架构模式详解。仅在大型重构、模块迁移或跨子系统变更时加载 |
|
||||
|
||||
### 3.5 设计要点
|
||||
|
||||
- **`structure-lite.md`(always)vs `structure.md`(auto)**:日常对话只注入精简版(~50 行),完整目录树(~120 行)仅在需要时手动加载,节省约 60% 的结构信息 token
|
||||
- **`db-docs.md` 使用 fileMatch**:只有当上下文中出现 SQL/迁移文件时才注入,避免无关对话浪费 token
|
||||
- **`steering-readme-maintainer.md` 使用 manual**:作为快速参考,不自动注入
|
||||
|
||||
---
|
||||
|
||||
## 4. Skills(技能)
|
||||
|
||||
共 3 个 Skill,位于 `.kiro/skills/`。每个 Skill 包含 `SKILL.md`(定义)和 `assets/`(模板)。
|
||||
|
||||
### 4.1 change-annotation-audit(变更标注与审计)
|
||||
|
||||
- **触发条件**:任何实质性代码/文档修改(特别是逻辑、资金、接口、DB 改动)
|
||||
- **产出**:
|
||||
- `docs/audit/changes/<YYYY-MM-DD>__<slug>.md`(审计记录)
|
||||
- 每个被改文件内的 `AI_CHANGELOG` 条目
|
||||
- 每处逻辑变更附近的 `CHANGE` 标记注释(含 intent、assumptions、边界条件)
|
||||
- **模板**:`audit-record-template.md`、`file-changelog-templates.md`
|
||||
|
||||
### 4.2 steering-readme-maintainer(文档同步审查)
|
||||
|
||||
- **触发条件**:业务规则/ETL/API/鉴权/小程序交互等逻辑改动
|
||||
- **产出**:
|
||||
- 评估并更新 `product.md` / `tech.md` / `structure-lite.md` / `structure.md` / `README.md`
|
||||
- 输出审计友好摘要(Changed / Why / Risk / Verify)
|
||||
- **模板**:`steering-update-checklist.md`
|
||||
|
||||
### 4.3 bd-manual-db-docs(数据库文档维护)
|
||||
|
||||
- **触发条件**:DDL/迁移脚本修改(表/字段/类型/约束/索引/外键变更)
|
||||
- **产出**:
|
||||
- `docs/database/` 下的 Schema Change Log(变更日志)
|
||||
- Table Structure Doc(表结构文档更新)
|
||||
- Rollback & Verification(回滚要点 + ≥3 条验证 SQL)
|
||||
- **模板**:`schema-changelog-template.md`、`table-structure-template.md`
|
||||
|
||||
### 4.4 设计要点
|
||||
|
||||
- Skills 不会自动注入上下文,仅在被 Agent 或子代理显式调用时激活
|
||||
- 三个 Skill 形成完整的审计闭环:**代码标注** + **文档同步** + **DB 文档**
|
||||
- 主对话中不直接调用 Skill,而是由 `audit-writer` 子代理统一调度
|
||||
|
||||
---
|
||||
|
||||
## 5. 自定义 Agent(子代理)
|
||||
|
||||
### 5.1 audit-writer
|
||||
|
||||
- **位置**:`.kiro/agents/audit-writer.md`
|
||||
- **工具权限**:`read`、`write`、`shell`
|
||||
- **职责**:专职"审计收口/后处理写入",不依赖主对话上下文
|
||||
- **输入来源**:
|
||||
- `git status --porcelain` + `git diff`(本次未提交变更)
|
||||
- `.kiro/.last_prompt_id.json`(最新 Prompt-ID)
|
||||
- `docs/audit/prompt_logs/`(prompt 原文,用于溯源)
|
||||
- **执行策略**:
|
||||
1. 判断是否逻辑改动
|
||||
2. 按需调用三个 Skill
|
||||
3. 清除 `.kiro/.audit_state.json` 待审计标记
|
||||
4. 运行 `scripts/gen_audit_dashboard.py` 刷新审计一览表
|
||||
- **输出约束**:强制极短回执(done / files_written / next_step),避免审计细节淹没主对话
|
||||
|
||||
---
|
||||
|
||||
## 6. MCP(Model Context Protocol)
|
||||
|
||||
### 6.1 工作区级配置
|
||||
|
||||
文件:`.kiro/settings/mcp.json`
|
||||
|
||||
```json
|
||||
{ "mcpServers": {} }
|
||||
```
|
||||
|
||||
工作区级未定义任何 MCP 服务器(全部在用户级配置)。
|
||||
|
||||
### 6.2 用户级配置(全局)
|
||||
|
||||
文件:`~/.kiro/settings/mcp.json`
|
||||
|
||||
| 服务器名 | 命令 | 用途 | 状态 | 自动批准 |
|
||||
|---|---|---|---|---|
|
||||
| `filesystem` | `npx @modelcontextprotocol/server-filesystem` | 文件系统读写(作用域:`C:\NeoZQYY`) | 启用 | 全部 |
|
||||
| `git` | `uvx mcp-server-git@2025.12.18` | Git 操作(status/diff/commit/log 等) | 启用 | `git_status` |
|
||||
| `postgres` | `uvx postgres-mcp --access-mode=unrestricted` | PostgreSQL 数据库操作(查询/DDL/健康检查/索引分析) | 启用 | 全部 |
|
||||
| `playwright` | `npx @playwright/mcp@latest` | 浏览器自动化(截图/快照/点击/表单填写) | 启用 | 无 |
|
||||
| `openapi` | `uv tool run awslabs.openapi-mcp-server` | OpenAPI 规范交互(基于 `backend-api.json`) | 启用 | 全部 |
|
||||
| `trivy` | `trivy mcp` | 安全漏洞扫描 | 禁用 | — |
|
||||
|
||||
### 6.3 设计要点
|
||||
|
||||
- MCP 配置放在用户级而非工作区级,方便跨项目复用
|
||||
- `postgres` 使用 `unrestricted` 模式,支持 DDL 和数据操作(配合审计流程保障安全)
|
||||
- `git` 仅自动批准 `git_status`,其他操作需确认
|
||||
- `trivy` 当前禁用,预留安全扫描能力
|
||||
|
||||
---
|
||||
|
||||
## 7. 辅助脚本
|
||||
|
||||
位于 `.kiro/scripts/`,全部为 PowerShell 脚本,由 Hook 的 `runCommand` 调用。
|
||||
|
||||
| 脚本 | 调用者 | 功能 |
|
||||
|---|---|---|
|
||||
| `audit_flagger.ps1` | `audit-flagger` Hook | 解析 `git status`,匹配高风险路径(`api/`、`cli/`、`config/`、`database/`、`loaders/` 等),计算变更指纹(SHA1),写入 `.kiro/.audit_state.json` |
|
||||
| `audit_reminder.ps1` | `audit-reminder` Hook | 读取 `.audit_state.json`,若 `audit_required=true` 且距上次提醒 ≥15 分钟,则通过 stderr 输出提醒;工作树干净时自动清除标记 |
|
||||
| `prompt_audit_log.ps1` | `prompt-audit-log` Hook | 生成 Prompt-ID(`P<yyyyMMdd-HHmmss>` 格式),将 prompt 原文写入 `docs/audit/prompt_logs/prompt_log_<timestamp>.md`,更新 `.kiro/.last_prompt_id.json` |
|
||||
|
||||
### 共同特征
|
||||
|
||||
- 所有脚本使用 `Taipei Standard Time`(UTC+8)时区
|
||||
- 所有脚本在异常时静默退出(`exit 0`),绝不阻塞 prompt 提交
|
||||
- 输出编码统一 UTF-8
|
||||
- 过长 prompt(>20000 字符)自动截断,防止展开的 `#context` 污染日志
|
||||
|
||||
---
|
||||
|
||||
## 8. 上下文优化策略
|
||||
|
||||
本项目在 Agent 配置中做了多层上下文节省优化,核心目标是:**在保证审计完整性的前提下,最小化每次对话的 token 消耗**。
|
||||
|
||||
### 8.1 审计写入卸载(最大优化)
|
||||
|
||||
| 优化前 | 优化后 | 节省效果 |
|
||||
|---|---|---|
|
||||
| `change-impact-review` Hook 在每次 `agentStop` 自动触发,执行完整审计写入(含文档同步、AI_CHANGELOG、CHANGE 注释、DB 文档) | 改为 `userTriggered` + `audit-writer` 子代理,主对话仅收到极短回执 | 每次交互节省 **数千~上万 token**(审计产物的生成和写入全部在子代理独立上下文中完成) |
|
||||
|
||||
### 8.2 Hook 动作类型选择
|
||||
|
||||
| 优化点 | 说明 |
|
||||
|---|---|
|
||||
| promptSubmit 钩子全部用 `runCommand` | 纯 Shell 执行,零 LLM token 消耗 |
|
||||
| agentStop 提醒用 `runCommand` | 仅 stderr 一行文字,不触发 Agent 回复 |
|
||||
| 禁用两个自动 `askAgent` Hook | `change-impact-review` 和 `db-schema-doc-enforcer` 曾在每次交互/文件保存时触发 Agent,现已禁用 |
|
||||
|
||||
### 8.3 Steering 分层注入
|
||||
|
||||
| 策略 | 实现 | 节省效果 |
|
||||
|---|---|---|
|
||||
| 结构信息分级 | `structure-lite.md`(always,~50 行)vs `structure.md`(auto/manual,~120 行) | 日常对话节省约 60% 结构信息 token |
|
||||
| DB 规则条件注入 | `db-docs.md` 使用 `fileMatch`,仅在上下文含 SQL 文件时注入 | 非 DB 相关对话零开销 |
|
||||
| 审查清单手动加载 | `steering-readme-maintainer.md` 使用 `manual` | 仅在用户主动引用时注入 |
|
||||
| always 文件精简化 | `governance.md` 采用 Lite 版本,只保留最小硬约束 | 相比完整版节省约 70% |
|
||||
|
||||
### 8.4 Prompt 日志优化
|
||||
|
||||
| 优化点 | 说明 |
|
||||
|---|---|
|
||||
| 独立文件而非追加 | 每次 prompt 写独立文件(`prompt_log_<timestamp>.md`),避免单文件无限增长 |
|
||||
| 自动截断 | prompt 超过 20000 字符时截断,防止展开的 `#context` 污染日志 |
|
||||
| 不触发 LLM | 日志写入完全由 Shell 脚本完成 |
|
||||
|
||||
### 8.5 子代理隔离
|
||||
|
||||
| 优化点 | 说明 |
|
||||
|---|---|
|
||||
| 独立上下文 | `audit-writer` 在独立上下文中执行,不污染主对话 |
|
||||
| 自给自足 | 子代理通过 `git status/diff` + `.last_prompt_id.json` 获取信息,不依赖主对话传递 |
|
||||
| 极短回执 | 强制只返回 done / files_written / next_step,避免审计细节回流主对话 |
|
||||
|
||||
### 8.6 限频机制
|
||||
|
||||
| 机制 | 说明 |
|
||||
|---|---|
|
||||
| 审计提醒 15 分钟限频 | `audit_reminder.ps1` 记录 `last_reminded_at`,避免每次 agentStop 都提醒 |
|
||||
| 变更指纹去重 | `audit_flagger.ps1` 计算文件列表 SHA1,相同指纹不重复标记 |
|
||||
|
||||
---
|
||||
|
||||
## 9. 组件协作流程图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 用户提交 Prompt │
|
||||
└──────────┬──────────────────────────────────────────────────────┘
|
||||
│
|
||||
├──→ [Hook: promptSubmit] audit_flagger.ps1
|
||||
│ └─→ git status → 匹配高风险路径 → 写 .audit_state.json
|
||||
│
|
||||
├──→ [Hook: promptSubmit] prompt_audit_log.ps1
|
||||
│ └─→ 生成 Prompt-ID → 写 prompt_logs/ + .last_prompt_id.json
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ Kiro 主对话执行 │
|
||||
│ │
|
||||
│ 注入 Steering:governance + language-zh + product │
|
||||
│ + structure-lite + tech │
|
||||
│ + db-docs(仅当上下文含 SQL 文件) │
|
||||
│ │
|
||||
│ 可用 MCP:postgres / git / filesystem / playwright / openapi │
|
||||
│ │
|
||||
│ 可用 Skills:(通常不在主对话直接调用,由子代理调度) │
|
||||
└──────────┬──────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ [Hook: agentStop] audit_reminder.ps1 │
|
||||
│ └─→ 检查 .audit_state.json │
|
||||
│ └─→ 若 audit_required=true 且 ≥15min → stderr 提醒 │
|
||||
└──────────┬──────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼ (用户决定是否手动触发)
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ [Hook: userTriggered] /audit │
|
||||
│ └─→ 启动 audit-writer 子代理(独立上下文) │
|
||||
│ ├─→ git status/diff + .last_prompt_id.json │
|
||||
│ ├─→ Skill: change-annotation-audit │
|
||||
│ ├─→ Skill: steering-readme-maintainer │
|
||||
│ ├─→ Skill: bd-manual-db-docs(仅 DB 变更时) │
|
||||
│ ├─→ 写审计产物 → 刷新 dashboard │
|
||||
│ └─→ 清除 .audit_state.json → 返回极短回执 │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 附录:文件清单
|
||||
|
||||
```
|
||||
.kiro/
|
||||
├── agents/
|
||||
│ └── audit-writer.md # 审计子代理定义
|
||||
├── hooks/
|
||||
│ ├── audit-flagger.kiro.hook # [启用] promptSubmit → runCommand
|
||||
│ ├── audit-reminder.kiro.hook # [启用] agentStop → runCommand
|
||||
│ ├── change-impact-review.kiro.hook # [禁用] agentStop → askAgent
|
||||
│ ├── db-docs-sync.kiro.hook # [启用] userTriggered → askAgent
|
||||
│ ├── db-schema-doc-enforcer.kiro.hook # [禁用] fileEdited → askAgent
|
||||
│ ├── prompt-audit-log.kiro.hook # [启用] promptSubmit → runCommand
|
||||
│ └── run-audit-writer.kiro.hook # [启用] userTriggered → askAgent
|
||||
├── scripts/
|
||||
│ ├── audit_flagger.ps1 # 高风险判定脚本
|
||||
│ ├── audit_reminder.ps1 # 审计提醒脚本(15min 限频)
|
||||
│ └── prompt_audit_log.ps1 # Prompt 日志记录脚本
|
||||
├── settings/
|
||||
│ └── mcp.json # 工作区 MCP 配置(空)
|
||||
├── skills/
|
||||
│ ├── bd-manual-db-docs/ # DB 文档维护 Skill
|
||||
│ ├── change-annotation-audit/ # 变更标注审计 Skill
|
||||
│ └── steering-readme-maintainer/ # 文档同步审查 Skill
|
||||
├── steering/
|
||||
│ ├── db-docs.md # [fileMatch] DB 文档规则
|
||||
│ ├── governance.md # [always] 审计治理
|
||||
│ ├── language-zh.md # [always] 语言规范
|
||||
│ ├── product.md # [always] 产品概述
|
||||
│ ├── steering-readme-maintainer.md # [manual] 审查快速参考
|
||||
│ ├── structure-lite.md # [always] 项目结构精简版
|
||||
│ ├── structure.md # [auto] 完整目录树
|
||||
│ └── tech.md # [always] 技术栈
|
||||
├── .audit_state.json # 审计状态(运行时)
|
||||
└── .last_prompt_id.json # 最新 Prompt-ID(运行时)
|
||||
|
||||
~/.kiro/settings/mcp.json # 用户级 MCP 配置(6 个服务器)
|
||||
```
|
||||
Reference in New Issue
Block a user