{"id":25614581,"url":"https://github.com/decalogue/flyllm","last_synced_at":"2026-03-14T16:35:27.427Z","repository":{"id":276742217,"uuid":"930136092","full_name":"Decalogue/flyllm","owner":"Decalogue","description":"LLM","archived":false,"fork":false,"pushed_at":"2025-02-10T07:06:55.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T07:28:47.973Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Decalogue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-10T06:07:09.000Z","updated_at":"2025-02-10T07:06:58.000Z","dependencies_parsed_at":"2025-02-10T07:28:57.722Z","dependency_job_id":"beb2dc79-2e57-4cc1-be16-dfa3e71f355e","html_url":"https://github.com/Decalogue/flyllm","commit_stats":null,"previous_names":["decalogue/llm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decalogue%2Fflyllm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decalogue%2Fflyllm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decalogue%2Fflyllm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decalogue%2Fflyllm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Decalogue","download_url":"https://codeload.github.com/Decalogue/flyllm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240117377,"owners_count":19750346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-22T02:32:48.473Z","updated_at":"2026-03-14T16:35:27.420Z","avatar_url":"https://github.com/Decalogue.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔥AI烽火：大模型时代的征途\n\n\u003e 大模型实战【笔记+代码+高频面试题】\n\n\u003e LLM \u0026 Agent \u0026 Memory（大模型 \u0026 智能体 \u0026 记忆）+ [leetcode](leetcode.md)\n\n---\n\n## 📋 问题列表\n\n### LLM\n\n#### Tokenizer\n\n1. [什么是分词器？为什么 LLM 需要分词而不是直接处理字符？](llm/what-is-tokenizer.md)\n2. [BPE 算法的核心思想是什么？能详细说说它的训练和编码过程吗？](llm/BPE-algorithm.md)\n3. [SentencePiece 和 BPE 有什么区别？为什么 GPT 系列用 BPE，而 T5 用 SentencePiece？](llm/SentencePiece-vs-BPE.md)\n4. [WordPiece 和 BPE 的区别在哪里？BERT 为什么选择 WordPiece？](llm/WordPiece-vs-BPE.md)\n5. [Unigram Language Model Tokenizer 的工作原理是什么？它有什么优势？](llm/Unigram-Language-Model-Tokenizer.md)\n6. [为什么子词分词比词级分词更适合大模型？遇到稀有词怎么处理？](llm/Subword-vs-Word-level.md)\n7. [词汇表大小如何确定？太大会怎样，太小会怎样？](llm/Vocabulary-Size-Tradeoff.md)\n8. [特殊标记 [CLS]、[SEP]、[PAD]、[MASK] 分别起什么作用？为什么需要它们？](llm/Special-Tokens.md)\n\n#### Transformer\n\n1. [Transformer 的核心架构是什么？为什么它成为所有 LLM 的基础？Encoder 和 Decoder 的区别在哪里？](llm/TransformerArchitecture.md)\n2. [自注意力机制的数学公式是什么？Q、K、V 分别代表什么？为什么要除以 sqrt(d_k)？](llm/SelfAttentionMath.md)\n3. [为什么需要多头注意力？多头比单头好在哪里？头数怎么选择？](llm/MultiHeadAttention.md)\n4. [Cross-Attention 和 Self-Attention 有什么区别？分别用在什么场景？](llm/CrossVsSelfAttention.md)\n5. [注意力机制的计算复杂度是 O(n²)，如何优化？有哪些降低复杂度的方法？](llm/AttentionComplexityOptimization.md)\n6. [因果掩码（Causal Mask）是什么？为什么自回归模型需要它？怎么实现？](llm/CausalMask.md)\n7. [稀疏注意力有哪些实现方式？Longformer 和 BigBird 的区别是什么？](llm/SparseAttention.md)\n8. [局部注意力适用于什么场景？窗口大小怎么设计？](llm/LocalAttention.md)\n9. [线性注意力如何降低复杂度？Performer 和 Linformer 的区别是什么？](llm/LinearAttention.md)\n10. [GQA（分组查询注意力）是什么？为什么 LLaMA 2 用它？它如何平衡性能和效率？](llm/GQA.md)\n11. [Longformer 的滑动窗口注意力是怎么实现的？窗口大小怎么选？](llm/LongformerSlidingWindow.md)\n12. [Flash Attention 解决了什么问题？它的核心思想是什么？Flash Attention 2 改进了什么？](llm/FlashAttention.md)\n13. [注意力权重可视化能告诉我们什么？如何分析模型的注意力模式？](llm/AttentionPatternAnalysis.md)\n14. [注意力机制会出现梯度消失吗？如何缓解？](llm/AttentionVanishingGradient.md)\n15. [位置偏置（Position Bias）是什么？如何消除？](llm/PositionBias.md)\n16. [位置编码有哪些方式？绝对位置编码和相对位置编码的区别是什么？](llm/PositionalEncoding.md)\n17. [RoPE 的原理是什么？为什么它能外推到更长序列？怎么实现的？](llm/RoPE.md)\n18. [ALiBi 是什么？它如何实现位置编码？和 RoPE 比有什么优势？](llm/ALiBiVsRoPE.md)\n19. [LayerNorm 和 BatchNorm 的区别是什么？为什么 Transformer 用 LayerNorm？](llm/LayerNormVsBatchNorm.md)\n20. [RMSNorm 是什么？它和 LayerNorm 的区别？为什么 LLaMA 用 RMSNorm？](llm/RMSNorm.md)\n21. [预训练、微调、指令微调的区别是什么？各自的目标是什么？](llm/PretrainingFinetuningInstructionTuning.md)\n22. [模型并行、数据并行、流水线并行有什么区别？如何选择？能混合使用吗？](llm/Parallelism.md)\n23. [ZeRO 优化器如何减少显存？ZeRO-1、ZeRO-2、ZeRO-3 的区别是什么？](llm/ZeRO.md)\n24. [SFT 和 RLHF 的区别是什么？各自的优缺点？](llm/SFT_VS_RLHF.md)\n25. [大模型的上下文长度限制是怎么产生的？如何扩展上下文窗口？有哪些方法？](llm/ContextWindowLimitAndExtension.md)\n26. [BF16 FP16 之间的区别，适用的情况](llm/Bf16VsFp16.md)\n27. [7B 模型显存计算](llm/显存计算.md)\n\n#### Finetuning\n\n1. [全量微调和参数高效微调的区别是什么？什么时候用全量微调？](llm/FullVsParameterEfficient.md)\n2. [LoRA 的原理是什么？rank 和 alpha 参数怎么选？为什么有效？](llm/LoRA-Principle.md)\n3. [QLoRA 如何进一步降低显存？4-bit 量化怎么实现？精度损失大吗？](llm/QLoRA-Principle.md)\n4. [Adapter 和 LoRA 的区别是什么？各自的适用场景？](llm/AdapterVsLoRA.md)\n5. [指令微调的数据怎么构建？指令格式怎么设计？需要多少数据？](llm/InstructionsDataConstruction.md)\n6. [数据合成（Data Synthesis）有哪些方法？如何生成高质量的SFT数据？合成数据的质量如何评估？](llm/DataSynthesis.md)\n7. [SFT 训练中的 Loss 如何设计？交叉熵损失的具体计算过程是什么？如何处理不平衡的数据分布？](llm/SFT-Loss-Design.md)\n8. [SFT 之后出现灾难性遗忘（Catastrophic Forgetting）的原因是什么？如何解决？有哪些具体方法？](llm/CatastrophicForgetting.md)\n9. [多任务微调如何平衡不同任务？损失函数怎么设计？如何避免任务间的负迁移？](llm/MultiTaskFinetuning.md)\n10. [微调的学习率怎么设置？初始学习率怎么选？需要 Warmup 吗？学习率调度策略如何选择？](llm/Finetuning-LearningRate.md)\n11. [早停机制怎么设计？验证指标怎么选？patience 怎么设置？如何防止过拟合？](llm/EarlyStopping.md)\n12. [微调的数据增强有哪些方法？如何设计增强策略？如何保证增强后的数据质量？](llm/Finetuning-DataAugmentation.md)\n\n#### RL\n\n1. [强化学习的基本概念是什么？如何应用到 LLM 训练？](llm/ReinforcementLearningLLM.md)\n2. [Policy Gradient 方法的核心思想是什么？REINFORCE 算法如何计算梯度？](llm/PolicyGradient-REINFORCE.md)\n3. [Actor-Critic 方法是什么？价值函数和策略函数如何训练？](llm/ActorCritic.md)\n4. [PPO 为什么比 REINFORCE 更稳定？它的核心改进是什么？](llm/PPO-vs-REINFORCE.md)\n5. [RLHF 的完整流程是什么？每一步具体怎么做？](llm/RLHF-FullProcess.md)\n6. [奖励模型如何训练？奖励函数怎么设计？需要多少数据？](llm/Reward-Model-Training.md)\n7. [DPO 相比 RLHF 的优势是什么？如何实现？为什么更简单？](llm/DPO-vs-RLHF.md)\n8. [KL 散度惩罚为什么需要？KL 系数怎么设置？太大太小会怎样？](llm/KL-Divergence-Penalty.md)\n9. [奖励函数怎么设计？奖励黑客是什么？如何防止？](llm/Reward-Hacking.md)\n10. [离线强化学习如何应用到 LLM？有哪些挑战？](llm/Offline-RL-for-LLM.md)\n11. [探索与利用如何平衡？在 LLM 训练中如何体现？](llm/Exploration-Exploitation.md)\n12. [价值函数如何用神经网络表示？如何训练？](llm/Value-Function-Training.md)\n13. [讲一下 GRPO 原理](llm/GRPO.md)\n14. [DAPO 相比 GRPO 做了哪些改进？](llm/DAPO-vs-GRPO.md)\n\n#### Inference\n\n1. [LLM 模型推理的流程是什么？有哪些关键步骤？如何优化？](llm/ModelInference.md)\n2. [KV Cache 如何加速推理？如何实现？内存怎么优化？](llm/KVCache-kimi.md)\n3. [vLLM 的 PagedAttention 机制是什么？如何实现 KV Cache 的内存管理？](llm/PagedAttention.md)\n4. [vLLM 的并行机制有哪些？Tensor Parallelism、Pipeline Parallelism、Data Parallelism 在 vLLM 中如何结合？](llm/vLLM-Parallelism.md)\n5. [vLLM 的 Continuous Batching 如何实现？如何动态调度请求？相比静态批处理有什么优势？](llm/vLLMContinuousBatching.md)\n6. [vLLM 和 SGLang 的区别](llm/VllmVsSglang.md)\n7. [生成解码策略和 temperature 的影响](llm/DecodingAndTemperature.md)\n8. [批量推理如何优化？批处理策略怎么设计？动态批处理怎么实现？](llm/BatchInferenceOptimization.md)\n9. [流式推理如何实现？如何优化流式输出？用户体验如何提升？](llm/StreamInference.md)\n10. [推理量化有哪些方法？INT8、INT4、INT1 的区别？如何选择？量化后的精度损失如何评估？](llm/InferenceQuantization.md)\n11. [推理缓存如何设计？缓存策略有哪些？如何管理缓存？缓存命中率如何提升？](llm/InferenceCacheDesign.md)\n12. [推理延迟和吞吐量如何优化？如何平衡延迟和准确性？性能瓶颈如何定位和优化？](llm/LatencyThroughputOptimization.md)\n13. [大模型流式解析](llm/LLMStream.md)\n14. [KVCache-工业架构图](llm/KVCache-工业架构图.md)\n\n#### RAG\n\n1. [RAG 的核心思想是什么？为什么有效？解决了什么问题？](llm/[RAG.md](http://RAG.md))\n2. [RAG 系统的检索模块怎么设计？有哪些检索方法？怎么选择？](llm/RAGRetrievalDesign.md)\n3. [向量检索和关键词检索的区别？如何结合？混合检索怎么设计？](llm/VectorAndKeywordRetrieval.md)\n4. [Dense Retrieval 和 Sparse Retrieval 的区别？BM25 和 DPR 的区别？](llm/RetrievalMethodsComparison.md)\n5. [Hybrid Search 如何实现？权重怎么平衡？](llm/HybridSearch.md)\n6. [向量数据库怎么选？Milvus 和 Qdrant 的区别？](llm/VectorDB_Milvus_vs_Qdrant.md)\n7. [Rerank 为什么需要？如何选择 Rerank 模型？什么时候用？](llm/RerankExplanation.md)\n8. [RAG 文档分块策略怎么设计？有哪些方法？块大小怎么选？](llm/RAGChunkingStrategy.md)\n9. [RAG 中的上下文窗口限制怎么处理？长文档如何优化？](llm/RAGContextWindowOptimization.md)\n10. [RAG 中 Query Expansion 如何优化查询？查询重写怎么实现？](llm/RAG_QueryExpansion.md)\n11. [字节跳动 RAG 实践手册](https://docs.qq.com/doc/DSXJiaE5taUtaVGx6?_t=1768892540919\u0026nlc=1)\n\n### Agent\n\n#### Agent Framework\n\n1. [Agent的核心技术模块有哪些？每个模块的功能、难点，以及它们之间怎么联动？](llm/AgentCoreModules.md)\n2. [Tool Calling 如何让模型学会使用工具？工具描述怎么设计？](llm/ToolCalling.md)\n3. [AI Agent 和传统 LLM 的区别是什么？有哪些类型？本质区别和优劣对比](llm/AIAgentVsLLMDifferences.md)\n4. [ReAct 框架如何实现？它的核心思想是什么？推理与行动如何平衡？](llm/ReActFrameworkCoreMechanism.md)\n5. [Agent 的规划能力如何设计？有哪些规划方法？如何实现？](llm/AgentPlanningDesign.md)\n6. [Agent 的记忆机制有哪些类型？如何实现？](llm/AgentMemoryMechanism.md)\n7. [Agent 的反思能力如何实现？反思机制怎么设计？](llm/AgentReflectionMechanism.md)\n8. [Agent 的决策流程如何设计？有哪些决策框架？如何选择？](llm/AgentDecisionFramework.md)\n9. [Agent 的错误恢复机制如何设计？重试策略怎么设计？](llm/AgentErrorRecoveryAndRetry.md)\n10. [Agent 的自主性如何体现？如何控制 Agent 的自主性？安全和效率如何权衡？](llm/AgentAutonomyMechanismAndControl.md)\n11. [Agent 的长期记忆和短期记忆如何实现？记忆系统怎么设计？](llm/AgentMemorySystemDesign.md)\n12. [Multi-Agent 系统如何实现？Agent 之间如何协作？通信机制怎么设计？](llm/MultiAgentSystemDesign.md)\n13. [LangChain 的核心组件是什么？Agent 系统怎么设计？](llm/LangChainCoreComponentsAndAgentDesign.md)\n\n#### Function Call\n\n1. [Function Call 的格式是什么？JSON Schema 如何定义？Schema 怎么设计？](llm/FunctionCallSchema.md)\n2. [如何让模型学会选择合适的函数？训练方法有哪些？训练数据怎么设计？](llm/FunctionCallingTraining.md)\n3. [Function Call 的多轮对话如何处理？为什么这是最难的部分？](llm/FunctionCallMultiTurn.md)\n4. [Function Call 的参数提取错误如何处理？错误处理机制怎么设计？](llm/FunctionCallErrorHandling.md)\n5. [Function Call 的流式输出如何实现？流式调用如何优化？](llm/FunctionCallStreaming.md)\n6. [Function Call 的并行调用如何实现？并行调用如何管理？](llm/FunctionCallParallel.md)\n7. [Function Call 的验证机制如何设计？参数如何校验？验证规则怎么设计？](llm/FunctionCallValidation.md)\n8. [Function Call 的多轮交互如何维护上下文？上下文管理怎么设计？](llm/FunctionCallContextManagement.md)\n9. [Function Call 的链式调用如何实现？依赖关系如何处理？依赖图怎么设计？](llm/ChainFunctionCall.md)\n10. [Function Call 的容错机制如何设计？调用失败如何处理？重试策略怎么设计？](llm/FunctionCallFaultTolerance.md)\n11. [Function Call 的权限控制如何实现？如何限制可调用函数？权限系统怎么设计？](llm/FunctionCallPermissionControl.md)\n12. [Function Call 的延迟如何优化？如何平衡准确性和速度？](llm/FunctionCallLatencyOptimization.md)\n\n#### Skills\n\n1. [Agent 的技能（Skill）和工具（Tool）有什么区别？技能库在架构中如何定位？](llm/SkillVsTool.md)\n2. [如何让 Agent 从历史执行轨迹中学习并沉淀为可复用技能？技能抽取与泛化怎么做？](llm/AgentSkillExtraction.md)\n3. [技能库（Skill Library）如何设计？技能的表示、检索和组合策略有哪些？](llm/SkillLibraryDesign.md)\n4. [技能与记忆的关系是什么？技能是否可视为一种长期记忆？如何与记忆模块联动？](llm/SkillMemoryRelation.md)\n5. [多技能 Agent 如何做技能选择与调度？与工具调用（Tool Calling）的决策有何异同？](llm/SkillSelectionVsToolCalling.md)\n6. [技能的可组合性如何设计？链式技能、条件分支技能在工程上如何实现？](/root/data/AI/flyllm/llm/SkillComposabilityDesign.md)\n\n### Memory\n\n1. [Agent 的记忆机制有哪些类型？如何实现？](llm/AgentMemoryMechanism.md)\n2. [Agent 的长期记忆和短期记忆如何实现？记忆系统怎么设计？](llm/AgentMemorySystemDesign.md)\n3. [短期记忆、工作记忆、长期记忆的边界如何划分？存储介质与检索方式如何选型？](llm/MemoryHierarchyArchitecture.md)\n4. [记忆检索的得分函数如何设计？向量相似度、时间衰减、重要性权重如何融合？](llm/MemoryRetrievalScoring.md)\n5. [记忆冲突（同一实体在不同时刻的描述矛盾）如何检测与解决？](llm/MemoryConflictDetectionAndResolution.md)\n6. [记忆的写入风暴与检索盲区如何应对？高并发下的记忆滞后怎么处理？](llm/MemoryWriteStormAndRetrievalBlindSpot.md)\n7. [MemGPT 的分层记忆与虚拟上下文管理是怎样的？和传统 RAG 记忆有何区别？](llm/MemGPTLayeredMemoryAndVirtualContext.md)\n8. [如何评估记忆系统效果？命中率、一致性、延迟等指标如何权衡？](llm/MemorySystemEvaluationMetricsAndTradeoffs.md)\n\n---\n\n## 💻 手撕代码清单\n\n### LLM\n\n#### Transformer\n\n1. 实现 Multi-Head Attention（MHA），包括 Q、K、V 的线性变换、多头分割、注意力计算和拼接\n2. 实现 Cross-Attention，包括编码器-解码器注意力机制\n3. 实现分组查询注意力（GQA），包括 KV 头的分组和注意力计算\n4. 实现 RoPE（Rotary Position Embedding），包括位置编码的旋转矩阵计算和应用\n5. 实现 ALiBi（Attention with Linear Biases），包括位置偏置的计算\n6. 实现因果掩码（Causal Mask），支持自回归模型的掩码生成\n7. 实现 Layer Normalization，包括均值和方差计算、归一化和缩放\n8. 实现 RMSNorm，包括均方根归一化的计算\n9. 实现位置编码（Positional Encoding），包括正弦余弦位置编码的生成\n10. 实现 Flash Attention 的核心算法，包括分块计算和在线 softmax\n11. 实现 MoE 的专家路由算法，包括 Top-K 选择和负载均衡\n12. 实现梯度裁剪（Gradient Clipping），包括按范数裁剪和按值裁剪\n13. 实现学习率调度器，包括 Warmup、Cosine、Step 等调度策略\n14. 实现权重初始化，包括 Xavier 和 He 初始化方法\n\n#### Finetuning\n\n1. 实现 LoRA 的前向和反向传播，包括低秩矩阵分解和参数更新\n2. 实现 Adapter 层，包括下投影、上投影和残差连接\n3. 实现 Prefix Tuning，包括可训练前缀的初始化和前向传播\n4. 实现梯度累积逻辑，包括梯度累加和参数更新时机控制\n5. 实现早停（Early Stopping）机制，包括验证指标监控和最佳模型保存\n6. 实现学习率查找器（Learning Rate Finder），用于自动选择学习率\n\n#### RL\n\n1. 实现 REINFORCE 算法，包括策略梯度计算和参数更新\n2. 实现 PPO 算法，包括 clipped objective 和重要性采样\n3. 实现 GAE（Generalized Advantage Estimation），包括优势函数和回报计算\n4. 实现奖励模型的训练逻辑，包括对比损失和偏好学习\n5. 实现 KL 散度惩罚项，用于 RLHF 中的分布约束\n6. 实现 DPO 损失函数，包括直接偏好优化的目标函数\n\n#### Inference\n\n1. 实现 KV Cache 的数据结构和管理逻辑，包括缓存更新和内存优化\n2. 实现批量推理的批处理逻辑，包括动态批处理和填充处理\n3. 实现流式推理的生成器，包括 token 流式输出和缓冲管理\n4. 实现模型量化的核心算法，包括 INT8、INT4 量化和反量化\n5. 实现模型剪枝算法，包括结构化剪枝和非结构化剪枝\n6. 实现 Speculative Decoding，包括草稿模型和验证逻辑\n7. 实现连续批处理（Continuous Batching），包括请求队列管理和动态调度\n8. 实现 PagedAttention 的内存管理，包括分页存储和内存分配\n\n#### RAG\n\n1. 实现 BM25 检索算法，包括词频、逆文档频率和得分计算\n2. 实现向量检索功能，包括余弦相似度计算和 Top-K 检索\n3. 实现混合检索（Hybrid Search），包括向量检索和关键词检索的融合和权重平衡\n4. 实现文档分块（Chunking）算法，包括固定窗口、滑动窗口和语义分块\n5. 实现 Rerank 功能，包括交叉编码器的推理和重排序\n6. 实现 Query Expansion，包括查询重写和扩展词生成\n7. 实现增量更新逻辑，包括新文档的索引更新和旧文档的删除\n\n### Agent\n\n#### Agent Framework\n\n1. 实现 ReAct 框架的核心逻辑，包括推理和行动的循环\n2. 实现 Agent 的状态机，包括状态转换和动作执行\n3. 实现 Agent 的记忆系统，包括短期记忆和长期记忆的管理\n4. 实现多 Agent 系统的通信机制，包括消息传递和协调逻辑\n5. 实现 Agent 的规划算法，包括任务分解和步骤生成\n\n#### Function Call\n\n1. 实现 Function Call 的参数解析器，包括 JSON Schema 验证和类型转换\n2. 实现 Function Call 的上下文管理器，支持多轮对话的上下文维护\n3. 实现 Function Call 的链式调用逻辑，包括依赖关系解析和执行顺序\n4. 实现 Function Call 的容错机制，包括错误捕获和重试策略\n5. 实现 Function Call 的异步调用框架，包括并发控制和结果聚合\n\n#### Skills\n\n1. 实现技能库的检索接口，支持按描述向量检索与按元数据过滤\n2. 实现技能执行轨迹的解析与关键步骤抽取（用于沉淀为技能）\n3. 实现简单的技能调度器，根据任务描述选择 Top-K 技能并排序\n4. 实现技能组合的执行图，支持链式依赖与并行分支\n\n### Memory\n\n1. 实现短期记忆的滑动窗口管理，包括 token 计数与超出截断策略\n2. 实现记忆检索得分函数（向量相似度 + 时间衰减 + 重要性权重）\n3. 实现长期记忆的批量写入与异步索引更新（对接向量库接口）\n4. 实现记忆融合逻辑：将检索到的 Top-K 记忆格式化为 prompt 注入\n5. 实现简单的记忆重要性评分（基于 LLM 打分或规则：访问频率、新近度）\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecalogue%2Fflyllm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecalogue%2Fflyllm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecalogue%2Fflyllm/lists"}