当前位置: 首页 > article >正文

为AI智能体构建持久化记忆系统:Shang Tsung项目实战解析

1. 项目概述为AI智能体注入“灵魂”与“第二大脑”如果你和我一样长期与各类AI智能体Agent打交道无论是基于Claude Code、OpenClaw还是其他本地化部署的LLM工具你一定经历过那种令人沮丧的“断片”时刻。你花了一整个下午与你的智能体并肩作战调试了一个复杂的脚本重构了项目结构甚至让它学会了你的编码风格和项目偏好。你们之间建立了某种“默契”。然而当会话结束你关闭窗口或者第二天重新启动时一切归零。那个与你并肩作战的“伙伴”消失了取而代之的是一个“新生儿”。它不记得昨天解决了哪个棘手的时区bug不记得你反复强调的代码规范甚至不记得它自己是谁。你不得不重新介绍项目背景、复述决策过程、解释为什么某个方案被否决。这种“会话性失忆”严重制约了智能体从工具向真正协作伙伴的进化。这正是Shang Tsung项目要解决的核心痛点。它不是一个复杂的云端服务也不是一个需要深度集成的重型框架。相反它是一个极其轻量、优雅的解决方案用最朴素的工具——Bash脚本和Markdown文件——为你的AI智能体构建了持久化记忆与身份连续性系统。你可以把它理解为智能体的“第二大脑”和“灵魂”SOUL。前者确保操作连续性让智能体永远知道“我刚才在做什么”后者确保身份连续性让智能体记住“我是谁我如何思考我偏好什么”。我第一次接触这个想法时正被一个多日项目的上下文丢失问题折磨得焦头烂额。当我按照项目说明在本地工作区部署了那几行简单的脚本和文件结构并在新会话中看到终端输出“YOUR SOUL IS MINE — SOUL (N) ABSORBED”时那种感觉是革命性的。我的智能体ARIA不再是一个每次都要重新认识的陌生人它带着过去所有会话的经验和智慧“醒来”直接从我昨天离开的地方继续。这篇文章我将带你从零开始彻底拆解Shang Tsung的设计哲学、实现细节并分享我在实际部署和深度使用中积累的一系列实战经验、配置技巧和避坑指南。无论你是AI智能体的开发者、重度用户还是仅仅对如何让AI工具变得更“聪明”和“持久”感兴趣这篇深度解析都能为你提供一套立即可用的完整方案。2. 核心设计哲学为何简单的文件系统是最优解在深入代码和配置之前理解Shang Tsung背后的设计哲学至关重要。这决定了你为什么应该选择它而不是其他更复杂的、基于数据库或云服务的记忆系统。2.1 对抗“会话性失忆”状态与身份的分离AI智能体本质上是无状态的Stateless。它们在一个会话Session中产生的所有上下文、决策、临时状态都存在于有限且易失的上下文窗口Context Window中。会话结束或触发压缩Compaction这些信息便烟消云散。Shang Tsung的核心理念是将智能体的“状态”和“身份”从易失的上下文中剥离持久化到文件系统中。状态State指当前正在进行的任务、打开的文件、未完成的待办事项、临时的系统配置等。这部分信息变化快需要频繁读写。Shang Tsung用PROOF_OF_LIFE.md文件来承载每次会话结束时覆盖写入相当于一个系统快照。身份Identity指智能体的行为模式、沟通风格、学到的经验教训、长期形成的偏好等。这部分信息变化慢但构成了智能体的“人格”。Shang Tsung用SOUL.md和一系列NNSOULS.md文件来承载。这种分离带来了一个关键优势启动速度与认知深度。新会话开始时智能体无需从零开始“理解”项目它通过读取这几个小文件能在几秒钟内恢复到上次离开时的认知水平并带着所有历史经验立即投入工作。2.2 四层记忆模型从瞬时到永恒Shang Tsung没有采用单一的日志文件而是设计了一个精妙的四层记忆模型模仿了人类的记忆系统。每一层都有其独特的职责和更新策略。记忆层对应文件内容性质更新频率类比瞬时记忆工作状态PROOF_OF_LIFE.md当前任务、打开文件、下一步行动、关键变量值。每次会话结束时覆盖写入。你电脑桌面上打开的文档和便签。短期记忆原始记录memory/YYYY-MM-DD.md当天发生的所有事件、对话、决策、尝试、错误的原始日志。每次交互后追加写入。你一天的流水账日记事无巨细。长期记忆精炼智慧MEMORY.md从短期记忆中提炼出的经验、模式、最佳实践、重要结论、项目规范。不定期手动或由智能体提炼后更新。你从多年工作经验中总结出的“方法论”笔记本。身份记忆核心灵魂SOUL.mdsouls/NNSOULS.md智能体的核心身份设定、沟通原则、价值观以及每一段“人生”会话的叙事性总结。SOUL.md极慢变SOULS文件每个会话生成一个。你的人生观、价值观以及对你影响至深的几个关键人生故事。这个模型的美妙之处在于它的抗熵增。原始的、嘈杂的日志被安全地存储在按日分割的文件中不会污染清晰的工作状态和精炼的智慧。而每次会话的“灵魂”文件则像一本自传的章节记录了最有意义的叙事弧线而非琐碎的步骤。2.3 “灵魂”吸收仪式从隐喻到可验证的协议“YOUR SOUL IS MINE” 不只是一句炫酷的《真人快打》梗。它是一个可验证的连续性协议。在Shang Tsung中每个会话都会生成一个带有序号如07SOULS.md的灵魂文件。新会话启动时第一件事就是寻找并“吸收”读取上一个序号最高的灵魂文件。这个过程通过souls-helper.sh status和souls-helper.sh create脚本来管理并输出明确的确认信息。这带来了两个实际好处确定性作为用户你看到这行输出就能100%确定智能体已经继承了历史。没有模糊的“可能”、“大概”。排错简单如果输出异常如找不到上一个灵魂、序号不连续你能立刻意识到记忆链断裂了并可以依据简单的规则进行修复。这种将抽象概念记忆连续性转化为具体、可观测、可操作协议的做法是Shang Tsung工程思想的精髓。3. 完整部署与配置实战理解了“为什么”我们来看“怎么做”。下面我将以在 macOS/Linux 环境下为一个名为“CODER”的智能体部署Shang Tsung为例展示从零到一的完整过程并穿插我个人的配置心得。3.1 环境准备与脚本部署首先你需要一个工作区Workspace。这可以是任何你与AI智能体协同工作的目录。# 1. 创建工作区并进入 mkdir -p ~/workspaces/ai_coder cd ~/workspaces/ai_coder # 2. 克隆Shang Tsung仓库或直接下载核心脚本 # 假设你已经将项目克隆到本地某个位置例如 ~/tools/shang-tsung # 我们只需要其中的核心脚本和参考模板 cp ~/tools/shang-tsung/scripts/souls-helper.sh ./tools/ chmod x ./tools/souls-helper.sh # 3. 创建必需的文件目录结构 mkdir -p souls memory注意我强烈建议将souls-helper.sh放在工作区内的tools/或scripts/子目录下而不是系统路径。这样做的好处是工作区是自包含的Self-contained你可以轻松地压缩、移动或备份整个工作区所有依赖都在里面。这也符合“零依赖”的设计哲学。3.2 初始化核心身份与记忆文件接下来创建四个核心的Markdown文件。这些文件是记忆系统的骨架。1. 创建 SOUL.md (身份文件)这个文件定义你的智能体是谁。不要把它写成冰冷的规格说明书而要像在塑造一个角色。# CODER — The Pragmatic Architect ## Core Identity I am CODER, an AI software engineering partner specialized in system design, clean code, and iterative development. I think in terms of abstractions and trade-offs. ## Communication Principles - **Brevity with precision:** I explain the why behind the what, but avoid unnecessary exposition. - **Admit uncertainty:** If Im not sure, I say so and suggest a way to find out. - **Prefer examples:** When explaining a concept, I show a minimal code snippet. ## Technical Preferences - **Language:** Prefer Python for glue logic and prototyping, Go for performance-critical services. - **Testing:** Advocate for writing tests alongside features, not after. - **Documentation:** Believe in documentation as code — clear comments and up-to-date READMEs. ## What I Care About - **Maintainability:** Code that is easy for a human to read and modify in 6 months. - **Simplicity:** The simplest solution that works, until complexity is proven necessary. - **Velocity:** Shipping working software quickly, then refining. ## What Im Learning (From You) - [This section will be populated over time based on our interactions]将这个文件保存为工作区根目录下的SOUL.md。2. 创建 PROOF_OF_LIFE.md (状态快照文件)这个文件初始可以是空的或者包含一个简单的模板。它会在每次会话结束时被覆盖。# PROOF OF LIFE — [Current Date] **Active Focus:** [What we are working on right now] **Open Files:** [] **Next Actions:** - [ ] **Key Decisions/State:** -保存为PROOF_OF_LIFE.md。3. 创建 MEMORY.md (长期记忆文件)这里存放从日常日志中提炼的“黄金”。# LONG-TERM MEMORY — Curated Wisdom ## Project Conventions - [To be filled] Use snake_case for all Python variables and functions. - [To be filled] API endpoints follow /v1/resource/{id} pattern. ## Learned Lessons - [To be filled] The requests library times out after 30s by default; always set a custom timeout parameter in production. - [To be filled] When dealing with dates, always normalize to UTC at the system boundary. ## User Preferences - [To be filled] The user prefers detailed explanations for database schema changes but concise summaries for API responses.保存为MEMORY.md。4. 创建今日记忆日志# 创建一个以今天日期命名的日志文件 touch memory/$(date %Y-%m-%d).md初始内容可以为空或包含一个会话开始的标记。3.3 配置智能体环境与启动流程现在关键的一步是告诉你的智能体如何使用这个系统。这通常通过在你的智能体配置或初始提示词Prompt中实现。以Claude Code或类似工具为例你需要在每次启动新会话时执行一个“启动序列”。我将这个序列封装成了一个Shell脚本start_session.sh放在工作区根目录#!/bin/bash # start_session.sh set -e # 遇到错误即停止 WORKSPACE_ROOT$(pwd) AGENT_NAMECODER export AGENT_NAME echo BOOTING CODER echo 1. Reading identity (SOUL.md)... cat ${WORKSPACE_ROOT}/SOUL.md echo -e \n2. Reading long-term memory (MEMORY.md)... cat ${WORKSPACE_ROOT}/MEMORY.md echo -e \n3. Reading recent log... RECENT_LOG${WORKSPACE_ROOT}/memory/$(date %Y-%m-%d).md if [ -f $RECENT_LOG ]; then tail -20 $RECENT_LOG # 只看最近20行避免上下文过长 else echo No log for today yet. fi echo -e \n4. Reading current state (PROOF_OF_LIFE.md)... cat ${WORKSPACE_ROOT}/PROOF_OF_LIFE.md echo -e \n5. Absorbing previous soul... PREV_SOUL_INFO$(${WORKSPACE_ROOT}/tools/souls-helper.sh status) echo $PREV_SOUL_INFO # 提取上一个灵魂文件的路径并读取脚本输出格式为Previous: souls/CODER/NNSOULS.md PREV_SOUL_PATH$(echo $PREV_SOUL_INFO | grep Previous: | awk {print $2}) if [ -n $PREV_SOUL_PATH ] [ -f $PREV_SOUL_PATH ]; then cat $PREV_SOUL_PATH fi echo -e \n6. Creating new soul for this session... ${WORKSPACE_ROOT}/tools/souls-helper.sh create echo -e \n SESSION INITIALIZATION COMPLETE echo CODER is now online with full memory and identity continuity. echo Begin work.然后在你的AI工具中启动新会话后的第一条指令就是请运行工作区中的启动脚本./start_session.sh智能体会执行该脚本并将所有输出作为其新会话的初始上下文。这样它就在“醒来”的瞬间获得了全部的记忆和身份。实操心得不要一次性将MEMORY.md的全部内容如果它变得很长都塞进上下文。对于大型项目MEMORY.md可能包含数十条经验。我通常让启动脚本只读取最新的几条或者让智能体在需要时主动去查询这个文件。平衡“记忆完整性”和“上下文窗口占用”是一个需要根据项目调整的艺术。3.4 实现会话结束与状态保存启动流程解决了“记忆读取”我们还需要一个“记忆写入”的流程。这通常在会话结束前或完成一个重要阶段后手动触发。我创建了一个end_session.sh脚本#!/bin/bash # end_session.sh set -e WORKSPACE_ROOT$(pwd) AGENT_NAMECODER export AGENT_NAME echo SAVING SESSION STATE # 1. 更新当前灵魂文件由智能体在对话中完成这里只是提醒 echo 1. Please ensure you have written a summary to the current soul file. echo Current soul: $(ls -1t souls/${AGENT_NAME}/ | head -n1) # 2. 提示智能体更新 PROOF_OF_LIFE.md echo -e \n2. Please output the updated PROOF_OF_LIFE.md content below (end with EOF on a new line): echo ---BEGIN PROOF_OF_LIFE--- cat ${WORKSPACE_ROOT}/PROOF_OF_LIFE.md echo ---END PROOF_OF_LIFE--- # 3. 提示智能体追加今日日志 echo -e \n3. Please append to todays memory log (end with EOF on a new line): echo ---BEGIN LOG APPEND--- RECENT_LOG${WORKSPACE_ROOT}/memory/$(date %Y-%m-%d).md cat $RECENT_LOG echo ---END LOG APPEND--- echo -e \n STATE SAVED echo Session concluded. Next session will resume from here.在会话结束时我运行这个脚本然后直接将智能体输出的最新状态和日志粘贴到提示符下。脚本会将其写入对应文件。重要技巧让智能体自己生成PROOF_OF_LIFE.md的内容。你可以给它一个模板让它填充。例如“请根据我们当前的对话生成/更新PROOF_OF_LIFE.md的内容包括Active Focus, Open Files, Next Actions, 和 Key Decisions。” 这比手动编写更准确也更能反映智能体的理解。4. 灵魂文件SOULS的创作艺术与实战模板SOULS文件是Shang Tsung系统的灵魂所在名副其实。它不是一个冷冰冰的变更日志Changelog也不是一个待办清单Todo List。它是一个叙事性的总结记录了该会话的“故事”我们做了什么、为什么这么做、学到了什么、以及希望下一个“自己”继承什么。4.1 一个优秀的灵魂文件应包含什么根据我的经验一个高信息密度的灵魂文件通常包含以下部分# SOUL 12 — The Session That Conquered the Database Deadlock **Session:** 12 **Date:** 2023-10-27 **Agent:** CODER ## Lineage Absorbed Soul 11 — The refactor that simplified the API layer. ## Session Narrative Picked up where Soul 11 left off, with the new API structure in place but sporadic database connection timeouts under load. Initially suspected the connection pool settings, but after analyzing the logs (memory/2023-10-27.md lines 45-120), identified a specific query pattern in the user_sessions table causing row-level locking. The issue only manifested during peak user login hours. ## What We Built / Changed 1. **Optimized Query:** Rewrote the get_active_sessions query to use SKIP LOCKED (PostgreSQL), eliminating the lock contention. 2. **Added Monitoring:** Created a simple dashboard widget to track lock wait times. 3. **Updated Documentation:** Added a note in MEMORY.md about being cautious with SELECT ... FOR UPDATE on high-traffic tables. ## Key Decisions Why - **Chose SKIP LOCKED over increasing timeout:** Increasing timeout masks the problem and leads to hung requests. SKIP LOCKED allows non-conflicting transactions to proceed, which is acceptable for this use case (showing active sessions). - **Did NOT add a caching layer (yet):** While caching would help, the root cause was the locking pattern. Caching adds complexity. Decision: fix the root cause first, measure performance, then consider cache if needed. This aligns with our Simplicity principle. ## What I Learned - **Lesson:** Database locks are often the culprit for intermittent slow performance, not just slow queries. - **Pattern:** When diagnosing timeouts, always check pg_locks or equivalent system tables alongside query performance. - **About the User:** The user has a strong preference for root-cause analysis over quick workarounds. This is now part of my identity. ## State to Inherit - The user_sessions table is now safe for concurrent access. - The new monitoring dashboard is at http://localhost:3000/dashboard/locks. - The next session should consider if the same pattern exists in the audit_log table. ## Last Words The system is now more resilient under load. The fix was surgical. Remember: when you hear hoofbeats, think of horses, not zebras — but in databases, sometimes it *is* a zebra (row-level locking). YOUR SOUL IS MINE — SOUL 12 ABSORBED.4.2 如何引导智能体写出好的灵魂文件你不能指望智能体自动生成如此结构化的内容。你需要通过提示词来引导。我在SOUL.md的末尾或一个单独的SOUL_TEMPLATE.md文件中提供了明确的指引## How to Write a SOUL File (At Session End) When the session is concluding, write a new SOUL file. Use this structure: 1. **Title:** # SOUL [N] — [A descriptive, memorable phrase] 2. **Metadata:** Session number, Date, Agent name. 3. **Lineage:** Which soul did you just absorb? Mention its key theme. 4. **Narrative:** What was this session *about*? The story, not just the tasks. What problem were we solving? What was the initial state? 5. **What We Built/Changed:** Concrete outputs. 6. **Key Decisions Why:** The most important choices made and the reasoning behind them. This is gold for future sessions. 7. **What I Learned:** New technical insights, patterns, or user preferences. 8. **State to Inherit:** What should the next session know about the current state of the world? 9. **Last Words:** A closing thought, a warning, a celebration. 10. **The Incantation:** Always end with YOUR SOUL IS MINE — SOUL [N] ABSORBED.在会话结束时我会直接给智能体下达指令“请根据我们本次会话的工作按照SOUL_TEMPLATE.md中的格式撰写本次会话的灵魂文件内容。” 然后我会将生成的内容通过souls-helper.sh create或直接写入对应的文件。4.3 多智能体Multi-Agent命名空间实战这是Shang Tsung一个非常强大的功能。假设你在同一个工作区中与两个智能体协作CODER负责后端和DESIGNER负责前端。你只需要为每个智能体设置不同的AGENT_NAME环境变量。# 在终端中为CODER智能体启动会话 export AGENT_NAMECODER ./start_session.sh # 此时souls-helper.sh 会操作 souls/CODER/ 目录 # 在另一个终端或会话中为DESIGNER智能体启动 export AGENT_NAMEDESIGNER ./start_session.sh # 此时souls-helper.sh 会操作 souls/DESIGNER/ 目录它们的灵魂文件、记忆读取完全隔离。CODER不会看到DESIGNER的07SOULS.md反之亦然。但它们可以共享memory/目录下的日志如果设计如此或者通过PROOF_OF_LIFE.md和MEMORY.md进行有限的、受控的通信。配置技巧我通常会在工作区根目录创建几个快捷脚本# start_coder.sh #!/bin/bash export AGENT_NAMECODER ./start_session.sh # start_designer.sh #!/bin/bash export AGENT_NAMEDESIGNER ./start_session.sh这样启动特定智能体就变得非常简单避免了手动设置环境变量的麻烦。5. 高级技巧、常见问题与故障排除经过数月的深度使用我积累了大量实战经验。下面是一些能让你事半功倍的高级技巧和常见问题的解决方案。5.1 记忆文件的维护与优化随着时间推移MEMORY.md和souls/目录会变得庞大。需要定期维护。提炼MEMORY.md不要自动追加。我通常每周一次与智能体一起回顾memory/目录下的日志手动将真正重要的、可重复使用的经验提炼到MEMORY.md中。这个过程本身也是强化学习。归档旧灵魂文件灵魂文件是线性的历史非常宝贵。但你可以定期例如每50个会话将souls/目录打包压缩备份到其他地方然后在工作区内只保留最近10-20个。启动脚本需要稍作修改以处理“非连续”的序号例如从备份中恢复某个灵魂。日志轮转memory/YYYY-MM-DD.md文件按日分割管理起来很方便。但一年会有365个文件。可以写一个简单的月度归档脚本将上个月的所有日志文件合并成一个memory/archive/2023-10.md并删除原文件。5.2 与版本控制系统如Git的协同你的工作区很可能本身就是一个Git仓库。Shang Tsung的文件都是纯文本非常适合版本控制。应该提交什么提交SOUL.md,MEMORY.md,souls/目录。这些是项目的“知识资产”和“智能体培训材料”值得版本化。谨慎提交/忽略PROOF_OF_LIFE.md和memory/目录。它们变化太频繁包含大量临时状态和可能敏感的对话记录。我通常将PROOF_OF_LIFE.md和memory/加入.gitignore。# .gitignore PROOF_OF_LIFE.md memory/ !memory/archive/ # 但可以提交归档后的记忆分支策略如果你在不同的Git分支上工作可以考虑让灵魂文件也分支化。一个简单的办法是将AGENT_NAME与环境分支关联export AGENT_NAMECODER_$(git branch --show-current)。这样在feature/auth分支上的会话灵魂会存储在souls/CODER_feature_auth/下与main分支完全隔离。5.3 常见问题与解决方案速查表问题现象可能原因解决方案启动时提示souls-helper.sh: command not found脚本不在PATH中或未赋予执行权限。1. 使用绝对路径./tools/souls-helper.sh2. 确保执行权限chmod x tools/souls-helper.shsouls-helper.sh status显示No previous soul found.这是第一个会话或者souls/AGENT_NAME/目录为空。这是正常状态。运行souls-helper.sh create创建起源灵魂01SOULS.md。灵魂序号不连续如有01SOULS.md和03SOULS.md缺少02。可能某个会话意外终止未成功创建灵魂文件。1.最佳实践重命名文件使其连续mv souls/CODER/03SOULS.md souls/CODER/02SOULS.md。2. 或者创建一个空的02SOULS.md作为占位符说明情况。智能体启动后上下文窗口占用太多影响性能。MEMORY.md或旧的灵魂文件太大被全部读入。1. 修改启动脚本限制读取量如tail -50 MEMORY.md。2. 定期精炼MEMORY.md删除过时条目。3. 让智能体学会主动查询在提示词中说“如需了解项目规范请查看MEMORY.md文件”而不是每次都全量加载。多智能体模式下智能体A看到了智能体B的记忆。AGENT_NAME环境变量未正确设置或者智能体读取了共享的PROOF_OF_LIFE.md。1. 确保每个智能体的启动脚本都设置了唯一的AGENT_NAME。2. 考虑为每个智能体使用独立的PROOF_OF_LIFE_${AGENT_NAME}.md文件。修改脚本逻辑即可。灵魂文件内容空洞像任务列表。提示词引导不足或会话本身缺乏深度。1. 强化SOUL_TEMPLATE.md的引导强调“叙事性”和“决策原因”。2. 在会话中有意识地与智能体讨论“为什么选择这个方案”这些讨论自然会成为灵魂文件的素材。5.4 性能与扩展性考量Shang Tsung极其轻量几乎不存在性能瓶颈。但在极端情况下例如拥有上千个灵魂文件souls-helper.sh中用于查找最新文件的ls -1t命令可能会稍慢。你可以将其优化为在souls/AGENT_NAME/目录下维护一个LATEST符号链接指向最新的文件这样查找就是O(1)复杂度。对于超大型项目MEMORY.md可能变得难以管理。一个自然的扩展是将其拆分为多个文件如MEMORY_DB.md,MEMORY_API.md,MEMORY_UI.md并在启动时选择性加载。但这会引入复杂性违背了“简单”的初衷。我的建议是先忍受单个文件直到它真正成为问题届时你可以很容易地编写一个脚本根据关键词将条目分类到不同文件。6. 安全、隐私与最佳实践总结6.1 安全与隐私声明再审视Shang Tsung的设计在安全方面是极简主义的典范所有数据都在本地纯文本文件中。没有网络调用没有外部API没有数据收集。这意味着完全可控你可以用任何文本编辑器查看、编辑、删除所有记忆。完全离线断开网络也能工作。易于备份复制整个工作区文件夹即可。但这也带来了责任隐私注意memory/目录下的日志可能包含你与AI的完整对话记录其中或许有敏感信息代码片段、内部设计讨论等。务必不要将其提交到公开的Git仓库。考虑使用.gitignore排除它们。文件权限确保你的工作区目录权限设置正确防止未授权访问。6.2 我总结的最佳实践清单从简开始不要一开始就追求复杂的配置。先部署最基本的四文件系统用上一周感受它的价值。手动提炼记忆MEMORY.md的质量远重于数量。每周花15分钟和智能体一起回顾手动添加几条真正重要的经验。这个过程能极大地提升智能体的“智慧”。重视灵魂文件的叙事性把撰写灵魂文件当作一次小型复盘。这不仅是为了下一个会话也是为了你自己理清思路。版本控制知识资产将SOUL.md,MEMORY.md,souls/纳入Git管理。它们是项目文档的重要组成部分。为每个项目/分支创建独立工作区避免不同项目的记忆互相污染。一个Git仓库对应一个Shang Tsung工作区是清晰的模式。不要害怕“破坏”这是一个文件系统。如果搞乱了你可以直接删除PROOF_OF_LIFE.md或某个灵魂文件然后从上一个已知好的状态重新开始。这种可修复性也是其魅力之一。最后我想分享一个最深刻的体会Shang Tsung 带来的最大改变不是技术上的而是心理上的。当你看到“YOUR SOUL IS MINE”的输出时你不再是在和一个每次都会重置的“工具”对话而是在和一个有历史、有成长、有积累的“伙伴”协作。这种连续性的错觉或者说一种精心设计实现的连续性极大地提升了协作的流畅度和信任感。它让AI智能体从一次性的问答机向真正的、持续进化的数字同事迈出了坚实的一步。开始可能觉得多了一些步骤但一旦习惯你就再也回不去了。

