xwiki · git:20260720.7a75e6b · 2026-07-20 · sha256 c389108ce0ce62c4

xwiki git:20260720.7a75e6bA

Immutable. This exact content is served forever at /api/v1/blob/c389108ce0ce62c4.

---
name: xwiki
description: >
  当 AI agent 需要在芯片验证任务中复用持续记忆时使用:查询或维护由
  XWIKI_DIR 指向的验证项目 LLM wiki,了解验证环境、DUT 功能、
  接口、testbench、sequence、checker、coverage、workflow、debug 入口、
  BT/IT/ST/SoC 项目上下文,并在用户明确要求、项目 AGENTS.md 授权或任务明确
  包含知识沉淀时把稳定发现编译回 wiki,避免每次 session 从 0 启动。
---

# xwiki 持续记忆 Skill

xwiki 用来维护芯片验证项目的 LLM wiki。它不是 CLI/MCP 工具,也不读取旧版运行时状态目录;它规定 AI 如何查询、增删改查和校验一个持久 Markdown wiki。

## 必须先做

1. 读取环境变量 `XWIKI_DIR`,它是当前 session 的 xwiki wiki 根目录。
2. 如果 `XWIKI_DIR` 未定义或为空,必须询问用户提供路径;不要 fallback 到 `doc/`、当前目录或其他猜测路径。
3. 初始化 wiki 或第一次为项目建立持续记忆时,如果用户没有告知 spec 路径或 RTL 路径,必须询问用户;不要自己猜测 spec/RTL 根目录。
4. 需要校验格式时运行:

```bash
python <xverif-root>/skills/xwiki/scripts/validate_xwiki.py
```
5. 查询 wiki 可隐式触发;创建、修改、废弃或写回页面必须有用户明确要求、项目规则授权或任务范围授权。未授权时只在最终结果中列出建议写回的稳定结论。
6. 初始化空 wiki 目录时优先运行:

```bash
python <xverif-root>/skills/xwiki/scripts/init_xwiki.py --wiki-dir "$XWIKI_DIR" --validate
```

## 何时使用

- 需要了解验证环境、DUT 功能、接口、reset/clock、memory map、interrupt、testbench、agent、sequence、checker、scoreboard、coverage、workflow、debug 入口。
- 需要把源码、README、spec、test、wave/debug 报告或用户说明编译进持久项目记忆。
- 需要查询、创建、修改或废弃验证项目 wiki 页面。
- 需要检查 wiki 格式是否能被后续 agent 可靠读取。
- 获得写回授权且 debug 完一个 case fail 后,把稳定结论记录到 `de_issue` 或 `dv_issue` 描述对象中。

## 查询顺序

1. 从 `$XWIKI_DIR/index.md` 开始,找候选主题和入口页面。
2. 按描述对象进入 `$XWIKI_DIR/de/`、`dv/`、`de_issue/` 或 `dv_issue/`,先读该目录及沿途子目录的 `index.md` 和 `log.md`。
3. 读取相关 concept 页面,看 frontmatter、正文、出链、evidence 和 citations。
4. 如果存在 `_index/backlinks.md` 或 `_index/tags.md`,用它们做反向或 tag 索引。
5. 如果仍找不到,只在 `$XWIKI_DIR` 内用 `rg` 搜索 Markdown。
6. 搜索命中后必须回到页面级证据;不要只引用 grep 片段作答。
7. wiki 信息不足时再读 raw source;只有已获得写回授权时才把稳定发现编译回 wiki,未授权时在最终结果列出建议写回的页面和结论。

详细查询和 CRUD 规则见 [references/wiki-crud.md](references/wiki-crud.md)。

## 编译要求

严格执行 LLM Wiki 编译过程:raw sources 是事实来源,wiki 是编译产物,schema 由本 skill 规定。每次 ingest/update 必须读旧页面、抽取新事实、合并或新增 concept、更新 index/反向索引、追加 log、运行校验并汇报 unknowns。

### 验证层次 prompt 读取硬规则

总结、新增或更新任何验证 topic 页面前,必须先确定当前验证层次是 `bt`、`it`、`st` 还是 `soc`。验证层次可来自用户说明、wiki index、已有 concept、仓库目录或验证环境命名;如果无法确定,必须询问用户,不得猜测。

一旦验证层次确定,必须读取该层次目录下的全部 prompt 文件:`references/prompts/<level>/prompts/*.md`。不能只读取最匹配的单个 topic prompt,也不能因为当前任务看似只涉及某个 topic 就跳过同层其它 prompt。读取全部 prompt 后,再结合当前 topic 选择主要约束,并在汇报中说明验证层次、已读取的 prompt 集合和主要使用的 prompt。

