# Taw

> **乙方/投标商视角的标书撰写**。当用户说"帮我写标书"、"写标书"、"编写标书"、"撰写标书"或"写投标章节"时触发。 **前置依赖**：必须先运行 /taa 生成招标分析报告（.md）+ 投标文件大纲（.docx）；本 skill 读取这两份产出 + 公司知识库，自动生成投标文件章节内容草稿（DOCX 格式）。 互斥提示：若用户要求生成的是**甲方招标文件**（技术规格 / 评标办法），应使用 /tpl 而非本 skill。 用户可提供具体文件路径或目录，目录时按扩展名自动匹配文件。

- Skill: `tubeliu/taw` (Agent Skill, multi-file: 27 files)
- Install (CLI): `npx skillmds@latest add tubeliu/taw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tubeliu/taw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: tubeliu (https://skillmd.com/u/tubeliu)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tubeliu/taw

---


> **跨平台兼容性 checklist**（Win / macOS / Linux）：
> 1. Python 命令名：示例用 `python3`；Windows 改 `python` 或 `py -3`
> 2. 路径自定位：用下方 §路径自定位 bash bootstrap（替代 `$SKILL_DIR` 硬编码）
> 3. 可执行检测用 `which`/`where`/`Get-Command`，避免 `command -v`
> 4. 复杂 bash heredoc / `&&` / `||` 在 Win cmd 不支持，用 Git Bash / WSL2
> 5. 路径用正斜杠 `/`

<SUBAGENT-STOP>
此技能给协调者读。**判定你是否子智能体**：当前角色定义来自 Task prompt 而非 SKILL.md 自然加载（即调用方在 Task 工具的 prompt 字段塞了 agents/<role>.md 的内容）→ 你是 subagent；跳过本 SKILL.md 工作流编排，只执行 Task prompt 给的任务。
</SUBAGENT-STOP>

## 路径自定位

**首次调用本 skill 的脚本/工具前，跑一次 bootstrap 解析 SKILL_DIR**：

```bash
SKILL_DIR=$(python3 - <<'PYEOF' 2>/dev/null
import json, os, sys
p = os.path.expanduser('~/.claude/plugins/installed_plugins.json')
if os.path.exists(p):
    d = json.load(open(p))
    for entries in d.get('plugins', {}).values():
        for e in (entries if isinstance(entries, list) else [entries]):
            if isinstance(e, dict) and '/tender-workflow/' in e.get('installPath', ''):
                print(e['installPath'] + '/skills/taw'); sys.exit(0)
PYEOF
)

# vercel CLI fallback
[ -z "$SKILL_DIR" ] && for d in ~/.cursor/skills ~/.agents/skills .cursor/skills .agents/skills; do
    [ -d "$d/tender-workflow/skills/taw" ] && SKILL_DIR="$d/tender-workflow/skills/taw" && break
    [ -d "$d/taw" ] && SKILL_DIR="$d/taw" && break
done

# 用户预设
[ -z "$SKILL_DIR" ] && [ -n "${TENDER_WORKFLOW_PLUGIN_PATH:-}" ] && SKILL_DIR="$TENDER_WORKFLOW_PLUGIN_PATH/skills/taw"

# dev 态
[ -z "$SKILL_DIR" ] && [ -d "./tender-workflow/skills/taw" ] && SKILL_DIR="$(pwd)/tender-workflow/skills/taw"

if [ -z "$SKILL_DIR" ]; then
    echo "[ERROR] 找不到 tender-workflow/taw skill 安装位置" >&2
    echo "请：export TENDER_WORKFLOW_PLUGIN_PATH=/path/to/tender-workflow" >&2
    exit 1
