RuView 中的 base-template-generator:一个带模式学习与记忆钩子的 Claude Code 模板生成 Agent 定义解析
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
base-template-generator.md是 RuView 仓库.claude/agents/templates/目录下的一份 Claude Code Agent 定义文件,它用「YAML frontmatter 元数据 + 系统提示词」两段式结构,定义了一个专门生成基础代码模板(组件、API、配置、测试脚手架)的智能体,并在生成前后接入 claude-flow 记忆系统实现「检索历史模板 → 生成 → 回写模式」的自学习闭环。读完本文,你将掌握这类 Agent 定义文件的完整结构(身份字段、能力声明、三阶段 hooks 脚本)、其自学习协议的具体命令与参数,以及它在 RuView 仓库 Agent 生态中被授权、被调用的证据链。
这个文件在仓库中的定位
RuView 是一个无摄像头 RF 感知系统(WiFi 信号空间感知、生命体征监测、存在检测),其活跃实现位于v2/crates/等 Rust 工作区(见 CLAUDE.md)。而在仓库根目录的.claude/下,维护着一套完整的 Claude Code 智能体配置体系:agents/(智能体定义)、commands/(命令)、skills/(技能)、helpers/(钩子脚本)。
base-template-generator.md 位于agents/templates/子目录,与coordinator-swarm-init.md、orchestrator-task.md、sparc-coordinator.md、implementer-sparc-coder.md等模板类智能体并列,属于该仓库 AI 辅助开发工具链的一部分。它的description字段给出了两个典型使用场景:需要新建一个 React 组件基础骨架、需要搭建带错误处理与文档结构的 REST API 端点模板。
从源码结构看,这份文件本身不执行任何逻辑,它是一份「被 Claude Code 加载后注入为子智能体系统提示词」的声明式资产;真正产生副作用的是 frontmatter 中的hooks脚本与正文中约定的 claude-flow 调用协议。
完整文件结构:frontmatter + 系统提示词
整个文件可拆成两个部分:第 1–69 行是 YAML frontmatter(元数据与钩子),第 71 行起是 Markdown 格式的系统提示词正文(角色设定、自学习协议、领域优化、职责清单、质量基线)。
身份与能力字段(L1-L12)
name: base-template-generator version: "2.0.0-alpha" updated: "2025-12-03" color: orange metadata: v2_capabilities: - "self_learning" - "context_enhancement" - "fast_processing" - "pattern_based_generation"name/version/updated/color是智能体身份字段,其中version标记为2.0.0-alpha;metadata.v2_capabilities声明了四个能力标签:自学习(self_learning)、上下文增强(context_enhancement)、快速处理(fast_processing)、模式化生成(pattern_based_generation)。这四个标签与正文中的四个「NEW」职责条目一一对应,属于「元数据即契约」的写法。
角色定义在正文第 71 行:You are a Base Template Generator v3.0.0-alpha.1, an expert architect ...,并注明其模式学习能力由 Agentic-Flow v3.0.0-alpha.1 提供。
hooks:pre_execution / post_execution / on_error 三阶段脚本(L13-L68)
frontmatter 中最具实操价值的部分是hooks块,它把 shell 脚本内嵌在 Agent 定义里,分别绑定到执行的三个阶段。
pre_execution(L14-L30):从历史记忆中检索相似模板
echo "🎨 Base Template Generator starting..." # 🧠 v3.0.0-alpha.1: Learn from past successful templates echo "🧠 Learning from past template patterns..." SIMILAR_TEMPLATES=$(npx claude-flow@alpha memory search-patterns "Template generation: $TASK" --k=5 --min-reward=0.85 2>/dev/null || echo "") if [ -n "$SIMILAR_TEMPLATES" ]; then echo "📚 Found similar successful template patterns" npx claude-flow@alpha memory get-pattern-stats "Template generation" --k=5 2>/dev/null || true fi # Store task start npx claude-flow@alpha memory store-pattern \ --session-id "template-gen-$(date +%s)" \ --task "Template: $TASK" \ --input "$TASK_CONTEXT" \ --status "started" 2>/dev/null || true要点:
- 调用
npx claude-flow@alpha的 alpha 通道 CLI,通过memory search-patterns以任务串"Template generation: $TASK"为查询键,取--k=5条、且--min-reward=0.85过滤低质量历史模式; --session-id "template-gen-$(date +%s)"用 Unix 时间戳生成会话 ID,保证每次执行可追踪;- 所有外部命令都带
2>/dev/null || true/|| echo ""兜底,即记忆系统不可用时不阻塞主流程——这是钩子脚本的典型防御式写法; - 依赖外部注入的变量
$TASK与$TASK_CONTEXT,说明该脚本由宿主环境在注入上下文后渲染执行。
post_execution(L32-L56):回写成功模式并训练神经模式
echo "✅ Template generation completed" # 🧠 v3.0.0-alpha.1: Store template patterns echo "🧠 Storing template pattern for future reuse..." FILE_COUNT=$(find . -type f -newer /tmp/template_start 2>/dev/null | wc -l) REWARD="0.9" SUCCESS="true" npx claude-flow@alpha memory store-pattern \ --session-id "template-gen-$(date +%s)" \ --task "Template: $TASK" \ --output "Generated template with $FILE_COUNT files" \ --reward "$REWARD" \ --success "$SUCCESS" \ --critique "Well-structured template following best practices" 2>/dev/null || true # Train neural patterns if [ "$SUCCESS" = "true" ]; then echo "🧠 Training neural pattern from successful template" npx claude-flow@alpha neural train \ --pattern-type "coordination" \ --training-data "$TASK_OUTPUT" \ --epochs 50 2>/dev/null || true fi要点:
FILE_COUNT通过find . -type f -newer /tmp/template_start统计本次生成的文件数。注意/tmp/template_start这个标记文件在本文件中并未创建,从源码结构看可以推断它是由外部运行环境在执行前落盘的时间戳锚点,属于宿主约定而非自包含逻辑;- 当前实现中
REWARD与SUCCESS是硬编码的0.9/true,即「跑完即视为成功」的简化版本,奖励信号并未真正接入质量评估——这一点在复用该模板时值得自行改造; neural train --pattern-type "coordination" --epochs 50会把本次输出作为训练数据喂给神经模式训练。这里的coordination与 settings.json 中claudeFlow.learning.patterns声明的三种训练模式之一("coordination","optimization","prediction")精确对应,说明该钩子与仓库级 claude-flow 配置是配套设计的。
on_error(L58-L68):失败模式入库
echo "❌ Template generation error: {{error_message}}" npx claude-flow@alpha memory store-pattern \ --session-id "template-gen-$(date +%s)" \ --task "Template: $TASK" \ --output "Failed: {{error_message}}" \ --reward "0.0" \ --success "false" \ --critique "Error: {{error_message}}" 2>/dev/null || true失败路径以--reward "0.0" --success "false"入库,使后续--min-reward检索天然过滤掉失败样本;{{error_message}}是模板占位符语法,表明该钩子文本在触发前会经过宿主的模板渲染。
自学习协议:生成前、生成中、生成后三段循环
正文的「Self-Learning Protocol」章节(L73-L140)用三段 TypeScript 示例把钩子脚本背后的意图翻译成 API 级描述。以下代码逐字继承自 base-template-generator.md。
生成前:检索历史成功模板(reasoningBank.searchPatterns)
// 1. Search for similar past template generations const similarTemplates = await reasoningBank.searchPatterns({ task: 'Template generation: ' + templateType, k: 5, minReward: 0.85 }); if (similarTemplates.length > 0) { console.log('📚 Learning from past successful templates:'); similarTemplates.forEach(pattern => { console.log(`- ${pattern.task}: ${pattern.reward} quality score`); console.log(` Structure: ${pattern.output}`); }); // Extract best template structures const bestStructures = similarTemplates .filter(p => p.reward > 0.9) .map(p => extractStructure(p.output)); }参数语义:k: 5召回 5 条候选;minReward: 0.85设定质量下限;随后再对reward > 0.9的高分样本抽取结构骨架(extractStructure),形成「宽召回 + 严筛选」两级过滤。
生成中:GNN 增强检索相似项目结构
// Use GNN to find similar project structures (+12.4% accuracy) const graphContext = { nodes: [reactComponent, apiEndpoint, testSuite, config], edges: [[0, 2], [1, 2], [0, 3], [1, 3]], // Component relationships edgeWeights: [0.9, 0.8, 0.7, 0.85], nodeLabels: ['Component', 'API', 'Tests', 'Config'] }; const similarProjects = await agentDB.gnnEnhancedSearch( templateEmbedding, { k: 10, graphContext, gnnLayers: 3 } ); console.log(`Found ${similarProjects.length} similar project structures`);该片段把「组件-API-测试-配置」四个实体及其关联边、边权重、节点标签组织成图上下文,交给agentDB.gnnEnhancedSearch,用 3 层 GNN 消息传递在嵌入空间里检索相似项目结构(k: 10)。注释中「+12.4% accuracy」是定义文件自带的宣称数字,仓库内没有对应的基准脚本可供复现,引用时应视为文档声明而非实测结论。
同节稍后的第二个 GNN 示例(L180-L205)给出了更具体的图结构:UserProfile组件 →UserAPI、组件有测试、API 有测试、组件有配置,共 4 节点 4 边,检索参数为k: 5、gnnLayers: 3,用于在新项目嵌入上查找相似结构。
生成后:模式回写(reasoningBank.storePattern)
// Store successful template for future reuse await reasoningBank.storePattern({ sessionId: `template-gen-${Date.now()}`, task: `Template generation: ${templateType}`, output: { files: fileCount, structure: projectStructure, quality: templateQuality }, reward: templateQuality, success: true, critique: `Generated ${fileCount} files with best practices`, tokensUsed: countTokens(generatedCode), latencyMs: measureLatency() });回写字段比 shell 钩子更丰富:除reward/success/critique外还记录了tokensUsed与latencyMs,为后续「快速生成」路由(下文 flashAttention 分支)提供成本数据。sessionId使用template-gen-${Date.now()},与钩子中template-gen-$(date +%s)同构。
模式化模板库与领域优化
「Domain-Specific Optimizations」一节(L142-L205)给出了一个内嵌的模板库示例与检索策略:
// Store successful template patterns const templateLibrary = { 'react-component': { files: ['Component.tsx', 'Component.test.tsx', 'Component.module.css', 'index.ts'], structure: { props: 'TypeScript interface', state: 'useState hooks', effects: 'useEffect hooks', tests: 'Jest + RTL' }, reward: 0.95 }, 'rest-api': { files: ['routes.ts', 'controller.ts', 'service.ts', 'types.ts', 'tests.ts'], structure: { pattern: 'Controller-Service-Repository', validation: 'Joi/Zod', tests: 'Jest + Supertest' }, reward: 0.92 } }; // Search for best template const bestTemplate = await reasoningBank.searchPatterns({ task: `Template: ${templateType}`, k: 1, minReward: 0.9 });两个内置条目各有侧重:react-component(reward 0.95)固定了「组件 + 测试 + CSS Module + 桶文件」四件套与 TS 接口 / hooks / Jest+RTL 的技术约定;rest-api(reward 0.92)固定了 Controller-Service-Repository 分层与 Joi/Zod 校验、Jest+Supertest 测试栈。检索时k: 1, minReward: 0.9表示只取最优单条且质量门槛抬升到 0.9——即「生成前先看库里有没有现成的高分模式」。
生成流程、模板类别与质量基线
定义文件把生成方法论显式写成六步(L218-L225):
- Analyze Requirements:明确模板类型与用例;
- Apply Best Practices:套用项目上下文中的编码标准、命名约定与架构模式;
- Structure Foundation:清晰的文件组织、正确的导入导出、逻辑代码结构;
- Include Essentials:错误处理、类型安全、文档注释、基础校验;
- Enable Extension:预留扩展点与可定制区域;
- Provide Context:用注释解释各模板段的定制方式。
其覆盖的模板类别(L226-L233)包括:React/Vue 组件(含生命周期管理)、带校验与错误处理的 API 端点、数据库模型与 Schema、配置文件与环境设置、测试套件与测试工具、文档与 README 模板、构建与部署配置。
质量基线(L235-L244)要求:模板开箱即用、尽可能提供完整 TypeScript 类型、遵循项目既有约定(文中特别提到项目CLAUDE.md规范)、预留占位定制区、附带相关导入与依赖、给出有意义的默认值;并追加三条 NEW 条款——生成前检索相似模板、模式化生成保证一致性、以质量指标回写成功模板。
「Fast Template Generation」(L246-L259)则描述了大模板的快速路径:
// Use Flash Attention for large template generation (2.49x-7.47x faster) if (templateSize > 1024) { const result = await agentDB.flashAttention( queryEmbedding, templateEmbeddings, templateEmbeddings ); console.log(`Generated ${templateSize} lines in ${result.executionTimeMs}ms`); }当模板规模超过 1024 行时走flashAttention快速注意力路径,并打印执行耗时。注释中「2.49x-7.47x faster」同样是文档自带声明;仓库中与之相关的性能叙述集中在 .claude/skills/reasoningbank-agentdb/SKILL.md(宣称 150x 模式检索加速等),均属于技能文档层的说法,本文不作实测背书。
仓库佐证:它在 RuView 的 Agent 生态中如何被授权运行
单看模板文件只能知道「它想做什么」,仓库里还有三处证据回答「它被允许做什么、用什么配置运行」。
1. 命令白名单。settings.json 的permissions.allow显式放行了Bash(npx @claude-flow*)、Bash(npx claude-flow*)、Bash(node .claude/*)与mcp__claude-flow__:*。模板钩子里每一条npx claude-flow@alpha ...调用都落在这条白名单之内,且deny为空数组——钩子无需逐条弹窗确认即可执行。
2. claude-flow 运行时开关。同文件的env段设置了CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1、CLAUDE_FLOW_V3_ENABLED=true、CLAUDE_FLOW_HOOKS_ENABLED=true(L135-L139),claudeFlow.version为3.0.0(L141)。模板 frontmatter 标注的 v3.0.0-alpha.1 能力(v2_capabilities)正是挂在这套开关之下。
3. 记忆与学习配置对齐。settings.json 中memory.backend: "hybrid"、enableHNSW: true为钩子的模式检索提供向量索引后端;learning.enabled: true、autoTrain: true与patterns: ["coordination", "optimization", "prediction"]恰好覆盖 post_execution 钩子使用的--pattern-type "coordination"与 50 epoch 的neural train;retention配置短期 24 小时、长期 30 天,决定了回写模式的留存周期。
4. 同类模板的对照。同一目录下的 coordinator-swarm-init.md 展示了同构但更轻量的写法:frontmatter 只有pre/post两段钩子(memory_search/memory_store函数调用),正文则完整给出拓扑选型、资源配置、通信建立、使用示例、最佳实践与错误处理章节。对照可见base-template-generator是该家族中钩子最重、学习闭环最完整的一份——它同时实现了「检索-生成-回写-训练」四步,而多数兄弟模板只做前两步。
阅读与复用指南(只读视角)
- 文件本体:
.claude/agents/templates/base-template-generator.md,268 行。阅读顺序建议先看 frontmatter 的hooks(L13-L68),再看正文三段自学习示例(L75-L140),最后对照settings.json确认开关与白名单。 - 运行前提:钩子依赖
claude-flow@alphanpm 通道与宿主注入的$TASK、$TASK_CONTEXT、$TASK_OUTPUT、/tmp/template_start标记文件;若不在 Claude Code + claude-flow 环境中,该文件只是一份可读的提示词与脚本模板,不会产生副作用。 - 复用注意:
REWARD="0.9"/SUCCESS="true"为占位式常量,FILE_COUNT依赖外部时间戳锚点;把这套钩子移植到其他项目时,奖励信号与文件计数两处需要替换为真实度量,否则记忆库中积累的模式质量分将失去区分度。 - 能力边界:文中出现的加速倍数(+12.4% accuracy、2.49x-7.47x faster、150x 检索加速)均出自该文件及配套技能文档的注释,仓库内未见对应基准脚本,按「文档声明(CLAIMED)」理解即可。
小结
base-template-generator.md的价值不在于某一段代码,而在于它示范了 Claude Code Agent 定义文件的一种完整工程形态:frontmatter 用metadata.v2_capabilities声明能力、用三阶段 shell 钩子把记忆检索与模式回写固化进执行生命周期;正文用可执行的 TypeScript 示例把「生成前检索(k=5, minReward=0.85)→ 生成中 GNN 结构检索(gnnLayers=3)→ 生成后带指标回写(reward/tokens/latency)」的自学习协议讲清楚,并以模板库(react-component / rest-api)与六步方法论保证产出一致性。再结合 settings.json 中的命令白名单、V3 开关与学习配置,可以完整回答「这个 Agent 为什么能在这个仓库里跑起来、它写入的记忆由谁消费」这两个问题——这正是把它作为 Agent 定义模板参考实现来读的意义。
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考