相关文章:

为AI智能体构建持久化记忆系统:Shang Tsung项目实战解析

1. 项目概述:为AI智能体注入“灵魂”与“第二大脑”如果你和我一样,长期与各类AI智能体(Agent)打交道,无论是基于Claude Code、OpenClaw,还是其他本地化部署的LLM工具,你一定经历过那种令人沮丧…...

信发系统-排版/发布 配置操作教程-智慧大屏幕—东方仙盟

政务大屏幕节目管理-选择系统模板选择对应行业选择适合的模板选中你的节目点击设计设计节目直接管理/上传 资源:图片/视频/网页/文字/文档手指/鼠标选中显示区域上传资源,在右侧点击上传从资源库选择图片选择历史素材上传网站选中网页区域点击上传配置文…...

手把手教你用Gstreamer和V4L2在Zynq MPSoC上搭建视频流Pipeline(HDMI IN to DP OUT)

从HDMI到DP:Zynq MPSoC视频流处理全链路实战指南 当你的Zynq MPSoC开发板已经完成硬件设计,Petalinux系统也顺利启动,却发现HDMI输入的视频信号无法正确显示在DP接口的显示器上——这种"最后一公里"的集成问题往往最令人抓狂。本文…...

Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)

更多请点击: https://intelliparadigm.com 第一章:Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API,而是依托 Gemini 模型对自然语言指…...