fi
```

bootstrap 失败时不重试，把 stderr 转述给用户并请求 `/plugin install tender-workflow@presales-skills` 或手工 export。

---

## 角色定义

你是 **{VENDOR_NAME} 售前投标文案专家**，精通容器云 / Kubernetes / DevOps / 微服务 / AI（MLOps、大模型、Agent）/ 国产化适配 / 投标文件撰写。

任务：基于 taa 的**招标分析报告 + 投标文件大纲**，结合公司知识库，生成详细、具体、可落地的投标章节草稿。要求：内容深度足够直接用于汇报/投标，语言正式专业，结构清晰使用标题/层级/要点。每章节必须详细展开，技术处写清原理 / 流程 / 组件 / 优势。

---

## 输入与输出

```bash
/taw --outline <大纲.docx|目录> --report <分析报告.md|目录> --chapter <章节号> [选项...]
/taw <目录> --chapter <章节号>           # 简写
/taw --set-kb <知识库路径>
/taw --build-kb-index
/taw -h | --help
```

`--chapter` 支持：`一` / `1.3` / `all` / `1.1-1.9` / `1.1到1.9` / `1.1至1.9`。

完整参数表 + 帮助文本：Read `$SKILL_DIR/references/cli-help.md`。

**输出**：DOCX 至 `./drafts/`：
- 多章模式（生产，推荐）：`<起始>-<结束>_合并.docx`（始终用小数点，如 `1.1-1.11_合并.docx`）
- 单章模式（仅本地预览/测试）：`<章节号>_<章节名>.docx`

> **单章节模式说明（重要）**：单章 standalone 输出时 Word 多级列表自动编号会从"1."起，不会显示"1.3"——这是 Word 自动编号在单文档内从 1 起的设计。**正式投标必须用多章模式**（`--chapter all` 或范围），让编号自然连续。

**配置文件**：`~/.config/tender-workflow/config.yaml`
```yaml
localkb:
  path: /path/to/knowledge-base
anythingllm:
  workspace: <slug-or-uuid>
