| name | campaign-kb |
| description | Campaign 项目技术知识库查询。当用户询问任何关于 campaign 系统的 技术问题——包括服务、方法、模块、表结构、数据模型、业务流程、 依赖关系、Kafka topic、定时任务等——都应触发此 skill。 无需精确关键词匹配,只要问题涉及 campaign 代码库的技术细节即可。 快捷命令:/kb
|
Campaign 知识库查询
从 558 个结构化知识文件中精确检索服务、方法、模块、数据模型等信息。知识库未命中时自动回退到源码查询。
前置步骤
读取 references/kb_indexes.md(本 skill 目录下的副本)— 加载知识库导航索引和模块-文件映射。这是所有知识库查询的唯一入口,后续必须通过索引逐级导航定位目标文件。
领域别名映射
用户常用业务概念到知识库模块的快速映射:
| 业务概念 | 知识库域/模块 |
|---|
| 会员/等级/成长值/VIP/SVIP/权益 | user/member |
| 用户/用户信息/账户 | user/user, user/userv2 |
| 积分/虎币/签到 | score/ |
| 奖品/发奖/奖励/奖励中心 | award/ |
| 优惠券/免佣卡/兑换/卡券 | voucher/ |
| 活动/活动配置/活动列表 | activity/ |
| 邀请/邀友/拉新 | user/invitation, user/invitefriend |
| 抽奖/答题/股票游戏 | interaction/ |
| 运营/投放/精准营销/白名单 | operation/ |
| 落地页/H5页面/展示卡/头像框 | page/ |
| 预算/资金/转账/汇率/现金奖励/账本 | money/ |
| 规则引擎/风控 | crosscutting/ |
| Kafka Consumer/MQ/Transfer/gRPC/定时任务框架 | framework/ |
| 异步推送/消息转发/数据验证/通用工具 | infra/ |
| 短链接 | app/shortlink |
| 组队/团队游戏 | app/teamgame2026 |
| 会议/meetup | app/meetup |
| 邀请注册/membershipinvite | app/membershipinvite |
查询分类
| 查询类型 | 识别信号 | 首选知识层 | 辅助层 |
|---|
| 方法推荐 | "用哪个"、"该用什么"、"怎么查"、"如何获取"、"哪个方法" | L3 接口表 | L5 签名 |
| 方法签名 | 具体接口名、I*SRV、"签名"、"参数"、"返回值" | L5 服务契约 | L3 接口表 |
| 模块职责 | "做什么"、"负责什么"、"是什么"、模块名 | L3 模块文件 | L5 契约 |
| 数据模型 | "表"、"字段"、"数据模型"、"表结构"、"索引" | L4 数据模型 | L3 实体表 |
| 业务流程 | "流程"、"链路"、"怎么工作"、"步骤" | L3 流程+依赖 | L5+L4 |
| 基础设施 | "Kafka"、"topic"、"消费者"、"定时任务"、"MQ"、"gRPC" | L5 event_catalog + L3 framework + L3 infra | — |
| 综合查询 | 多种信号混合,或涉及多模块 | 按需组合多层 | — |
搜索策略(强制:索引逐级导航,禁止全量搜索)
核心原则:必须通过 _index.md 逐级导航定位目标文件,禁止对 knowledge/ 目录进行全量 grep/search。
导航流程
1. 读取 `references/kb_indexes.md`(skill 目录副本)
↓ 定位到目标域(如 page/、activity/、user/)
2. 读取目标层的 `_index.md`(如 `knowledge/L3_modules/page/_index.md`)
↓ 在索引中定位具体模块文件
3. 读取目标模块文件(如 `knowledge/L3_modules/page/landingpage.md`)
↓ 需要更多细节时,沿文件内交叉引用跳转
4. 读取关联的 L5/L4 文件(如 L5 签名、L4 数据模型)
策略 1:精确匹配(优先)
用户提到具体服务名/表名/模块名时,通过领域别名映射 + kb_indexes.md 直接定位知识文件。
策略 2:索引逐级导航(次选)
用户描述较模糊时:kb_indexes.md → 确定域 → 读域 _index.md → 识别具体文件 → 读取目标文件。
禁止行为
- 禁止对
knowledge/ 目录执行 grep、search_for_pattern、Grep 等全量搜索
- 禁止一次性读取多个知识文件进行筛选
- 必须通过索引逐级缩小范围后再读取目标文件
代码回退
当知识库中未找到相关信息时:
- 输出:
> 知识库中未找到关于「xxx」的记录,正在查询源码...
- 按优先级搜索源码:
services/ → app/ → dao/ → secondpart/ → iface/ → 全项目
- 使用 Serena 符号工具(
find_symbol / search_for_pattern)
- 返回结果后建议:
> 此内容可补充到知识库:knowledge/L3_modules/<domain>/<module>.md
输出格式
根据查询复杂度分 3 档:
精确查询(已知具体符号名)
只输出方法签名或表结构,不加上下文。
一般查询(知道领域,不知道具体方法/表)
## 答案
<按场景推荐方法/表,附签名和简要说明>
## 上下文
- **所属模块**: <模块名>(源码路径)
- **注意事项**: <关键约束,如有>
综合查询(跨模块/链路/架构)
## 答案
<完整回答:流程步骤、调用链图、方法签名等>
## 上下文
- **所属模块**: <模块名>(源码路径)
- **依赖服务**: <依赖的其他服务列表>
- **关联数据表**: <相关表名>
- **Wire 注入**: `ProviderSet` 位于 <路径>
- **注意事项**: <并发/幂等/分布式锁等关键约束>
## 相关知识文件
- 模块文档: `knowledge/L3_modules/<domain>/<file>.md`
- 服务契约: `knowledge/L5_service_contracts/<domain>/<file>.md`
- 数据模型: `knowledge/L4_data_model/<domain>/<file>.md`
输出原则
- 直接答案在前,再给上下文
- 引用来源:标注知识文件路径
- 关联发现:主动关联相关模块、依赖、数据表
- 代码可导航:提供源码路径
- 方法签名必须完整:返回方法时必须包含完整签名(参数类型 + 返回值类型)。签名不完整时按 L5 → L4 → 源码的顺序逐层补全,仅当知识库各层均无完整签名时才回退到源码(
find_symbol + include_info=true)
多模块查询
涉及多个模块时:从 L3 _index.md 识别所有相关模块 → 逐一读取 → 构建调用链 → 开头给简化版调用链图:
用户请求 → ModuleA → ModuleB.method() → ModuleC.method() → DAO → DB
知识库分层检索规则(强制)
核心原则:知识库优先,源码兜底。必须严格遵守以下检索顺序。
检索顺序
| 优先级 | 层级 | 用途 | 何时查询 |
|---|
| 1 | L3 层(服务/模块概览) | 模块职责、服务依赖、整体架构、接口列表 | 首先查询,所有查询的入口 |
| 2 | L5 层(方法详情) | 完整方法签名(入参、出参)、业务逻辑说明 | 当需要具体方法的参数/返回值时,从 L5 补全 |
| 3 | L4 层(数据模型) | 表结构、字段含义、索引、DAO 方法 | 当需要了解数据表或定位 DAO/Service 时 |
| 4 | 源码(兜底) | 知识库未覆盖的信息 | 仅当 L3/L4/L5 均无法满足时才回退到源码 |
执行约束
- 禁止跳层:需要方法签名时,必须先查 L5,不得跳过 L5 直接读源码
- 禁止无必要读源码:知识库已命中时不查源码,除非用户明确要求
- 先读索引定位,再读 1-2 个目标文件,不要一次加载多个知识文件
- 同一会话中已读取的知识文件应复用,不重复读取
- 利用文件内交叉引用链接(L3 → L5、L3 → L4)跳转,不要手动拼路径
- 源码回退时必须声明:输出
> 知识库中未找到,正在查询源码...