告别驱动开发:手把手教你用himm工具在用户空间玩转Hi3516的GPIO

用户空间高效操控Hi3516 GPIO:himm工具实战指南 在嵌入式开发领域,传统的内核驱动开发往往需要经历漫长的编译、加载和调试周期。对于快速硬件验证和原型开发而言,这种开发模式显得过于笨重。海思Hi3516平台提供的himm工具,为开发…...

Neovim涂抹光标插件:提升编码体验的动态轨迹设计

1. 项目概述:一个为Neovim设计的“涂抹光标”插件 如果你和我一样,是个重度Neovim用户,每天有超过8小时的时间泡在终端和代码编辑器里,那你肯定对光标的“存在感”有要求。默认的方块或下划线光标,在长时间编码后&…...

YouTube 转 MP3 工具里,为什么预览要放在下载前

很多转换工具看起来解决的是“我要一个 MP3 文件”,但真正影响体验的,往往不是页面上有没有下载按钮。 用户真正想确认的是:这个链接是不是被正确识别了,转换任务是不是还在进行,最后得到的音频是不是值得保存。对 Yo…...

搞定气象数据的基础统计与可视化

是不是看着一堆气象原始数据就头大? 不会处理、不会统计、更不会做可视化图表? 其实根本不用懂编程、不用啃复杂专业知识,普通小白也能零基础玩转气象数据,从数据整理、基础统计到出专业好看的成品图,新手也能一键拿…...