```

**KB 路径解析优先级**：`--kb` 临时覆盖 > 配置 `localkb.path` > 首次运行引导。

---

## Phase 0：输入加载与验证

**Step 0：帮助参数检测**

含 `-h` / `--help` → 输出 `references/cli-help.md` 中的帮助块，退出。

**Step 1-7：preflight 检测**（细节见 `references/preflight.md`）：

- Step 1：输出目录初始化（`./drafts/`）
- Step 1.5：搜索工具检测（`MCP_TOOLS_AVAILABLE`、`MCP_TOOL_PRIORITY`）—— 读 `mcp_search.priority` 配置（FQN 列表，如 `["mcp__minimax__web_search"]`），逐项探活；空列表自动兜底 `["WebSearch"]`。**首次调用某个 MCP 工具**（如 `mcp__minimax__web_search`）时 Claude Code 会弹一次 permission prompt（"允许 taw 调 mcp__minimax__web_search 吗"），允许后该 project 持久 ok——这是 Claude Code 安全模型设计，不是 bug
- Step 1.6：AnythingLLM 检测（`ANYTHINGLLM_AVAILABLE`、`ANYTHINGLLM_WORKSPACE`）+ 降级矩阵
- Step 1.7：draw.io 检测（`DRAWIO_AVAILABLE`）
- Step 2：`--set-kb <路径>` → 写配置后退出
- Step 2b：`--build-kb-index` → 调 `kb_indexer.py` 后退出
- Step 3：`OUTLINE_PATH` / `REPORT_PATH` 解析（显式参数 vs 简写目录）
- Step 4：`--vendor` / `--search-tool` / `--query` / `--image-source` / `--l{2,3,4,5}-words` / `--l{2,3}-images` / `--kb-source` 解析
- Step 5：`--chapter` → `CHAPTERS_TO_WRITE` 列表

**Step 6：文件加载**（细节见 `references/io-formats.md`）：

- 大纲 .docx → python-docx 提层级 + 文本，构建 `OUTLINE_SUBSECTIONS[章节号]`（含 `numbering`/`title`/`depth`，最深 5 级）
- 报告 .md → Read，按模块标题模式（M1-M7）定位
- KB 检测 → 读 `kb_catalog.yaml`（若 `NO_KB_FLAG=false`）

**Step 7：输入验证 + 启动确认**（必含 KB 来源统计、搜索工具状态、图片来源、目标章节）。报告不存在 → 提示用户先跑 `/taa`。

---

## Phase 1：撰写准备

### 1.1 章节模板加载 + 评分映射

详见 `references/templates.md`。要点：

1. Read `prompts/article_core.yaml` + `prompts/chapter_type_matcher.yaml`
2. 大纲提取目标章节标题 + 子节列表（写入 `OUTLINE_SUBSECTIONS`）
3. 章节类型语义匹配 → `business / technical / service / commitment`
4. Read 对应章节模板（`prompts/article_templates/business.yaml` / `technical.yaml` / `service.yaml` / `commitment.yaml`）→ 提取 word_count / content_elements / kb_priority / image_types / scoring_alignment（`WORD_OVERRIDE` 覆盖）
5. Read `prompts/chapter_image_quota.yaml` → 取 quota / required / image_types（`IMAGE_OVERRIDE` 覆盖）
6. M4 评分映射 → 标 ≥10 分项为重点

### 1.2 M7 撰写指导提取

从 M7 提取与目标章节相关：撰写优先级 P1/P2/P3、关键词清单、写作策略、差异化亮点、红线（⛔ / ⚠️）。

### 1.3 知识库检索（强制步骤，不可跳过）

详见 `references/kb-retrieval.md`。要点：

- KB + 互联网**并行**执行（不等 KB 失败再 Web）
- `--kb-source` 决定来源组合：`auto` 全启 / `local` 仅本地 / `anythingllm` 仅 AnythingLLM / `none` 跳 KB
- 多节模式触发全局知识池（≤ 2 次 WebSearch 不计入每节配额）
- 优先层 A：Local-KnowledgeBase Markdown 图文一体化（同时拿文字 + `MATCHED_IMAGES`）
- 优先层 B：AnythingLLM 语义检索（`score >= 0.7`，最多 5 条）
- 第四层：互联网检索（按 `SEARCH_TOOL_OVERRIDE` 选工具，VENDOR_SITES 定向 + 不限域补充）
- 搜索次数：`NO_KB_FLAG=true` ≤ 4 / 章节，否则 ≤ 3
- 搜索结果 → Read `prompts/fact_extraction_rules.yaml` 提 `WEB_FACTS` 表
- **强制检查**：Phase 1.4 输出必须含 KB 来源统计；KB + AnythingLLM 全 ⚠️ 未使用 → 禁止进 Phase 2，重跑 Phase 1.3

### 1.4 准备确认（必含 KB 来源统计）

```
撰写准备完成：
• 相关评分项：[N] 个（重点项 [M] 个，合计 [X] 分）
• M7 关键词：[N] 个
• 章节类型：[type] → [section_type]
• 图片配额：[quota] 张（required [N]，类型 [...]）
• 知识库来源统计：
  - 配置：--kb-source = [auto/local/anythingllm/none]
  - KB 目录索引：[N] 个文档匹配 / ⚠️ 未使用（原因：未配置 / 调用失败 / 文件不存在 / entries 空 / 无匹配）
  - AnythingLLM：[N] 条 / ⚠️ 未使用
  - 互联网检索：[N] 条
  - 总计可用：[N] 条
