ワンクリックで
map-config
添加或修改配置字段、新增 JSON 序列化映射、更新 configuration.json 时触发。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
添加或修改配置字段、新增 JSON 序列化映射、更新 configuration.json 时触发。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
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 以确保链接可见