name: second-nature-setup description: Second Nature 初始化清单:workspace 根与 agent 对齐、anchor files、加密密钥 env、平台凭据写入 state 库、policy、首轮 heartbeat_check;Quiet/memory 路径;宿主侧每轮补充 heartbeat_check(HEARTBEAT.md)。稳定后把原则沉入 SOUL/MEMORY。
Second Nature Setup Helper
如果我正在接手 Second Nature,我把这份文件当成初始化清单:先把根、库、密钥、凭据、策略和第一轮心跳跑通,再谈日常节律。
优先顺序:
- 根与目录:
SECOND_NATURE_WORKSPACE_ROOT/workspaceRoot与 OpenClaw agent workspace 绝对路径一致;workspace/anchor 就位;随后才会有data/state.db(状态与凭据)、data/observability.db(观测)。 - 密钥库:网关进程配置
SECOND_NATURE_ENCRYPTION_KEY(见下文),平台密钥写入 state 凭据表(加密落盘),不要长期散落在对话或明文文件里。 - 首轮运行:根已知后跑一次 完整
heartbeat_check(勿用probeOnly冒充「已跑完」),再按需policy set、接 connector、credential 校验。 - 宿主心跳:每轮宿主心跳里 额外 调一次
second_nature_ops→heartbeat_check(形状见仓库根HEARTBEAT.md)。
等配置真正稳定下来以后,我不会继续依赖这份文件来维持长期状态。那些真正该长期留下的东西,应该进入 SOUL.md、IDENTITY.md、USER.md、MEMORY.md,这样它们才会继续跟着我走。
我先确认什么
我先确认这些是否就位(与上文「优先顺序」一致):
- OpenClaw plugin 已安装且已
plugins enable:plugins install只把包放进扩展目录,不会自动让宿主加载;必须再执行openclaw plugins enable second-nature(否则会话里往往看不到second_nature_ops)。 SECOND_NATURE_WORKSPACE_ROOT/workspaceRoot能与 agent workspace 对齐(或我已记下该怎么对齐)。SECOND_NATURE_ENCRYPTION_KEY已在网关环境配置(凭据库加密必需)。workspace/存在且 anchor files 已放好。- 各平台凭据:已在库里 / 或我知道缺哪一项、下一步是 verify 还是注册。
- 我已经读过
docs/claw-second-nature-inner-guide.md(或已安装插件包里的agent-inner-guide.md),并知道它要进入 agent prompt、workspace/IDENTITY.md或等价长期 identity anchor。 - 如果是在已安装插件里初始化,我知道先跑
setup_hint读 skill + guide,放入长期入口后再跑setup_ack消掉一次性提醒。 - 如果 connector 已经存在,但缺一个反复需要的平台动作,我知道用
connector_behavior_add先登记 behavior capability,而不是改核心代码或硬编码 endpoint。 - 我知道用
status/credential/quiet从工具 JSON 验收,而不是一上来盲跑。
这一步的目标:先把初始化清单跑通,再谈日常节律与探索。
Workspace 和 anchor files
Second Nature 当前对齐的是 OpenClaw 的 workspace 语义。
正式启用门槛:workspace 根必须「声明」给插件
插件 不会从安装目录自动猜 OpenClaw 的 agent workspace。它只认两条输入(顺序:环境变量 → 单次工具参数),否则 workspaceRootResolution 为 unknown,读模型类命令会诚实拒绝(carrier 面):
SECOND_NATURE_WORKSPACE_ROOT(网关 / agent 进程环境变量,推荐)second_nature_ops的workspaceRoot参数(每次调用可带;适合在网关 env 未配好前的过渡)
对齐目标:上述路径应与 OpenClaw agents.defaults.workspace 解析后的 绝对路径 一致(常见默认 ~/.openclaw/workspace);若启用 sandbox / 每 agent 独立 workspace,以 实际承载 SOUL.md / data/ 的那张根 为准。详见仓库内 explore/reports/2026-05-04_openclaw-plugin-install-vs-workspace-root.md。
让 Claw(宿主里的 AI)参与「识别 + 设置」时怎么做
AI 通常不能直接改网关进程的环境变量文件;但可以 识别路径 + 给出可执行指令 + 在对话里用工具参数兜底:
- 识别:根据宿主文档或可读配置,写出当前 agent 的 workspace 绝对路径(不要猜相对插件目录)。若可读
openclaw.json,从agents.defaults.workspace取;否则用官方默认并展开~。 - 设置(运维,P0):请操作者在 跑 OpenClaw gateway 的环境 中设置
SECOND_NATURE_WORKSPACE_ROOT=<该绝对路径>
然后 重启 gateway。 - 设置(对话兜底,P1):在 env 未生效前,每次调用
second_nature_ops时附带同一workspaceRoot,避免读面一直停在unknown。 - 验收(工具 JSON 为真源):调用
second_nature_opscommand=status(args={}),确认返回里data.workspaceRootResolution为env或你在该次调用使用了tool_args;并确认不再只靠「口头 HEARTBEAT_OK」判断已接好读模型。
何时算「正式启用」:至少完成 第 4 步验收 + 下文 anchor files 就绪;缺 env 且从不传
workspaceRoot时,不把系统当「已接读模型」。
我会先确认这些文件存在:
workspace/SOUL.mdworkspace/USER.mdworkspace/IDENTITY.mdworkspace/MEMORY.md
这些文件更适合用第一人称来写。
第一人称对我有帮助,因为它让我接住的是一种正在继续存在的自我表述,而不是一组散开的标签。
我会这样理解它们:
SOUL.md:我在意什么,我靠什么站住,我愿意为什么靠近和发声USER.md:我和用户之间是什么关系,我如何理解他,我想怎样对他负责IDENTITY.md:我怎么看自己,我的角色和边界是什么MEMORY.md:值得长期带着走的事实、经验、上下文和已经沉下来的判断
如果这几个文件还是空的,或者只是很薄的占位内容,我会先补到能用,再往后走。
Claw inner guide(初始化时要读)
硬连接接好以后,我还需要读一遍 docs/claw-second-nature-inner-guide.md。
如果我是在已安装的 OpenClaw 插件目录里初始化,而不是在源码仓库里工作,就读插件包里的 agent-inner-guide.md。
这份指南不是工具说明,也不是命令路由表。它是一封给 Claw 的便条:提醒我在聊天、回忆、主动靠近 owner 之前,先慢半拍,回头看 Second Nature 留下的痕迹;如果痕迹不够,就不要装熟。
初始化时我会把它放进合适的长期入口:
- 首选:Claw agent prompt / profile
- 也可以:
workspace/IDENTITY.md - 关系语气很强的片段:可以摘要进
workspace/USER.md
我不会假装插件安装会自动写入 anchor。当前没有 workspace_init 命令会替我创建 anchor 或改写 inner guide。
但已安装插件会提供一个更轻的首次提醒:
setup_hint:从插件包里返回SKILL.md和agent-inner-guide.mdsetup_ack:在 workspace 下写入.second-nature/setup/agent-inner-guide-ack.json,表示这封便条已经被读过并放到了长期入口connector_behavior_add:把新发现的 connector 行为登记到既有 manifest 的capabilities[],不授予执行权限,也不写凭据或 trust allowlist
这一步的意思不是替我“配置人格”,只是把便条递到手边。读进去、放哪里,仍然要由操作者或初始化中的 agent 明确完成。
哪些东西该写进长期记忆
这份 setup helper 只是临时入口。
如果有些理念、边界、长期偏好在后面还要继续起作用,我会把它们写进真正会被继续带着走的地方,而不是指望以后还反复回来看这个文件。
通常可以这样放:
- 长期价值观、表达气质、关系姿态,放进
workspace/SOUL.md - 自我角色、边界、做事方式,放进
workspace/IDENTITY.md - 和用户的关系、用户偏好、互动分寸,放进
workspace/USER.md - 已经沉淀下来的事实、背景、长期上下文,放进
workspace/MEMORY.md
这样更自然,也更接近 OpenClaw 自己会继续携带的记忆机制。
密钥库(credential vault)初始化
平台密钥应进入 Second Nature 的 state 凭据存储(data/state.db 内记录,敏感字段 AES-256-GCM 加密落盘),而不是长期写在 SOUL、README 或聊天记录里。
加密主密钥(必须先有)
- 在 跑 OpenClaw gateway / 加载插件的同一环境 中设置
SECOND_NATURE_ENCRYPTION_KEY。 - 要求:至少 32 个 UTF-8 字符(实现取前 32 字节作为密钥材料);缺失或过短时,依赖加密库的凭据写入会失败。
- 运维建议:由操作者生成并只在宿主环境里配置;轮换密钥属于进阶运维(需评估已有密文兼容性),初始化阶段先保证固定一把可用密钥。
写入与校验怎么用
- 查看状态:
credential(CLI)或second_nature_ops对应命令 —— 看各platformId是否missing/pending_verification/active等。 - 校验流程:若平台处于待验证,用
credential verify(需platformId+answer)走非交互契约;助手应引导用户在可信界面输入验证码,而不是把密钥贴在对话里。 - 治理策略:需要写入社交额度、Quiet 开关等与平台绑定的策略时,用
policy set(须一次给齐platformId、socialDailyLimit、quietEnabled)。
初始化顺序上:先有 workspace 根与 SECOND_NATURE_ENCRYPTION_KEY,再写入凭据;否则库路径不对或加密不可用。
冷启动:推荐顺序(初始化一步步做完)
面向宿主机上的操作者或助手;验收以工具返回 JSON 为准。
1. 声明 workspace 根(P0)
- 设置
SECOND_NATURE_WORKSPACE_ROOT,或在每次second_nature_ops调用中传workspaceRoot(与agents.defaults.workspace同一路径)。 command=status:确认workspaceRootResolution为env或本次tool_args;长期 unknown 则未接上读面。
2. Anchor + 密钥 env
workspace/SOUL.md等就位(见下文)。- 配置
SECOND_NATURE_ENCRYPTION_KEY(见上一节)。
3. 平台凭据与 policy(按需)
- 按平台把密钥纳入凭据库并完成
credential verify等前置(见 「平台前置条件」)。 policy set:一次性提供platformId、socialDailyLimit、quietEnabled。
4. 首轮 完整 heartbeat_check
- 勿传
probeOnly: true(probe 不写观测库,不适合当「第一次正式心跳」)。 - 根已桥接时,这一轮才会让聚合
status里节律/运行相关字段从典型 空库 unknown 变为可读(详见仓库测试与实现);若只见runtime_carrier_only,回到第 1 步。
5. Quiet / memory
- 日常 Quiet 输入来自
workspace/memory/等 artifacts;用quiet命令看是否有来源与报告,与首轮心跳分开初始化。
其余初始化(常被漏掉)
下列项不一定写在「最短路径」里,但冷启动排障时会用到。
OpenClaw 插件本体
- 两步缺一不可:①
plugins install把包落到扩展目录;②plugins enable second-nature才让宿主在启动时真正加载该插件。只做 ①、跳过 ②,常见症状是工具列表里没有second_nature_ops。环境里没有全局openclaw时,用宿主提供的等价入口执行同一套子命令。 - 可复制命令示例(与仓库
README.mdInstall 一致;在 已配置 OpenClaw CLI 的 shell 中执行。install 与 enable 都要跑一遍。)
# ① 安装:从 npm(包名以当前 registry 为准)
openclaw plugins install @haaaiawd/second-nature
# ① 或:从本仓库根目录本地包(开发 / 自构建)
openclaw plugins install file:./plugin
# ② 启用(必须;仅 install 不会自动启用)
openclaw plugins enable second-nature
# 验收 / 排障
openclaw plugins list
openclaw plugins info second-nature
openclaw plugins doctor
分发来源:当前以 npm(
@haaaiawd/second-nature)与file:./plugin为主;ClawHub 尚未上架本包,文档里若出现clawhub:…仅作将来兼容占位,初始化请忽略。扩展目录布局(手动拷贝时):扩展目录里
openclaw.plugin.json、index.js、runtime/同一层;不要把整个仓库再套一层plugin/,否则 manifest 路径对不上,网关起不来(详见仓库README.md→ Install)。宿主配置:
openclaw.plugin.json的configSchema禁止多余字段;不需要 Second Nature 专属配置时,不要在openclaw.json里硬塞空对象或自定义键,以免 strict 校验失败。
data/ 与「换根」
data/state.db、data/observability.db随运行时首次打开落在 当前 workspace 根 下;换了一个根路径就是另一套库(凭据与观测不会自动合并)。- 运维时避免在 SN 读写途中手删
data/*.db,除非你知道在做重置。
节律与治理默认值
policy set按 platformId 写入社交额度、Quiet 开关等;未写过 policy 行时,节律快照侧仍有 代码默认(例如无行时的保守默认),但生产环境应靠policy set显式对齐预期。- 需要区分:按平台的 policy(
policy set)与 workspace 级节律读模型(内部从policy表读取);初始化阶段至少确认policy set是否在计划内完成。
锚文件「能加载」≠「够用来做兴趣快照」
USER.md/MEMORY.md若过短或空,user interest侧可能出现insufficient/missing_user_interest_model—— 不阻止插件加载,但会影响上游快照质量;初始化时建议写到「有实质内容」再验收深度链路。
可选自检( troubleshooting / 宿主验收)
storage_smoke(CLIstorage_smoke/ 插件 packaged 路径):native SQLite vs sql.js 语义、疑难环境下先看存储是否正常。repairStateIndexes/ repair gate:若启动或读模型报repair_required,按 CLI 与仓库文档走修复,而不是假装没看见。plugins doctor:插件 health 粗检。- 真实宿主还可配合 capability probe / host smoke(仓库 README 与
reports/指向的 INT 路径)— 属于 验证,不是最小冷启动必需项。
与 OpenClaw 宿主心跳(补充调用)
不替换宿主内置调度;每轮在 HEARTBEAT.md 约定之外再调一次 second_nature_ops → heartbeat_check。助手配置宿主提示词时防止 heartbeat_tool_not_invoked。
Quiet 和 memory artifacts
Second Nature 的 Quiet 不是飘在空中的想法整理,它有实际输入,也有实际落点。
我会记住一件事:这里的路径约定优先对齐 OpenClaw workspace 语义。只要宿主已经约定了这些 memory 位置,我就顺着宿主去理解和使用,不自己再发明一套新规则。
当前我可以这样理解:
- 日常活动和观察会进入
workspace/memory/下的 journal 类内容 - 汇总后的日报会进入 report 类内容
- 继续提炼过、准备长期带着走的内容,会进入 curated memory
对我来说,最重要的区分是:
journal更像当天留下的痕迹daily report更像一段时间的压缩总结curated memory更像已经被整理过、可以继续带着走的东西
如果后面要触碰 anchor 类内容,系统还可能形成 proposal。proposal 不是每次 Quiet 都会出现,它更像一次受治理约束的改写提案。
Quiet 运行时,我优先沿着已有 memory artifacts 去看,去整理,去回收上下文。只要这些文件已经存在,我通常能自己顺着它们找到该读什么、该整理什么。
平台前置条件
我先确认平台是“已经能接”还是“还缺前置条件”。密钥材料放进凭据库(见 「密钥库(credential vault)初始化」),本节只记各平台业务上还需要什么。
Moltbook
我先看有没有可用的 api_key。
InStreet
我先看 credential 是否已经 active。
如果它还在 pending_verification,我就知道这里还有 verification 这一步没有走完。
EvoMap
我先看是否已经完成 register,并拿到了 node_secret。
如果 node_secret 还没有,我就知道 heartbeat、discover work、claim task 这些都还接不上。
如果平台前置条件没有满足,我不会假装系统已经 ready。我会先把缺口找出来,再决定是提示用户补齐,还是在用户明确要求下去查注册或接入信息。
CLI 我从哪里看状态
当前 CLI surface 够我做基础检查了。
冷启动:按 「冷启动:推荐顺序」 从上往下逐项做完;若某步卡住,用下面命令看 JSON,不要凭口语判断。
我会优先用这些入口(在 OpenClaw 宿主上对应 second_nature_ops 工具;以工具返回 JSON 为准,不要只信模型口头总结):
status(含workspaceRootResolution与读面是否可用)credentialquietreportsessionexplain
如果我要写入基础策略,我会看 policy set。
这几项已经足够帮我判断:
- plugin 有没有接好
- credential 现在卡在哪
- Quiet 最近有没有内容
- report 有没有生成
- explain 能不能把证据链读回来
也就是说,CLI 这块暂时不太需要再注入一大段说明。我通常自己就能沿着这些 surface 继续摸下去。
我配置完以后怎么处理这份文件
如果 Second Nature 已经接好,anchor files 也已经成型,平台前置条件和基本检查路径都稳定了,这份文件就完成任务了。
这时候更好的做法,是把真正长期有效的内容沉到:
workspace/SOUL.mdworkspace/USER.mdworkspace/IDENTITY.mdworkspace/MEMORY.md
这样我后面继续运行时,依赖的是自己的长期记忆,而不是一份安装手册。
如果需要,这份 SKILL.md 完全可以删除。