输出还必须遵守 [references/prompt-output-requirements.md](references/prompt-output-requirements.md)。

### Wiki 描述对象分类硬规则

所有 wiki Markdown 文件的 frontmatter 必须包含 `object_type`,且只能使用 `de`、`dv`、`de_issue`、`dv_issue` 四个值之一。该字段用于区分页面描述对象,不等同于页面标题、tag 或验证层次。

- `de`:描述设计实现、RTL、接口、微架构、协议行为、设计参数和数据路径。
- `dv`:描述验证环境、sequence、checker、scoreboard、coverage、test、debug workflow 和仿真入口。
- `de_issue`:持续记录设计、RTL、spec、协议定义、性能需求或微架构侧问题和风险。
- `dv_issue`:持续记录验证环境、RM、checker、scoreboard、sequence、testbench、脚本、配置或 DV 假设侧问题和风险。

根 `index.md` 默认使用 `object_type: dv`;每个目录的 `index.md` 使用该目录对应的 `object_type`,`de_issue/spec/index.md` 和 `de_issue/rtl/index.md` 使用 `object_type: de_issue`。`log.md` 默认使用所在目录对应的 issue 类型:`de/` 下使用 `de_issue`,`dv/` 下使用 `dv_issue`,`de_issue/` 及其子目录使用 `de_issue`,`dv_issue/` 下使用 `dv_issue`。获得写回授权后,debug 完 case fail 时更新 `de_issue` 或 `dv_issue` 页面;根因未完全确认时,也要作为候选 issue 记录 unknown 和下一步证据。

禁止把具体仿真产物作为 wiki evidence 或 citation,例如单次 run 的 FSDB/VCD、simv 产物、临时日志、coverage 临时目录、scratch 报告、`<repo>/tmp` 文件。这些不会进入 git,只能作为当次 debug 的 raw observation;写入 wiki 时必须编译成稳定结论,并引用可追踪的 spec、RTL、test、脚本、README 或已提交文档。

获得写回授权后,case fail debug 结束时写回 wiki:

- 设计、RTL、spec、协议定义、性能需求或微架构侧问题写入 `de_issue`。
- testbench、UVM env、RM、checker、scoreboard、sequence、配置、脚本、仿真参数或 DV 假设问题写入 `dv_issue`。
- 如果根因未完全确认,仍要更新对应候选 issue 页面,把结论标为未确认,并记录下一步需要的证据。

根因主题与存储对象固定映射:`env_bug` 写入 `dv_issue/`,`rtl_bug` 写入 `de_issue/rtl/`,`spec_bug` 写入 `de_issue/spec/`。主题名用于问题分类,frontmatter 的 `object_type` 仍只能使用 `dv_issue` 或 `de_issue`,不能写成 `env_bug`、`rtl_bug`、`spec_bug`。

详细流程见 [references/compile-process.md](references/compile-process.md)。

## Wiki 格式

wiki 根目录必须包含 `index.md`、`de/`、`dv/`、`de_issue/`、`dv_issue/`。根目录不再要求 `log.md`;各描述对象目录必须包含自己的 `index.md` 和 `log.md`。`de_issue/` 下必须再区分 `spec/` 与 `rtl/`,且二者也必须各自包含 `index.md` 和 `log.md`。

wiki 允许多层子目录,但 `$XWIKI_DIR` 下除 `_index/`、`archive/`、`deprecated/` 以外,任何包含 Markdown 页面或子目录的目录都必须同时包含 `index.md` 和 `log.md`,形成可局部查询、可局部追溯的分层记忆。所有 Markdown 文件都必须有 YAML frontmatter,至少包含 `type`、`title`、`description`、`object_type`。`object_type` 只能是 `de`、`dv`、`de_issue`、`dv_issue`。链接必须相对可解析,禁止本机绝对路径和 `file://`。

创建空 wiki 骨架时使用 `scripts/init_xwiki.py`,不要手写目录骨架。脚本默认保留已有文件;需要重建脚本管理的 index/log/_index 文件时显式传 `--force`;只查看计划时传 `--dry-run`。

完整格式见 [references/wiki-spec.md](references/wiki-spec.md)。

## 验证 topic prompts

BT/IT/ST/SoC prompt 保存在 [references/prompts](references/prompts)。确定验证层次后,必须读取对应层次 `prompts/` 目录下的全部 Markdown 文件,并结合 [references/prompt-output-requirements.md](references/prompt-output-requirements.md) 生成或更新 wiki 页面。