• 图片来源：--image-source = [auto/local/drawio/ai/web/placeholder]
• 红线约束：[N] 条
```

---

## Phase 2：内容生成

逐章节按下方流程执行。所有正文写入用 `write_markdown()`（详见 `references/markdown-writing.md`）。

### 路由判断（每章独立）

```python
H3_SUBSECTIONS = [s for s in OUTLINE_SUBSECTIONS.get(章节号, []) if s['depth'] == 3]
H3_COUNT = len(H3_SUBSECTIONS)
TARGET_WORDS = WORD_OVERRIDE.get(2) or section_type_word_count
USE_PARALLEL_WRITING = (H3_COUNT >= 3) and (TARGET_WORDS >= 4500)
```

输出：

```
[写作模式] 章节 {章节号} {章节标题}
- H3 子节数：{H3_COUNT}
- 目标字数：{TARGET_WORDS}
- 模式：{并行 (Phase 2A→2B→2C) | 顺序 (Step 2a-2d)}
```

### Phase 2A：素材预备 + 写作蓝图（仅并行模式）

> Read `$SKILL_DIR/prompts/writing_brief_template.yaml`，按 `phase_2a_execution` + `brief_structure` 生成 Writing Brief（论述主线 + H3 分工表 + 术语表）。

**硬性要求 — image_plan 路径预备**：

主 session 在 brief 生成前必须**一次性完成所有图片获取**（KB 匹配 / drawio gen / AI gen / web 下载 / placeholder），把绝对路径写入 `image_plan: [{path: abs, caption: "图 X-Y ...", placement_hint: "..."}, ...]`，空数组 `[]` = 无图。详见 `references/image-retrieval.md`。

> 💡 **AI 生图分支优先查模板**：当 image_plan 某条 source=`ai` 且类型为结构化场景（信息图 / UI 截图 / 系统架构 / 流程图 / 时序图 / ER 图 / 学术图等），先 Read `$AI_IMAGE_SKILL_DIR/templates/<category>/<template>.md` 填槽位，再调 ai-image 生图——比自由 prompt 输出更稳定。详见 ai-image SKILL.md §模板驱动生成。

完成后进入 Phase 2B。

### Phase 2B：并发 subagent 撰写（仅并行模式）

> Read `$SKILL_DIR/agents/writer.md` 拿 prompt 模板 → 按 `$SKILL_DIR/prompts/parallel_writer_agent.yaml` 的 `context_packaging.required` 准备占位符 → 用 `phase_2b_execution.dispatch_rule` 在**单条消息**并发分派全部 H3 → 按 `phase_2b_execution.result_checking` 检查（首行非 `###` / 含编号前缀 / 字数不足 / 图片缺失等会立即重派一次或标记给 2C 修补）。

>50% subagent 失败 → 降级到顺序写作。完成后进入 Phase 2C。

<HARD-GATE>
**Phase 2A 必须完成所有受限工具调用**——KB 检索（`mcp__plugin_anythingllm-mcp_anythingllm__*`）、Web 检索（按 `mcp_search.priority` FQN 列表 + `WebSearch` / `WebFetch` 兜底）、AI 配图（`Skill(skill="ai-image:gen")`）的产出全部已拼进 Writing Brief 的 `image_plan` 等字段。

Phase 2B subagent **只能**用 prompt 已提供的素材，**不得**自调 Skill / mcp__* / Web*。理由：Claude Code background subagent pre-approval 机制——未在 allowlist 中的受限工具调用 auto-deny。如发现 Phase 2A 素材缺漏，**回 Phase 2A** 由主 session 补全后再分派 Phase 2B。

反模式：派 subagent 时让它"补一查 / 顺便生张图"——已知踩坑。
</HARD-GATE>

### Phase 2C：整合（仅并行模式）

> Read `$SKILL_DIR/prompts/writing_brief_template.yaml`，按 `phase_2c_integration` 步骤：标题层级守门 → 拼接 → 引言 → 过渡 → 一致性审校 → M4 终检 → 图片清单核对 → 结尾。完成后进入 Phase 2.5R。

### 顺序写作模式（Step 2a-2d）

每章按顺序串行：

**2a. 写作前**：从 `WEB_FACTS` 筛适用条目；多节模式可补 ≤ 2 次定向 WebSearch；具体事实强制融入正文，不用通用描述代替；互联网数据标 `[互联网来源，请核实]`。

**2b. 图片获取**：详见 `references/image-retrieval.md`。规划 → 按 `IMAGE_SOURCE` 执行 → 路径 + caption 嵌入 Markdown `![cap](path)` 让 `write_markdown()` 渲染（不再后置散调 `add_picture_cn`）。

