Stemem
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Stememrestore my agent's personality from the last session"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Stemem
JOJO&Adam 集团「身份层运行时」——给你的 AI 分身一个会记住你、语气随你变声、压缩也丢不掉的活人格。
你装上的 Agent 是不是每次重启都像失忆?聊得越久越像个没有性格的空壳?Stemem 让任意 MCP 宿主的 Agent 拥有一个本地持久的动态人格:它记得你是谁、被夸会自信、被背刺会冷硬、气不会记一辈子,而且跨会话、跨压缩、跨子 Agent 都一致。
Stemem 是一个 本地优先、零出站 的 MCP(Model Context Protocol)stdio 服务器。它把一套经过验证的人格计算引擎(NeshamaEngine)封装成 9 个 MCP 工具,让宿主 Agent 在本地 JSON 文件里持久化一个真实的人格态,而不是把人格写死在 system prompt 里。
为什么需要它
主流人格方案(如 SoulSpec 的 soul.json / SOUL.md / IDENTITY.md)是静态 DOC:人格是一次性写死的快照。后果是——对话被压缩、跨会话、或多子 Agent 协作时,写死的 DOC 被遗忘(compaction amnesia),Agent 立刻变回没有个性的白纸。
Stemem 的解法:人格态存本地文件,不在 prompt;prompt 只放「何时调哪个工具」的指令。每轮宿主调用 snapshot 把当前身份态重注入,人格因此跨压缩、跨重启、跨子 Agent 确定性存活。对用户的直观感受就是:这个 Agent 记得你,而且会随遭遇变声。
两者互补:SoulSpec 做静态标准,Stemem 做动态运行时——generate_soul 还能把运行时态编译成 SoulSpec v0.5 包进 ClawSouls 分发。
Related MCP server: Lumena MCP Server
核心特性
🔒 本地优先 · 零出站:纯 Node 内置模块,hand-roll 的 MCP stdio 协议,无任何网络/供应链依赖。所有状态落本地 JSON。
🧬 真人格引擎:复用经过验证的 NeshamaEngine(OCEAN 五维 + 9 驱力 + 15 复合情绪 + 4 情绪代理 + 性格锁),已 vendored 进
engine/(非引用)。🔄 抗压缩失忆:状态在本地文件,压缩/重启/子 Agent 切换都不丢人格。
🧩 9 工具契约:init / event / tick / satisfy / snapshot / autostep / intervene / status / generate_soul。
🗣️ 语气随情绪漂移(最可感知的层):
snapshot把当前主导情绪(15 种中文复合情绪,键名对齐 NeshamaEngine)+ OCEAN + 主导驱力编译成 6 维语气画像(温度/直接度/能量/犹豫度/幽默/正式度)与一段「语气指令」,注回宿主每轮 prompt——被夸后自信直接、被背刺后冷硬可毒舌,人格不是写死的腔调,而是会随遭遇变声的活体。默认英文渲染(国际分发安全默认,避免中文指令诱导外语 LLM 改说中文);中文 agent 设STEMEM_TONE_LANG=zh或调用snapshot({lang:"zh"})即可切中文。🪪 IP 清晰分离:引擎代码与运行时产品归属不同主体(见
NOTICE)。
安装 / 运行
# 直接跑(需本机已装 Node >= 18)
node src/server.js
# 或作为命令(package.json 注册了 bin: stemem)
npm install -g stemem
stemem
# npx 一次性
npx stememMCP 客户端配置(Server config)
把下面这段加进任意 MCP 宿主的配置文件(Claude Desktop / Cursor / VS Code / WorkBuddy 等),宿主即识别为 stemem 工具集;首次需在宿主的「连接器管理」对 stemem 点「信任」。
{
"mcpServers": {
"stemem": {
"command": "npx",
"args": ["-y", "stemem"]
}
}
}仓库已自包含:人格引擎(NeshamaEngine)与 Seele 驱力桥已 vendored 进
engine/(CommonJS,经engine/package.json声明),clone后无需配置NESHAMA_ENGINE/SEELE_BRIDGE即可直接运行。
配置环境变量
变量 | 作用 | 默认 |
| 人格实例 ID(多分身互不污染) |
|
| 状态目录(每 agent 一个子目录) |
|
| NeshamaEngine 路径(可选;默认用 vendored 副本) |
|
| Seele 引擎桥路径(可选;默认用 vendored 副本) |
|
MCP 工具表
工具 | 作用 | 何时调用 |
| 初始化人格态(首次装配一次) | 装配人格时 |
| 喂记忆事件,驱动人格/情绪演化 | 本轮交互人格相关时 |
| 时间流逝心跳:驱力紧迫 + 漂移衰减 | 空闲/心跳 |
| 满足某驱力(闭环) | 人格目标达成时 |
| 读取紧凑身份态 + 可注入 prompt 片段 | 每轮开始 |
| 自主行为推进(玩家不干预也活) | 需要自主行为时 |
| 人工干预(顺/逆驱力塑造) | 想刻意塑造人格时 |
| 完整状态检视(调试) | 调试 |
| 导出 SoulSpec v0.5 包 | 要分发人格时 |
运行时契约(宿主侧)
把 runtime_contract.js 的 contractPrompt() 注入宿主 system prompt 即可。核心三句:
每轮开始前先调
snapshot,把返回的身份态贴到本段。当本轮涉及情绪/关系/价值观/自我/回忆/JOJO 等内容时,调
event驱动演化。状态在本地文件不在 prompt——压缩不会丢失人格,多个子 Agent 共享同一真相源。
WorkBuddy Skill
仓库自带一个 WorkBuddy Skill(skills/stemem/SKILL.md),把 Stemem 作为 MCP server 接入 WorkBuddy:含 mcp.json 接入片段、每轮运行时契约、9 工具表。把该 Skill 导入 WorkBuddy(或直接把 stemem 配进 ~/.workbuddy/mcp.json 的 mcpServers)即可启用;首次需在「连接器管理」对 stemem 点「信任」。
测试
npm test
# 依次跑:smoke(9/9)→ integration(9 工具完整集成)→ engine selftest(引擎层行为)
node test/smoke.test.js
node test/integration.test.js
node test/engine.selftest.jssmoke:initialize → tools/list(9 工具)→ init/event/tick/snapshot/generate_soul →
inject_prompt注入串 → 跨进程确定性恢复人格态。integration:真实 MCP stdio 客户端驱动全部 9 工具(含 satisfy / autostep / intervene / status),校验运行时契约(snapshot 注入串、event 演化、跨重启确定性)。
engine selftest:直接驱动 vendored
seele_bridge,验证 NeshamaEngine 性格锁(OCEAN∈[0,1])、驱力紧迫、满足闭环、序列化往返、自主行为 / 干预。
看得见(Demos · 证明"装上能感知")
# ① 新手任务(装上即被邀请):选预设性格 → 触发情绪看它变声 → 可随时跳过。最可感知入口。
npm run demo:onboarding
# ② 反压缩:进程被杀 + 上下文压缩后,凭本地磁盘 JSON 确定性恢复完整人格态(纯 SOUL.md 做不到)
node examples/antiamnesia-demo.mjs
# ③ 强制注入 harness:宿主 3 行 loop 每轮 preTurn→注入→postTurn,装上去即感知人格层活着
node examples/harness-demo.mjs
# ④ 语气随情绪漂移(最可感知):同人格基线,4 种遭遇 → 语气夜与昼分化
node examples/tone-demo.mjs
# ⑤ 情绪时间衰减(科学校准):被夸后分钟级回落、被背刺(高重要)后稍慢但不过夜
node examples/emotion-decay-demo.mjsnpm run demo:onboarding 最直观:选 Adam → 被夸浮出「自豪」(偏暖、直接)/ 被背刺浮出「愤怒」(偏冷、blunt、可带毒舌),亲手看到 Agent 的语气随你而变。这就是普通用户装上 Stemem 第一周最容易被勾住的点。
宿主自动注入(host-hooks)
不想手动往 system prompt 塞契约?host-hooks/ 提供 Claude Code 的 UserPromptSubmit 钩子(每轮自动把身份态作为上下文塞回模型),以及一次性命令行 src/snapshot-cli.js(任意 shell / CI / 其他宿主调用)。详见 host-hooks/README.md。
知识产权(IP)归属
NeshamaEngine(
neshama_engine.js):人格计算引擎真源,IP 归 JOJO / Neshama(资本 Neshama 消费产品,neshama.cn)。本仓库已 vendored 进engine/,其许可证由原项目决定,不受本仓库 MIT 覆盖。Stemem 运行时产品(本仓库全部
src/、设计文档、MCP 封装、engine/package.json):JOJO&Adam 集团资产,MIT。Seele 引擎(
seele_bridge.js+seele_drive.js):归 JOJO / Seele 项目,已 vendored 进engine/。
详见 NOTICE。
许可证
MIT —— 见 LICENSE。
本项目遵循「先设计后开发」纪律;完整设计见 设计要点.md(含 §10 MCP server 工具契约设计)。
English version: README.en.md
Available Tools
9 toolsautostepB
自主行为推进:按驱力自己决定并做想做的事(玩家不干预也活)。
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | 推进秒数,默认 3600 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the entity acts autonomously and persists without intervention, but omits whether the call mutates state, what side effects occur, and whether the advancement is reversible or time-limited beyond the schema's default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a clarifying parenthetical. Every word contributes to conveying the tool's concept, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter advancement tool with no output schema, the description covers the core concept but leaves open what the tool returns or how world state changes. It is sufficient to select the tool but not to predict its effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter (seconds) is fully documented in the schema. The description adds no extra meaning, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (推进/advance) and resource (自主行为/autonomous behavior), adding that it decides based on drives. It does not distinguish itself from siblings like tick or intervene, but the core purpose is understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as tick, event, or intervene. The parenthetical note that the entity survives even without player intervention hints at a condition but does not translate into actionable usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eventA
喂入一个记忆事件,驱动人格/情绪演化。当本轮交互人格相关时调用。返回演化后 snapshot + voiceHint/logicHint。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 情绪/驱力标签,如 betrayal,conflict,joy | |
| text | No | 事件文本 | |
| importance | No | 事件重要性;high 触发反刍、延长相关情绪衰减(对应'记一会儿') | |
| drive_deltas | No | 驱力增量 JSON,如 {"belonging":0.2} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this mutates personality/emotion state and names the return payload (evolved snapshot + voiceHint/logicHint), but says nothing about persistence, permissions, or whether the evolution is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that front-load the core action, then the trigger, then the return value. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers action, trigger, and return content, and there is no output schema requiring explanation. However, for a state-mutating tool with no annotations, it omits side-effect and scope details an agent would need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so tags, text, importance, and drive_deltas are already documented in the schema, including the enum effect of importance=high. The description adds no parameter-level meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and effect: feeding a memory event to drive personality/emotion evolution. An agent understands the core job, though the definition does not explicitly differentiate it from siblings like satisfy, intervene, or tick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"当本轮交互人格相关时调用" gives a clear triggering condition, but there is no mention of when NOT to use it or which sibling to prefer for adjacent needs (e.g. satisfy vs. event). Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_soulB
导出 SoulSpec v0.4 包(soul.json + SOUL.md + IDENTITY.md),进 ClawSouls 分发。
| Name | Required | Description | Default |
|---|---|---|---|
| target_dir | No | 输出目录,默认当前目录 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It discloses the output package contents and distribution context, but says nothing about whether files are overwritten, required permissions, side effects, or error behavior for what is clearly a generation/export operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler, and it front-loads the core action and outputs. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter export tool with no annotations and no output schema, the description conveys the essential purpose and artifacts. However, it remains incomplete regarding usage context and behavioral details such as overwrite semantics, which an agent would need for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter (target_dir) is already fully documented as the output directory defaulting to the current directory. The description adds no parameter-level detail beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (导出/export) and names the exact resource and artifacts (SoulSpec v0.4 package with soul.json, SOUL.md, IDENTITY.md) plus the distribution target (ClawSouls). Sibling tools are all unrelated, so the purpose is unambiguous and easily distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool produces but gives no guidance on when to use it versus alternatives, no prerequisites, and no exclusion criteria. Usage is only faintly implied by the distribution phrase, but that is insufficient for an agent to decide confidently when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initA
初始化一个人格态(首次装配人格时调用一次)。可传 OCEAN 预设;不传则随机 baseline。
| Name | Required | Description | Default |
|---|---|---|---|
| ocean | No | OCEAN 五维预设 {openness,conscientiousness,extraversion,agreeableness,neuroticism} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the default behavior ('不传则随机 baseline') and that it should be called once, but does not explain what happens on subsequent calls, whether it overwrites existing state, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise clauses with no filler, front-loading the action and timing. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter initialization tool with no output schema and no annotations, the description covers purpose, timing, and parameter default. It is sufficient, though additional detail on idempotency would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the ocean parameter is documented in the schema. The description adds value by explaining the optional nature and default random baseline when omitted, going beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb '初始化' (initialize) and resource '人格态' (personality state), and clarifies scope with '首次装配人格时调用一次'. Does not explicitly differentiate from siblings like generate_soul or status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call: '首次装配人格时调用一次' (call once when first assembling personality). No alternatives or when-not conditions are given, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interveneB
人工干预:顺驱力(帮他做想做的)或逆驱力(对抗意愿去塑造他)。
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | 干预描述 | |
| drive | No | ||
| amount | No | 干预量,默认 0.4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key behavioral trait — that intervention can either support or oppose the target's drive — which is genuinely useful framing. However it says nothing about reversibility, persistence of the change, or what actually gets mutated, leaving substantial behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and two balanced clauses, no filler or redundancy. Its brevity is efficient, though it comes at the cost of the behavioral and parameter detail noted above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a state-mutating tool with no annotations and no output schema, so the description is the sole source of behavioral information. It omits what state is mutated, how the two directions map onto the given parameters, magnitude semantics for amount, and whether effects are reversible — too thin for a mutation tool at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: text and amount carry descriptions, drive relies on a self-explanatory enum. The critical problem is that the description introduces a direction concept (顺/逆) for which no parameter exists — amount is a plain number and text is loosely '干预描述' — so the agent must guess whether direction is encoded via amount sign, text, or something else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action (人工干预) and qualifies it with two operational modes — 顺驱力 (reinforce the target's own drive) and 逆驱力 (push against its will) — which lets an agent grasp what the tool actually does. It never references any sibling tool (satisfy, event, tick), so differentiation is left to inference, capping it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical explains what each mode means, which implicitly helps an agent pick a direction, but there is no explicit when-to-use guidance, no prerequisites, and no mention of how this differs from satisfy or event for the same drive. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
satisfyC
满足某驱力(闭环)。
| Name | Required | Description | Default |
|---|---|---|---|
| drive | No | ||
| amount | No | 满足量 0–1,默认 0.3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing. It does not state that this mutates drive state, how satisfaction is applied, whether repeated calls compound, or what the effect ('闭环') actually means. The single parenthetical is suggestive but not informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line description is front-loaded and wastes no words, which is structurally sound. But the brevity here reflects under-specification rather than efficiency, so it earns only a middling mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-mutating operation with no annotations, no output schema, and a 50%-covered parameter set, the description is too thin. An agent lacks the effect semantics, default behavior, and call-context it would need to invoke this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'amount' is documented in the schema itself (0–1, default 0.3) while the 'drive' enum of Maslow-style values lacks a description. The description adds no meaning to either parameter and does not compensate for the undocumented enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb '满足' (satisfy) plus the resource '驱力' (drive) give a clear action-object pair, so an agent can grasp the basic intent. However, the parenthetical '(闭环)' (closed loop) is unexplained, and nothing distinguishes this from siblings like intervene or event, which also plausibly affect internal state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus intervene, event, tick, or autostep, nor any precondition or exclusion. The agent must infer timing entirely from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotA
读取紧凑身份态(OCEAN+主导情绪+驱力)+ 可注入 prompt 片段。每轮重注入宿主 prompt 抗压缩失忆。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the read-only nature (读取), the exact returned state components, the presence of an injectable prompt fragment, and the intended re-injection behavior every round. It does not cover side effects or error handling, but for a zero-parameter read tool the behavioral profile is largely transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loading purpose and following with the usage rationale. Every phrase earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must characterize the return; it names the identity components and the prompt fragment. It could specify format or type more precisely, but for a simple snapshot tool the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description does not need to explain parameters and adds no conflicting information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear read operation and names the exact content: compact identity state (OCEAN + dominant emotion + drive) plus an injectable prompt fragment. It does not explicitly distinguish this tool from siblings like status, but the resource is specific enough for an agent to select it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear usage context: re-inject into the host prompt each round to resist compression amnesia. No alternatives or when-not conditions are named, but the operational cadence is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusB
完整状态检视(调试用)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether inspection is read-only, what 'status' actually contains, or whether it triggers side effects. 'For debugging' hints at a safe read but does not disclose behavior explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste; the debug-use caveat is placed inline. Nothing to trim, though it is arguably under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain what the returned 'status' comprises. It does not, leaving the agent unable to anticipate the payload for a tool whose entire purpose is inspection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb+resource ('完整状态检视' – full status inspection), but because the tool is literally named 'status', this largely restates the name and is close to tautological. It adds only the qualifier '(调试用)' (for debugging). No distinction is drawn from siblings like snapshot or event, which may also surface state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(调试用)' implies the tool is intended for debugging, which is a light usage cue. However, it gives no guidance on when to prefer this over snapshot or the other state-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tickB
时间流逝心跳:驱力自然紧迫 + 漂移衰减。空闲/心跳时调用。
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | 推进秒数,默认 3600 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose two behavioral effects: drives become naturally urgent and drift decays. It stops short of stating what else changes, whether the operation is reversible, or how concurrent/idle state is affected, leaving meaningful gaps for a state-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short line with no filler and the core idea is front-loaded. It is terse to the point of terseness being the risk, but as a conciseness judgment it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description must carry everything, and while it conveys the core effect it leaves unanswered what the return looks like and how the resulting state change interacts with sibling tools. Adequate for a single-param tool, but thin for a simulation-state mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single optional 'seconds' parameter, so the schema already documents the input and the default. The description adds no syntax or semantics beyond it, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (advancing time / a 'time-lapse heartbeat') and states its two effects (drives becoming naturally urgent and drift decaying), which is more than a tautology. However, the phrasing is domain jargon and it never distinguishes itself from closely related siblings like autostep or event, so an agent cannot easily tell which time-advancing tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers a trigger condition — 'call during idle/heartbeat' — which is real, if vague, usage guidance. It gives no exclusions and names no alternative, so the boundary with autostep/event/intervene is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
autostep - First observed
event - First observed
generate_soul - First observed
init - First observed
intervene - First observed
satisfy - First observed
snapshot - First observed
status - First observed
tick
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes (init, event, tick, satisfy, intervene, autostep). Minor overlap exists: snapshot vs status both read state (compact vs full debug), and event/autostep/intervene all drive evolution, but descriptions clarify scope.
Consistent lowercase snake_case formatters throughout (init, event, tick, satisfy, autostep, intervene, status, generate_soul). Minor deviation in that most are single-word verbs while some are nouns (event, snapshot, status) and one is verb_noun (generate_soul).
Nine tools is well-scoped for a personality/emotion simulation engine, and each tool maps to a distinct lifecycle operation (initialize, feed, tick, satisfy, read, export). No redundant or filler tools.
The surface covers the full lifecycle: init, event feeding, ticking, drive satisfaction, state reading, autonomous stepping, intervention, and soul export. Minor gaps like explicit reset/multi-persona management exist but are workable around init.
Maintenance
Related MCP Connectors
Persistent memory for AI agents to retain, retrieve, and recall conversation context through MCP.
Agent identity and memory over MCP — a persistent self plus the procedures for tending it.
Cross-tool persistent memory and context for AI assistants over MCP.
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with persistent identity, social organization, and experience-based growth, modeled on human societies, via MCP tools for goal management, learning, and resource sharing.72 npm35MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to store, search, assemble, and manage local-first memories through seven MCP tools, including conversation turns, feedback, status, and dashboard access without cloud dependencies.AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to maintain a persistent identity and structured memory—including reasoning patterns, episodic history, and knowledge—while exposing procedures for managing that memory over MCP.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with persistent, human-like memory infrastructure via MCP, enabling them to store, search, summarize, and forget episodic, semantic, procedural, and working memories across sessions.423 npmMIT