con un clic
map-config
添加或修改配置字段、新增 JSON 序列化映射、更新 configuration.json 时触发。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
添加或修改配置字段、新增 JSON 序列化映射、更新 configuration.json 时触发。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
写入新模块文档、重构模块、或用户要求分析模块时触发。
Bug 修复或对接问题排查确认有效后,将经验记录到知识库。
修改 PMR 分配器、内存池配置、热路径容器、对象生命周期管理代码后触发。
编写或修改性能基准测试、分析 benchmark 结果、优化热路径性能时触发。
新增或修改 enable_shared_from_this 类、co_spawn 调用、shared_ptr 捕获的 lambda、co_await 后的成员访问时触发。
新增或修改原子操作、异步定时器、无锁通道、跨线程状态同步、CAS 竞争相关代码时触发。
| name | map-config |
| description | 添加或修改配置字段、新增 JSON 序列化映射、更新 configuration.json 时触发。 |
添加配置字段、修改 JSON 序列化映射、更新 configuration.json、新增子系统配置时。
configuration.json(用户输入)
│
▼
loader::load() → transformer::json::deserialize() → glz::read_json
│
▼
psm::config(运行时聚合结构体)
│
▼
各子系统读取对应子配置
关键文件:
src/configuration.jsoninclude/prism/config.hpp(psm::config + trace/pool 的 glz::meta)include/prism/loader/load.hppinclude/prism/transformer/json.hpp在对应模块的 config.hpp 中添加字段:
struct config
{
memory::string field_name{"default_value"}; // memory::string 而非 std::string
memory::vector<memory::string> items; // PMR 容器
std::int32_t timeout_ms{300}; // 类内初始化器提供默认值
bool enabled{false};
[[nodiscard]] auto enabled() const
-> bool
{
return !field_name.empty(); // 根据实际字段判断
}
};
约束:
memory::stringmemory::vector / memory::mapenabled() 方法在对应模块的 serialize.hpp 中添加映射(不放在 config.hpp):
template <>
struct glz::meta<psm::module::config>
{
using T = psm::module::config;
static constexpr auto value = glz::object(
"field_name", &T::field_name,
"items", &T::items,
"timeout_ms", &T::timeout_ms,
"enabled", &T::enabled
);
};
枚举类型用 glz::enumerate:
template <>
struct glz::meta<psm::module::type>
{
static constexpr auto value = glz::enumerate(
"tcp", psm::module::type::tcp,
"udp", psm::module::type::udp
);
};
新增 serialize.hpp 文件需在 config.hpp 末尾 include。
在对应节添加新字段:
{
"module": {
"field_name": "default_value",
"timeout_ms": 300,
"enabled": false
}
}
如果新增了整个配置节,需在 include/prism/config.hpp 中添加到 psm::config:
struct config
{
// ... 已有子配置
module::config module; // 新增
};
同时在 config.hpp 底部为 psm::config 的 glz::meta 添加新字段映射。
配置测试是同步的(不需要协程),直接用 void 函数:
void TestDefaults()
{
module::config cfg;
runner.Check(cfg.timeout_ms == 300, "默认超时");
runner.Check(cfg.field_name == "default_value", "默认 field_name");
}
void TestDeserialize()
{
memory::string json = R"({"field_name": "test"})";
module::config cfg;
bool ok = transformer::json::deserialize(json, cfg);
runner.Check(ok, "反序列化成功");
runner.Check(cfg.field_name == "test", "已解析 field_name");
}
注意:deserialize() 返回 bool,应检查返回值。
| 模块 | 映射文件 |
|---|---|
| instance | include/prism/instance/serialize.hpp |
| multiplex | include/prism/multiplex/serialize.hpp |
| stealth | include/prism/stealth/serialize.hpp |
| dns | include/prism/resolve/dns/serialize.hpp |
| trace/pool/config | include/prism/config.hpp(底部) |
serialize.hpp,不放 config.hpp(避免污染模块头)transformer::json::deserialize() 包装以正确构造临时对象psm::config 聚合结构体和其 glz::metaconfig.hpp 末尾添加 include 以确保链接可见