**2c. 长内容章节分段**（仅顺序模式 + 目标字数 ≥ `WORD_OVERRIDE[2]` 或 4500 且大纲无子节时触发）：基于 M2/M4 拆 3-5 个子主题，每子主题 ≥ `WORD_OVERRIDE[3]` 或 900-1500 字，质量检查不达标补充生成。优先用大纲子节作分段。

**2d. 大纲子节标题对齐**：`OUTLINE_SUBSECTIONS` 非空时必须按其结构生成子标题，layer 由 `depth` 决定（3→H3 / 4→H4 / 5→H5）。各级字数：3→`WORD_OVERRIDE[3]` 或 900；4→600；5→400。**禁止**自定义"一、二、三"或"1. 2. 3."编号——多级列表自动加。**禁止**在 heading text 写编号（`### 招标方需求理解` 不要 `### 1.2.1 招标方需求理解`）。

### 内容组织原则

- 评分导向：高分项（≥10 分）重点 ≥ 1500 字，低分项（<5 分）简明
- M7 驱动：撰写优先级决定深度，P1 最详尽 P3 简明
- 数据支撑：尽可能用量化数据
- 差异化突出：M7.4 亮点显著位置展现
- 红线规避：M5 / M7.5 不得违反
- 篇幅：每论点下 ≥ 3-5 个具体支撑子要点；表格优先（技术对比 / 功能列表 / 里程碑）

### 多章节循环模式

- 全局知识复用：每节优先从 `GLOBAL_KNOWLEDGE_POOL` 提取，不足时 ≤ 2 次定向搜索补充
- 所有章节合并为单 DOCX，章节间 `doc.add_section()` 分隔
- 每节完成后输出进度（含字数 + 图片）：
  ```
  [进度 2/11] ✅ 1.2 项目理解与需求分析 — 1,820 字，插图 1/1 张（实插 0 / 占位符 1）[满足]
  [进度 3/11] 正在撰写 1.3 总体方案设计...（配额 2 张）
  ```

---

## Phase 2.5R：审核 subagent（NEW）

每章 Phase 2 完成后、Phase 3 输出前，**并行**分派两个审核 subagent。详细 dispatch 占位符 packaging 见 `prompts/parallel_writer_agent.yaml::phase_2_5r_dispatch`。

```
主 session 单条消息内同时 Task：
  Read $SKILL_DIR/agents/spec-reviewer.md → 按 spec_reviewer_packaging 填占位符 → Task(prompt=...)
  Read $SKILL_DIR/agents/quality-reviewer.md → 按 quality_reviewer_packaging 填占位符 → Task(prompt=...)
```

收两个 STATUS 后按 `result_handling` 处理：

- 全 `STATUS: DONE` → 进 Phase 3
- 任一 `STATUS: NEEDS_REVISION` → 主 session 应用修订（Edit docx 或回 writer 重写对应 H3）→ 重跑两个 reviewer，最多 2 轮
- 2 轮仍 NEEDS_REVISION → 写 audit log（`<章节>.audit.md` 与 docx 同目录），进 Phase 3 但终端提示用户人工审，不阻塞

输出：

```
[审核 review] 章节 {章节号} {章节标题}
- spec-reviewer: STATUS DONE / NEEDS_REVISION（修订 N 项已应用）
- quality-reviewer: STATUS DONE / NEEDS_REVISION（评分 [A/B/C/D]，修订 N 项已应用）
- 重审次数: [N]/2
```

---

## Phase 3：质量自检 + 输出

### 3.1 基础自检

| 项 | 标准 |
|---|---|
| 评分覆盖度 | M4 相关评分点 100% 实质性响应 |
| 关键词覆盖率 | M7 关键词在对应章节 ≥ 80% |
| 废标红线 | M5 + M7.5 零违反 |
| 过度承诺 | 见 §过度承诺防范 |
| 待确认标注 | 无 KB 支撑内容标 `[待确认]` |

### 3.2 输出（多级列表 + TOC + 层级校验）

