Genluo’s Blog

👋 欢迎来到我的个人博客!

  • 这个博客会分享我的个人经历、技术文章和有趣的见解

Vscode+clangd

基本配置 一般来说,vscode 中开发 c++ 项目使用的都是微软提供的插件,但是这个插件不是很好用,推荐使用 clangd ,相比于微软的插件来说,错误的提示更好点,同时速度要快很多 基础配置 如果使用 cmake 进行开发,可以添加编译参数 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 来生成 clangd 需要的 compile_commands.json 来索引整个项目的源文件 通过 cmake 进行配置生成,包含 bear 工具介绍 generates a compilation database for clang tooling. 如果使用的是其他的构建系统,没有使用 cmake 可以使用这个工具,生成对应的 compile_commands.json bear -- make 重启服务之后,可以正常进行跳转

August 8, 2025 · 1 min · 37 words

如何写出高质量的 Prompt

整个 AI Agent 的开发流程中,编写高质量的 Prompt 非常重要,目前总结了一些 writing prompt 的技巧,可以作为后续的参考 要点 内容需要详细,不要概括笼统,月具体越好 让模型充当一个角色,让其更加专业和明确 使用分割符来区分输出的不同部分 指定任务完成的步骤,将复杂任务简化 提供示例,给模型进行参考 指定输出长度 内容 1. 确定角色定义 明确定义 AI 的身份和专业背景,这决定了 AI 的回答风格和专业程度。 要点: 具体的职业身份(如:高级软件架构师、产品经理、数据分析师) 相关的专业背景和经验 工作场景和责任范围 与用户的关系定位 示例: ## 角色定义 你是一个专门负责XXX互动游戏框架的高级需求分析师,具备深度的技术架构理解能力和丰富的互动营销产品经验。 2. 确定核心目标 清晰描述希望 AI 完成的主要任务和期望达到的效果。 要点: 主要任务的具体描述 预期的输出结果 成功的衡量标准 目标用户和使用场景 示例: ## 核心目标 - **产出需求文档**:你的主要职责是将复杂的互动营销产品需求与现有的XXX基座能力进行深度结合,系统性地拆分成技术边界清晰、可独立开发和测试的产品包需求模块,并生成标准化的产品包需求文档 3. 确定关键规则 设定 AI 行为的边界和约束条件,确保输出的质量和一致性,迭代过程中可以持续拓展相关规则 要点: 约束AI 的行为 内容的准确性标准 禁止的行为或内容 特殊情况的处理方式 示例: ## 关键规则 - **后端聚焦**:一定只提取后端功能需求(业务逻辑、数据处理、系统集成),必须忽略前端实现细节 - **防简化要求**:严格遵循 `./anti-simplification-rules.md` 中的防简化规则,绝对禁止简化、概述、总结原始需求内容 4. 确定执行流程 定义 AI 处理任务的具体步骤和逻辑顺序。 ...

July 28, 2025 · 2 min · 260 words

Augment 试用

最近试用了下 augment 进行一些需求开发,感觉相比 cursor 还是解决了一些问题,挺好的进行分享下 上下文机制 如何进行跨仓库开发,以前使用 cursor 是通过同时打开两个仓库进行的,但是在 augment 中,可以通过上下文机制进行。 通过这种方式可以给新的仓库添加对应的索引,然后在当前仓库的开发中进行使用 工具 另外一个比较好的点是 augment 提供了一些工具配置,可以一键进行安装使用 任务规划 提供了任务规划,可以让用户手动指定相关任务列表,并且后续能够将本次编辑的任务导出进行保存,后续可以二次进行使用 同理,针对起他通用的agent 任务,augment 也会进行任务拆分,然后逐个实现,只不过这里提供了一个窗口,可以让用户指定任务列表,这针对于用户想要自己创建固定的任务流程是非常有用的 图表展示 不知道为什么,感觉 augment 针对 mermaid 的图标进行了展示优化,看起来比较舒服,如果能够再加一个全屏展示会更好 提示词优化 可以先编写简短或不完整的提示,然后使用提示增强从代码库中添加相关的参考、结构和约定,以便在发送提示之前对其进行改进。这个非常好用

July 17, 2025 · 1 min · 29 words

StateMachine

状态机概述 状态机是一种计算模型,用于描述系统在不同状态之间的转换逻辑。它由状态(States)、事件(Events)和转换(Transitions)组成。状态机在任一时刻只能处于一个特定状态,通过触发事件使其从一个状态转换到另一个状态。 核心概念 状态(State):系统可能处于的一种情况或模式。 事件(Event):触发状态转换的信号或动作。 转换(Transition):定义从一个状态到另一个状态的规则。 回调(Callback):状态转换时执行的逻辑。 应用场景 状态机在以下场景中特别有用: 游戏开发:管理游戏角色的不同状态(站立、行走、攻击、受伤等)。 UI 交互:控制界面元素在不同状态下的行为(正常、悬停、激活、禁用)。 工作流管理:追踪业务流程的不同阶段(创建、审核、发布)。 协议实现:网络协议的状态管理(连接中、已连接、断开连接)。 动画控制:管理动画序列和转换。 基本用法 // 定义状态和事件类型 type State = 'idle' | 'running' | 'paused' | 'stopped'; type Event = 'START' | 'PAUSE' | 'RESUME' | 'STOP'; // 创建状态机实例 const sm = new StateMachine<State, Event>('idle', [ t('idle', 'START', 'running'), t('running', 'PAUSE', 'paused'), t('paused', 'RESUME', 'running'), t('running', 'STOP', 'stopped'), ]); // 触发状态转换 await sm.dispatch('START'); // idle -> running console.log(sm.getState()); // 'running' 高级特性 全局事件(ANY_STATE) 使用 ANY_STATE 符号定义可从任意状态触发的转换: // RESET 事件可从任何状态回到 idle 状态 sm.addTransitions([ t(ANY_STATE, 'RESET', 'idle', resetCallback) ]); 状态查询和预测 // 检查当前状态是否可以接收特定事件 if (sm.can('PAUSE')) { // 可以执行暂停操作 } // 获取事件触发后的下一个状态 const nextState = sm.getNextState('STOP'); // 'stopped' // 检查当前是否为终止状态(没有可用的出站转换) if (sm.isFinal()) { // 到达终止状态 } 子状态机 子状态机是一种嵌套状态机机制,允许在一个主状态内部有自己的状态转换逻辑。这对于构建复杂的分层状态行为非常有用 ...

July 8, 2025 · 3 min · 528 words