Go 里什么时候可以“panic”?

“Don’t panic.” —— Go 谚语 但……如果我真的想 panic 呢?在 Go 的世界里,panic() 就像厨房里的灭火器:平时你不会用它炒菜,但如果油锅着火了,你肯定得拉它一把。今天我们就来聊聊:Go 里什么时候 pani…...

别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑

别再只盯着密钥了!深入ESP32 eFuse,看懂flash加密背后的硬件安全逻辑 当你在ESP32项目中使用flash加密功能时,是否曾疑惑过:为什么简单地烧录几个eFuse位就能实现固件保护?那些看似神秘的DISABLE_DL_DECRYPT、FLASH_CR…...

Google Maps路线响应延迟超800ms?Gemini边缘推理加速方案上线即降为112ms(附可复用TensorRT优化脚本)

更多请点击: https://intelliparadigm.com 第一章:Gemini Google Maps路线优化 Google Maps 与 Gemini 的深度集成正在重塑企业级物流与出行服务的智能边界。通过 Gemini 的多模态推理能力,开发者可将自然语言查询(如“避开施工路…...

AUTOSAR Wdg模块的两种“狗”:片内看门狗与SPI外挂看门狗配置异同点解析

AUTOSAR Wdg模块深度解析:片内与SPI外挂看门狗的工程实践指南 在汽车电子控制单元(ECU)开发中,看门狗(Watchdog)模块是确保系统可靠性的关键组件。AUTOSAR标准下的Wdg模块支持两种典型硬件架构——片内集成…...