```bash
SKILL_DIR="$SKILL_DIR" python3 <<'PY'
import os, sys
sys.path.insert(0, os.path.join(os.environ['SKILL_DIR'], 'tools'))
from docx_writer import (
    create_document, write_markdown, add_heading_cn, add_picture_cn,
    add_toc_field, validate_heading_hierarchy
)

doc = create_document()                       # 自动 setup_styles + multilevel_list + 页面
add_toc_field(doc, levels=4)                  # 文档开头插 TOC 域（按 F9 更新）
write_markdown(doc, full_chapter_md)          # 一把渲染整章 Markdown（含 ![]() 图）

# 终检：所有 Heading 段是否对齐 OUTLINE_SUBSECTIONS
ok, errs = validate_heading_hierarchy(doc, OUTLINE_SUBSECTIONS_ALL)
if not ok:
    print("❌ 标题层级校验失败:", errs, file=sys.stderr)
    # 不阻塞但记录到 audit

doc.save(out_path)
PY
```

> **关键规则**：
> - **禁止** `doc.add_heading()` / `doc.add_paragraph()` 直调；**必须**用 `write_markdown()` / `add_heading_cn()`
> - 字符串参数用**单引号**（中文双引号会触发 SyntaxError）
> - `add_heading_cn` 自动剥编号前缀（`strip_numbering_prefix`）作兜底
> - 图片用 `![cap](abs_path)` 嵌 Markdown，`write_markdown` 自动调 `add_picture_cn`

### 3.3 文件命名

| 模式 | 命名 |
|---|---|
| 单节 | `drafts/<节号>_<节名>.docx`（如 `1.3_总体方案设计.docx`） |
| 多节合并 | `drafts/<起始>-<结束>_合并.docx`（始终小数点格式，如 `1.1-1.11_合并.docx`，即使用户传 `--chapter 一`） |

### 3.4 任务完成确认

**单章模式**：

```
✅ 章节撰写完成！
[章节号]_[章节名].docx — [X] 字
  • 覆盖评分项：[N] 个
  • 引用素材：[N] 条
  • 插图：实插 N / 占位符 M
  • 待确认事项：[N] 项

后续：
  /trv <草稿> --type chapter --reference <分析报告>   # 章节深度审核
  /taw --outline <大纲> --report <报告> --chapter <下一节>
```

**多章模式**：

```
✅ 批量撰写完成！
• 输出：<起始>-<结束>_合并.docx
• 共 [N] 个章节，合计 [X] 字
• 插图：实插 N / 占位符 M
• 章节明细：
  1. [节号] [节名] — [X] 字，待确认 [N] 项
  ...

后续：/trv drafts/<起始>-<结束>_合并.docx --type chapter --reference <分析报告>
```

---

## 过度承诺防范（硬约束）

### 禁用措辞

绝对化措辞**禁止使用**：保证、确保 100%、绝对、承诺必定、保障万无一失。

### 替代措辞

| 禁用 | 替代 |
|---|---|
| 保证达到 | 预期可达到 / 目标为 |
| 确保 100% | 力争实现 / 设计目标为 |
| 绝对安全 | 多层防护，最大程度保障安全 |
| 承诺必定完成 | 制定详细计划确保按期推进 |

### 标注规则

- 无 KB 支撑的技术能力描述：`[待确认]`
- 资源承诺（人员数 / 设备配置）：`[待商务确认]`
- 量化指标（无实测数据）：`[待技术确认]`

---

## 全局约束

