Token导航 LogoToken导航

Agent Skill · 研究检索

state-architecture(国家架构)

state-architecture 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

state-architecture 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 25,477。

总安装 3,757周安装 155GitHub Stars 公开资料未说明下载 1,228核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:state-architecture(国家架构)
来源仓库:https://github.com/wangzhiming1999/state-architecture
安装命令:
openclaw skills install state-architecture
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install state-architecture

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

state-architecture 为复杂前端应用设计可扩展的状态管理方案。涵盖存储切片、服务端/客户端状态分离与乐观更新机制。适合中大型 React/Vue 项目架构重构或新人培训参考。输出为设计原则与模式示例,具体实现需适配现有技术栈。不建议直接复制粘贴代码片段,应理解逻辑后本地化改造。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install state-architecture;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

state-architecture 怎么安装?

在终端执行 openclaw skills install state-architecture。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

state-architecture 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

state-architecture 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

state-architecture 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

state-architecture 用的人多吗?

公开数据是累计安装 3,757 次,近一周安装 155 次,下载 1,228 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

state-architecture 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
state-architecture

国家架构 · 本页

3,757—需要联网MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
state-architecture
description
Designs scalable state management architecture for complex frontend apps. Covers store slicing, server vs client state separation, optimistic updates, cross-tab sync, and state machine patterns. Use when 状态管理, store 设计, Zustand, Redux, 状态架构, 乐观更新, 状态机, or state design.
model
opus

状态管理架构(State Architecture)

为复杂前端应用设计可扩展的状态管理方案——不只是"用哪个库",而是如何切分、如何同步、如何避免状态腐化。

触发场景

  • 「状态管理怎么设计」「store 越来越乱」「组件间状态共享」
  • 「乐观更新怎么做」「状态和服务端不同步」「跨 tab 同步」
  • 「要不要用状态机」「这个流程状态太复杂了」
  • 新项目技术选型,或现有状态管理出现明显问题

核心原则

状态分类是第一步,选库是第二步。

状态类型定义推荐管理方式
服务端状态来自 API,有缓存/失效/同步问题React Query / SWR
全局 UI 状态跨组件共享,与服务端无关(主题、侧边栏、弹层)Zustand / Jotai
本地 UI 状态单组件内部(输入值、hover、展开收起)useState / useReducer
URL 状态可分享、可回退(筛选、分页、tab)URL 参数(nuqs / useSearchParams)
表单状态输入、校验、提交React Hook Form

最常见的错误:把服务端状态放进全局 store,然后手动维护缓存和同步——这是 React Query 要解决的问题,不要重复造轮子。


执行流程

1. 先诊断,再设计

用户说「状态管理有问题」时,先问清楚症状:

症状根因方向
「store 里全是接口数据」服务端状态混入全局 store迁移到 React Query,store 只留 UI 状态
「A 组件改了,B 组件不更新」状态没有提升到公共祖先,或订阅粒度太粗检查状态归属,或细化 selector
「store 越来越大,不知道谁在用」缺乏 slice 边界,状态所有权不清按功能域切分 slice,明确所有权
「乐观更新回滚逻辑很乱」没有统一的乐观更新模式用 React Query 的 onMutate/onError 模式
「这个流程有 10 种状态,if/else 写不下去了」需要状态机用 XState 或手写状态机

2. 状态归属决策树

拿到一个状态,按这个顺序判断放哪里:

这个状态是从 API 来的吗?
├── 是 → 用 React Query/SWR,不要放 store
└── 否 → 只有一个组件用吗?
    ├── 是 → useState,不要提升
    └── 否 → 需要在 URL 里体现吗(可分享/可回退)?
        ├── 是 → URL 参数
        └── 否 → 全局 store(Zustand/Jotai)

原则:状态尽量下沉,能放组件内就不放 store,能放 URL 就不放 store。

3. Zustand store 设计规范

按功能域切 slice,不要一个大 store:

// ❌ 错:一个 store 装所有东西
const useStore = create((set) => ({
  user: null,
  theme: 'light',
  sidebarOpen: false,
  notifications: [],
  cartItems: [],
  // ...越来越多
}))

// ✅ 对:按功能域切分
const useUIStore = create((set) => ({
  theme: 'light',
  sidebarOpen: false,
  setTheme: (theme) => set({ theme }),
  toggleSidebar: () => set((s) => ({ sidebarOpen: !s.sidebarOpen })),
}))

const useNotificationStore = create((set) => ({
  items: [],
  add: (item) => set((s) => ({ items: [...s.items, item] })),
  dismiss: (id) => set((s) => ({ items: s.items.filter(i => i.id !== id) })),
}))