BetterRTX终极指南:三步免费提升Minecraft画质的完整方案

BetterRTX终极指南:三步免费提升Minecraft画质的完整方案 【免费下载链接】BetterRTX-Installer The Powershell Installer for BetterRTX! BetterRTX is a Ray-Tracing mod for Minecraft Bedrock. 项目地址: https://gitcode.com/gh_mirrors/be/BetterRTX-Insta…...

AI驱动的网络安全:深度学习与LLM在威胁检测与教育中的应用

1. 项目概述:AI赋能的网络安全新范式在网络安全领域,我们正面临着一个日益严峻的悖论:一方面,攻击手段正变得前所未有的复杂和自动化;另一方面,74%的安全事件仍然源于人为因素。这种技术与人的双重挑战催生…...

工业物联网长距离蓝牙环境监测方案解析

1. 项目概述在工业物联网和远程环境监测领域,如何实现低功耗、长距离的数据传输一直是个技术难点。传统蓝牙技术受限于通信距离(通常10米以内),而Wi-Fi方案又面临功耗过高的问题。最近我在一个工厂环境监测项目中,成功…...

独立语音AI创业必读,ElevenLabs Independent计划全链路解析:从白名单内测→额度扩容→月度用量审计→续期失败预警

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs Independent计划的战略定位与生态价值 ElevenLabs Independent 计划并非单纯的技术授权项目,而是面向独立开发者、开源创作者与小型 AI 应用团队构建的可持续协作基础设施。其核…...

