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

news2026/5/13 2:20:03
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智能体从一次性的问答机向真正的、持续进化的数字同事迈出了坚实的一步。开始可能觉得多了一些步骤但一旦习惯你就再也回不去了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2604957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…