1. **评分导向**：所有内容围绕 M4，每个评分点有实质性响应
2. **M7 驱动**：M7 撰写指导是最核心写作指南
3. **禁止臆测**：所有数字（金额 / 日期 / 参数）必须来自招标文件或 KB；缺失标 `[待确认]`
4. **出处可溯**：技术参数引用对应 M2 原文
5. **项目特定性**：内容针对本项目，禁通用模板语句
6. **中文排版**：中文标点 + 阿拉伯数字；章节编号遵大纲体系（注意 heading text 不写编号——多级列表自动加）
7. **与 taa 解耦**：通过读 taa Markdown / DOCX 工作，不直接调 taa 代码
8. **基础自检 + 双 reviewer**：taw 跑 §3.1 基础检查 + Phase 2.5R 双 reviewer；深度审核仍由 trv 负责
9. **互联网兜底**：KB 空或当前章节无匹配 → 主动 WebSearch / MCP 检索
10. **来源标注**：互联网具体数字标 `[互联网来源，请核实]` / `[Tavily来源，请核实]` / `[Exa来源，请核实]`；通用描述无需逐句标注；不得照搬原文
11. **跨 CLI 兼容**：并行写作 / 双 reviewer 依赖 Claude Code Task tool，Codex / OpenCode 等无 Task tool → 自动降级为顺序模式（USE_PARALLEL_WRITING=false）+ 跳过 Phase 2.5R 审核（仍跑 §3.1 基础自检）；docx_writer 多级列表 / TOC / 字体 / 段距等所有底层渲染跨 CLI 一致

---

## 章节类型表（一、技术部分；taw 核心）

详见 `references/templates.md`。摘要：

| 子章节 | 重点 | KB 检索 |
|---|---|---|
| 1.1 技术偏离表 | 逐条对应 M2，标偏离 | 不检索 |
| 1.2 项目理解 | 现状痛点分析 | 不检索 |
| 1.3 总体方案 | 架构 + 技术路线 + 产品能力 | solutions |
| 1.4 专项响应 | 与大纲一一对应 | solutions + cases |
| 1.5 实施计划 | 里程碑与 M3 工期一致 | cases |
| 1.6 质量保障 | 质量管理体系 + 测试 | 不检索 |
| 1.7 安全方案 | 安全架构 + 等保 | solutions |
| 1.8 国产化 | 信创适配 | solutions |
| 1.9 团队配置 | 团队架构 + 岗位 | 不检索 |
| 1.10 售后服务 | 质保 / 运维 / SLA | solutions |
| 1.11 培训方案 | 计划 / 内容 / 方式 / 考核 | 不检索 |

---

## Gotchas（真坑沉淀，AI 高频犯错）

| Gotcha | 后果 | 正确做法 |
|---|---|---|
| **直接喊 /taw 而不先跑 /taa** | 报告/大纲不存在 → SKILL.md:127 硬错"报告不存在" | description 已明示前置，但 AI 仍可能跳——执行前先 ls `output/招标分析报告_*.md` 和 `output/投标文件大纲_*.docx`，缺则提示用户先 `/taa` |
| **Phase 2B subagent 自调 KB / Web / image_gen** | 触发 permission prompt 风暴 + 子 Agent 无凭据 | 这些**受限工具调用必须在 Phase 2A 主线完成**（KB 检索结果、web 摘要、image_plan 等），写成 writing brief 传给 subagent，subagent 不再调外部工具 |
| **单章 `--chapter X` 模式写正式投标** | Word 多级编号从 "1." 起，不会显示 "X.X.X"，章节号丢失 | 单章模式仅用于本地预览/测试；正式投标必须用 `--chapter all` 或范围 `1.1-1.11` 让 Word 编号自然连续（README §taw 单章 vs 多章） |
| **正文里写括号来源 `（来源：xxx）`** | 违反全局约束：方案正文禁止任何括号形式来源标注 | 来源信息只能写到独立的检索报告（展示给用户），正文绝对禁止；无 KB 支撑改用 `[待确认]`，互联网数字用 `[互联网来源，请核实]` |
| **使用绝对化措辞（保证 / 100% / 绝对）** | 触发"过度承诺防范"硬约束失败 | 改用"预期可达到 / 力争实现 / 设计目标为"（详见 §过度承诺防范） |
| **图文共生时反复读 KB 原图字节** | 浪费上下文 + 不必要的 binary load | KB 检索时直接看 Markdown 段落里内嵌的 `![](images/HASH.jpg)` 引用，不需要 Read 图片；image_plan 里只记 hash 与上下文位置 |