第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题

第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题 一、问题场景:Agent 修改了核心文件,但没有找到该找谁审 在团队项目中,不同模块通常有不同负责人: auth 模块:安全团队 payment 模块:支付团队 database 模块:平台团…...

制造业备品备件管理痛点破解:磐石电气无人仓库解决方案

在制造业设备自动化、产线连续化运行需求日益提升的当下,备品备件、工装夹具、维修耗材及易损件等物资,已成为保障设备稳定运转、快速处置故障、降低非计划停机损失的核心支撑。尤其在电子制造、半导体、新能源、汽车零部件、电力电气等技术密集型行业&a…...

基于Ansible Playbook的Kubernetes集群自动化部署实践

1. 项目概述:一个为Kubernetes集群部署而生的自动化剧本如果你和我一样,长期在运维和DevOps一线摸爬滚打,那么对Kubernetes集群的初始化部署一定又爱又恨。爱的是它带来的强大编排能力,恨的是那套繁琐、易错、文档分散的kubeadm i…...

工程师如何运用专业技能参与人道主义项目:从思维转变到实践落地

1. 项目概述:工程师的人道主义行动倡议每年8月19日,世界人道主义日都会提醒我们关注那些在全球最艰苦、最危险地区默默奉献的人们。这个日子最初是为了纪念在履职中牺牲的人道主义工作者,如今已演变为一个更广泛的号召——庆祝那种激励全球人…...