selector 细化,避免无效重渲染:

// ❌ 错:订阅整个 store,任何字段变化都重渲染
const { theme, sidebarOpen } = useUIStore()

// ✅ 对:只订阅需要的字段
const theme = useUIStore((s) => s.theme)
const sidebarOpen = useUIStore((s) => s.sidebarOpen)

4. 乐观更新的标准模式

用 React Query 的 useMutation + onMutate/onError/onSettled:

const mutation = useMutation({
  mutationFn: updateTodo,
  onMutate: async (newTodo) => {
    // 1. 取消正在进行的请求,避免覆盖乐观更新
    await queryClient.cancelQueries({ queryKey: ['todos'] })
    // 2. 保存快照用于回滚
    const snapshot = queryClient.getQueryData(['todos'])
    // 3. 乐观更新缓存
    queryClient.setQueryData(['todos'], (old) =>
      old.map(t => t.id === newTodo.id ? { ...t, ...newTodo } : t)
    )
    return { snapshot }
  },
  onError: (err, newTodo, context) => {
    // 4. 失败时回滚
    queryClient.setQueryData(['todos'], context.snapshot)
  },
  onSettled: () => {
    // 5. 无论成功失败,重新拉取确保数据一致
    queryClient.invalidateQueries({ queryKey: ['todos'] })
  },
})

不要自己在 store 里手写乐观更新逻辑——React Query 的这套模式处理了所有边界情况。

5. 状态机:什么时候用,怎么用

需要状态机的信号:

  • 一个流程有 5+ 种状态,且状态之间有明确的转换规则
  • 出现了「在状态 A 下不能做 B」这类约束
  • 状态转换有副作用(发请求、记日志)
  • 团队经常讨论「现在到底是什么状态」

轻量状态机(不引入 XState):

type State =
  | { status: 'idle' }
  | { status: 'loading' }
  | { status: 'success'; data: Data }
  | { status: 'error'; error: Error }

type Event =
  | { type: 'FETCH' }
  | { type: 'SUCCESS'; data: Data }
  | { type: 'ERROR'; error: Error }
  | { type: 'RESET' }

function reducer(state: State, event: Event): State {
  switch (state.status) {
    case 'idle':
      if (event.type === 'FETCH') return { status: 'loading' }
      return state
    case 'loading':
      if (event.type === 'SUCCESS') return { status: 'success', data: event.data }
      if (event.type === 'ERROR') return { status: 'error', error: event.error }
      return state
    case 'success':
    case 'error':
      if (event.type === 'RESET') return { status: 'idle' }
      return state
  }
}

用 XState 的时机: 流程有并行状态、历史状态、延迟转换,或需要可视化状态图给产品/测试看。

6. 跨 Tab 状态同步

需要多 tab 共享状态时(如登录态、购物车):

// 用 BroadcastChannel(现代浏览器原生支持)
const channel = new BroadcastChannel('app-state')

// 发送
channel.postMessage({ type: 'CART_UPDATED', payload: cartItems })

// 接收
channel.onmessage = (event) => {
  if (event.data.type === 'CART_UPDATED') {
    useCartStore.setState({ items: event.data.payload })
  }
}

// 或用 Zustand 的 persist + storage event 监听 localStorage 变化

常见反模式

反模式问题正确做法
把 API 响应直接存 store手动维护缓存,容易不同步用 React Query
store 里存派生数据数据源不唯一,容易不一致用 selector 计算派生数据
组件里直接 store.getState()绕过响应式,不会触发重渲染用 hook 订阅
一个 action 改多个 slice耦合,难以追踪每个 slice 只管自己的状态,用事件驱动跨 slice 通信
状态里存 UI 临时状态(hover、focus)不必要的全局状态用组件本地 state

输出模板

## 状态管理方案

### 状态分类
| 状态 | 类型 | 管理方式 | 理由 |
|------|------|---------|------|
| 用户信息 | 服务端状态 | React Query | 需要缓存和同步 |
| 主题 | 全局 UI | Zustand | 跨组件,与服务端无关 |
| 表单输入 | 本地 UI | useState | 单组件内部 |
| 筛选条件 | URL 状态 | useSearchParams | 可分享、可回退 |

### Store 结构
- useUIStore:主题、侧边栏、弹层
- use[Domain]Store:[具体业务域]

### 关键决策
- 乐观更新:用 React Query onMutate 模式
- 跨 Tab 同步:BroadcastChannel / localStorage event
- 复杂流程:状态机(轻量 reducer / XState)

平台分布

OpenClaw

70.44%
按下载量换算865

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills