OpenSpec + Claude Code 完整开发流程
OpenSpec + Claude Code 完整开发流程
从安装到归档,每一步你该输什么、看什么、做什么。
一、一次性安装(只做一次)终端操作123456789101112# 1. 安装 OpenSpecnpm install -g @fission-ai/openspec@latest# 2. 验证openspec --version# 3. 创建项目mkdir mas-project && cd mas-projectgit init# 4. 初始化 OpenSpec(会问你项目类型和技术栈,务必具体回答)openspec init --tools claude
初始化时的回答示例12❌ "Python app"✅ "Python 3.12 多智能体系统,LangGraph 框架,asyncio 异步,Pydantic v2,pytest 测试"
二、填写 project.md(只做一次,后续持续补充)打开 openspec/project.md,在 CC 里说:
1请阅读 openspec/project.md ...
Claude Code 源码分析笔记
Claude Code 源码分析对照 nanobot 逆向理解 Claude Code Agent 架构。
目录
Ch 00 - 全局流程图
Ch 01 - 项目概览
Ch 02 - 技术栈
Ch 03 - 目录结构
Ch 04 - 启动流程
Ch 05 - LLM 流式调用细节
Ch 06 - 工具调用系统
Ch 07 - 流式执行引擎(默认关闭)
Ch 08 - Thinking 推理模式
Ch 09 - Task 系统
Ch 10 - Skill 系统
Ch 11 - Compact:对话压缩
Ch 12 - 记忆系统
Ch 13 - 上下文管理
Ch 14 - Hooks 扩展
Ch 15 - 沙盒与权限系统
Ch 16 - MAS 转向 Harness Engineering
Ch 17 - MCP 集成
Ch 18 - 总结:Claude Code 架构全景
Ch 00 - 全局流程图
方括号为章节引用:Ch04 · Ch05 · Ch06 · Ch07 · Ch08 · Ch09 · Ch10 · Ch11 · Ch14
1234567891011121314151 ...
Nano Bot 源码分析笔记
nanobot 技术要点1. 适配器模式实现多 LLM 统一响应核心思想:不同 LLM 提供商的 API 返回格式各异,通过适配器模式统一转换为 LLMResponse 格式。
实现方式:
每个 Provider 实现 _parse_response() 方法
将原始 API 响应转换为统一的 LLMResponse 数据结构
上层代码(AgentRunner)无需关心底层使用哪个 LLM
支持的提供商:
AnthropicProvider 处理 Anthropic 格式
OpenAICompatProvider 处理 OpenAI 格式
DeepSeekProvider 处理 DeepSeek 格式
统一数据结构:
12345678910111213141516@dataclassclass ToolCallRequest: """工具调用请求""" id: str # 工具调用 ID name: str # 工具名称 a ...
Hello Agents - 基础概念
Agent构成&运行原理PEAS
运行机制
AI模型进化路线
符号主义范式知识库(规则)+ 推理机。不智能,需要人工输入规则比如 IF THEN,且比较死板导致健壮性差,诞生了“专家系统”这类产物。
联结主义范式与符号主义自上而下、依赖明确逻辑规则的设计哲学不同,联结主义是一种自下而上的方法,其灵感来源于对生物大脑神经网络结构的模仿。做出神经元(小的功能),把他们分布式的连接起来,并通过算法学习对系统设置神经元的连接权重。这一范式能成功源于计算机已经能对图片声音文本等信息直接进行理解,反映了心智社会。
强化学习通过给行为设置奖励权重,来让智能体在大量“试错”中有目的性的学习。通过“感知-行动-学习”的闭环中持续迭代自己,让其更有远见。
预训练在进行强化学习等特化目标的训练前,先用自然语言处理+监督自学习,把大量的网络文本进行输入训练出一个基础的通用模型LLM,它的目的是有一些基础常识,比如“预测下一个词”。
然后再对预训练好的模型,根据具体任务要求进行微调(小样本数据标注学习),来实现目的。
通过大量预训练的LLM,涌现出了预料外的能力:
上下文学习(In-context ...
Hello Agents - 记忆与检索&RAG
记忆与检索需求原因局限一:无状态导致的对话遗忘
当前的大语言模型虽然强大,但设计上是无状态的。这意味着,每一次用户请求(或API调用)都是一次独立的、无关联的计算。模型本身不会自动“记住”上一次对话的内容。这带来了几个问题:
上下文丢失:在长对话中,早期的重要信息可能会因为上下文窗口限制而丢失
个性化缺失:Agent无法记住用户的偏好、习惯或特定需求
学习能力受限:无法从过往的成功或失败经验中学习改进
一致性问题:在多轮对话中可能出现前后矛盾的回答
要解决这个问题,我们的框架需要引入记忆系统。
局限二:模型内置知识的局限性
除了遗忘对话历史,LLM 的另一个核心局限在于其知识是静态的、有限的。这些知识完全来自于它的训练数据,并因此带来一系列问题:
知识时效性:大模型的训练数据有时间截止点,无法获取最新信息
专业领域知识:通用模型在特定领域的深度知识可能不足
事实准确性:通过检索验证,减少模型的幻觉问题
可解释性:提供信息来源,增强回答的可信度
为了克服这一局限,RAG技术应运而生。它的核心思想是在模型生成回答之前,先从一个外部知识库(如文档、数据库、API)中检索出最相关的信息 ...
Hello Agents - 构建Agent
Agent 经典范式为了更好地组织智能体的“思考”与“行动”过程,业界涌现出了多种经典的架构范式。在本章中,我们将聚焦于其中最具代表性的三种,并一步步从零实现它们:
ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
Reflection: 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。
ReAct基本模式思考与行动是相辅相成的,思考指导行动,而行动的结果又反过来修正思考。
具体执行分成3步:
Thought (思考): 这是智能体的“内心独白”。它会分析当前情况、分解任务、制定下一步计划,或者反思上一步的结果。
Action (行动): 这是智能体决定采取的具体动作,通常是调用一个外部工具,例如 Search['华为最新款手机']。
Observation (观察): 这是执行Action后从外部工具返回的结果,例如搜索结果的摘要或API的返回值。
智能体将不 ...
Hello Agents - 上下文工程
上下文工程是什么?所谓“上下文”,是指在对大语言模型(LLM)进行采样时所包含的那组 tokens。手头的工程问题,是在 LLM 的固有约束之下,优化这些 tokens 的效用,以便稳定地得到预期结果。
上下文工程 vs. 提示工程
提示工程关注如何编写与组织 LLM 的指令以获得更优结果(例如系统提示的写法与结构化策略);而上下文工程则是在推理阶段,如何策划与维护“最优的信息集合(tokens)”,其中不仅包含提示本身,还包含其他会进入上下文窗口的一切信息。
上下文腐蚀(context rot)
是指随着上下文窗口中的 tokens 增加,模型从上下文中准确回忆信息的能力反而下降。因此,上下文必须被视作一种有限资源,且具有边际收益递减。
上下文工程的目标与实现用尽可能少、但高信号密度的 tokens,最大化获得期望结果的概率。
系统提示(System Prompt):语言清晰、直白,信息层级把握在“刚刚好”的高度。常见两极误区:
过度硬编码:在提示中写入复杂、脆弱的 if-else 逻辑,长期维护成本高、易碎。
过于空泛:只给出宏观目标与泛化指引,缺少对期望输出的具体信号或假定了错 ...
UGUI学习 - 合批规则
1.抛开UGUI的概念,什么是drawcall?什么是批处理?他俩有啥关系?
CPU告诉GPU“可以渲染这个模型”的过程或者说这个命令叫做Draw Call(我们在Stats面板上看到的Batches其实就是Draw Call的调用次数)。在NGUI里甚至有UIDrawCall这个具体的类去抽象一次drawcall。
批处理(UGUI里类似的行为叫合批)就是把渲染时使用相同材质(Shader)、相同贴图的3D模型的网格合并在一起,成为一个大网格,然后再调用一次Draw Call,直接渲染这一个大网格。
关系就是,批处理是降低CPU发起drawcall次数的手段。
2.Unity中我怎么直观的去检查它?
frame debugger可以查看一帧整体的绘制流程,从而观察到UGUI层调了多少次Draw Mesh、每次是怎么样的。
profiler可以更直接的看到一个Canvas下的batch 0、batch 1…
3.基础的UGUI合批规则
无论是UGUI还是NGUI,都以一个基础的合批规则:当前渲染的UI组件与上一个UI组件的material+shader(也就是材质球)、texture( ...
AB包基础
2023年6月更新:已完成学习并实现huatuo+yooasset+uniTask的demo,下一步是接入自己的ui框架并迭代,地址:https://github.com/CodingCodingK/CodingK_SutureFramework
=================================================================================
学习计划:(我感觉用脑图好像比md更适合这种架构的学习和复习)
什么是热更 https://www.bilibili.com/video/BV1Np4y1e7DX/
AB入门 https://www.bilibili.com/video/BV1LD4y1m7kF
AB实战 https://www.bilibili.com/video/BV1VP411G7w2/
AA包 https://blog.csdn.net/u011366226/article/details/104506802
UniTask https://www.lfzxb.top/unitask_reademe_cn/ ...
我用向日葵打开unity编辑器怎么白屏了?
原因根据网上搜索的结果,大致有两个原因:
台式机没有外接显示器,或显示器处于关闭状态。笔记本合上了盖子。
根据以上原因,个人猜测主要是因为没有检测到显示器,电脑显卡自动切换到某种低负载模式,这将导致一些使用显卡硬件加速的软件出现无法显示的问题。
没错,所以unity编辑器肯定是用了硬件加速或者根据硬件情况切换负载模式这种策略。
解决方法解决思路:既然软件无法正常显示,是由于显卡模式的切换,导致依赖显卡硬件加速的应用无法显示,那么解决方法主要有两种:
方法一: 让显卡能检测到显示器。可以通过外接显示器并通电、让笔记本打开盖子、外接虚拟HDMI之类的负载(让显卡误以为我们外接了显示器)。方法二: 若某个软件时因为依赖显卡硬件加速而导致无法显示,那么禁用该软件的显卡硬件加速功能即可。禁用显卡硬件加速方法又有两种思路:禁用手段一:百度,不同软件有不同的禁用方法。(可能有的软件没提供禁用选项)禁用手段二:在NVIDIA控制面板里指定禁用某个软件(个人猜测,没试过)
其他解决方法搜索的时候还遇到过别人有其他情况,一一列举,
1.清除cache
2.重装对应版本unity(前提是就个别版本unity ...