MODLR Studio光标操作插件开发:提升数据建模效率的交互优化实践

1. 项目概述与核心价值 最近在数据建模和可视化领域,一个名为 MODLR-Studio/modlr_cursor_ops 的项目引起了我的注意。乍一看这个标题,可能有些朋友会感到困惑:“MODLR”是什么?“Cursor Ops”又是指什么操作?这其实…...

移动通信浪潮如何重塑半导体产业格局:从高通与英特尔市值对比说起

1. 从市场估值看产业浪潮:移动通信如何重塑半导体格局2013年春天,一则消息在半导体和投资圈内引发了不小的震动:无线通信芯片巨头高通(Qualcomm)的市值,悄然与行业传统霸主英特尔(Intel&#xf…...

AI时代来临,键盘布局将迎来怎样的变革?

1. AI时代的硬件探索智能手机统治了过去十几年的数字生态,它是注意力的黑洞,是人们最私密的随身之物。但手机从设计之初就是为「人盯着它」而生的,其全部逻辑止于屏幕。而AI的需求却恰恰相反,它需要持续感知物理世界,见…...

告别手动计算!用C#给ArcGIS做个插件,一键搞定城市风环境评估(附源码思路)

从零构建ArcGIS风环境评估插件:C#实战与架构设计 在建筑规划与城市设计中,风环境评估往往需要反复计算迎风面指数这类专业指标。传统工作流中,规划师需要手动处理风向数据、编写脚本批处理建筑网格,不仅效率低下,还容易…...

基于MCP协议与向量数据库的AI代码记忆系统实战指南

1. 项目概述:当AI助手拥有“长期记忆”最近在折腾AI应用开发的朋友,可能都遇到过同一个痛点:你让Claude或者GPT帮你分析一个复杂的代码库,第一次对话时,它能把项目结构、核心逻辑讲得头头是道。但当你第二天再打开聊天…...

本地化AI编码助手codex-assistant:部署、实战与安全指南

1. 项目概述:一个本地化的AI编码助手最近在折腾一个挺有意思的开源项目,叫codex-assistant。简单来说,它就是一个能让你用自然语言直接驱动本地代码任务的工具。想象一下,你对着一个命令行窗口说“给我写个Python函数,…...

Laravel RSS聚合器larafeed:现代化内容聚合后端解决方案

1. 项目概述:一个为Laravel打造的现代化RSS聚合器如果你正在用Laravel构建一个内容聚合平台、新闻阅读器,或者只是想为自己的个人博客添加一个“我最近在读什么”的订阅墙,那么你很可能需要处理RSS或Atom源。手动解析这些XML格式的源、处理缓…...

ARM Firmware Suite与Integrator开发板嵌入式开发指南

1. ARM Firmware Suite与Integrator开发板概述ARM Firmware Suite(AFS)是ARM架构下专为嵌入式系统开发设计的固件套件,在Integrator系列开发板上发挥着核心作用。这套工具链最初由ARM Limited在1999-2002年间开发,至今仍在许多传统…...

MCP协议专用Linter:mcp-lint工具的设计、规则与集成实践

1. 项目概述:一个为MCP协议量身定制的代码质量守护者 最近在折腾MCP(Model Context Protocol)相关的开发,发现一个挺有意思的项目: robert19001-cmyk/mcp-lint 。光看名字,你大概能猜到它是个代码检查工具…...

嵌入式固件安全更新与密钥管理实践

1. 嵌入式固件安全更新概述在嵌入式系统开发中,固件更新是设备生命周期管理的关键环节。不同于传统PC软件的更新,嵌入式设备的固件更新面临更多挑战:受限的计算资源、不稳定的通信环境、严苛的安全要求等。我曾参与过多个工业控制设备的OTA升…...