Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、Codex、Cursor 與 40+ 程式碼代理人作為持續機器人傳訊。群組聊天、主題串…
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Requires C++23 (e.g.,
-std=c++23for GCC/Clang,/std:c++latestfor MSVC).
API Reference · Usage Guide · Data and Method · Releases
Complete characters composed from the other dasmig generators: one call draws a country, a city, a birth, a body, a name, interests, an occupation and a personality, each conditioned on what was drawn before, and returns them as typed results and one JSON document.
Jéssica Tomaz Cardozo, 34, female, São Paulo, Brazil, Farm labourer, BRL 12,900 a year
One Call, Eight Libraries. A country sets the city, the name's culture, the body, the interests and the job; the birth's age and sex set the rest. The order and dependencies are declared as entity-generator fields, so they are checked, not assumed.
Batch Generation. Generate thousands of results from one seed, on several threads with the same output for any thread count, optionally unique by a key, and stream them as JSON Lines or CSV (see the usage guide).
Ask for What You Need. A persona_request can fix the country, the sex, an age range, the reference date and the number of traits. What is left out is drawn. Set relations to also get the persona's family (parents, siblings, partners, children), drawn by relationship-generator; it is off by default and changes nothing else.
Deterministic Seeding. get_persona(request, seed) is a pure function of the request, the seed and the data, and persona::seed() replays a previous persona. Each library draws from its own stream split from the seed, so forcing one choice does not shift the others.
Identical Everywhere. A seed gives the same result on every compiler, standard library and CPU (GCC, Clang, MSVC, Emscripten; x86-64 and ARM64), checked by known-answer tests.
JSON and Replay. to_json() writes every library's result as that library writes it; signature() records the seed and a hash of the data of all eight libraries and the request.
Your Data. The generator holds no data of its own. It calls the instances of the libraries, so their tiers (lite, full) and layers (extend()) are the persona's. Construct a psg over your own instances to use different data side by side.
personagen.hpp is the library released here. It composes these libraries, which must be on the include path (with dasmig-core in each): biodata, birth, city, country, entity, interest, name, occupation, relationship and trait. The release notes list the versions it was tested with. Add
#include <dasmig/personagen.hpp>
to the files you want to use it in. Each library finds its data as it does alone (a resources folder, or its compiled-in lite tier: define DASMIG_COUNTRY_EMBED, DASMIG_CITY_EMBED, DASMIG_BIRTH_EMBED, DASMIG_BIODATA_EMBED, DASMIG_NAME_EMBED, DASMIG_INTEREST_EMBED, DASMIG_OCCUPATION_EMBED and DASMIG_TRAIT_EMBED).
#include <dasmig/personagen.hpp>
#include <iostream>
auto& gen = dasmig::psg::instance();
auto p = gen.get_persona(dasmig::persona_request{});
std::cout << p << '\n'; // one line: name, age, sex, city, country, job
std::cout << p.to_json() << '\n'; // {"name":...,"country":{...},"city":{...},...}
dasmig::persona_request request;
request.country = "BR";
request.person_sex = dasmig::sex::female;
request.ages = dasmig::age_range{.min = 25, .max = 35};
auto q = gen.get_persona(request);
// The same seed gives the same result everywhere.
auto again = gen.get_persona(request, q.seed());
See the usage guide for everything else.
@dasmig/persona is this library compiled to WebAssembly, with the lite data of the libraries it composes built in, for browsers, Web Workers and Node 20+: npm install @dasmig/persona. Its source is in package/ and the C API it wraps in wasm/. make package (or python3 scripts/build_package.py) builds it with Emscripten into build/package, and CI tests it in Node and in headless Chrome, benchmarks it and packs it. The package has its own version; the library versions each build contains are in its versions.
The libraries it composes are sibling checkouts (LIBS=.., the default), with their lite data compiled in.
make # example
make test # tests
make bench # benchmarks, results in build/bench.tsv
make coverage # code coverage
make lint # clang-tidy
make docs # API docs
make package # the npm package, built with Emscripten into build/package
make test LIBS=path/to/the/libraries # when they are elsewhere
Tested with:
-std=c++23)-std=c++23)/std:c++latest)| Dependency | Version | Bundled | Purpose |
|---|---|---|---|
| dasmig-core | 1.4 | Yes (core.hpp, core/) | Platform-independent random engine and distributions, JSON |
| the nine libraries above | see CI | No | The persona's parts |
| Catch2 | 3.x | Yes (amalgamated) | Unit testing |
| Library | Description |
|---|---|
| address-generator | Postal addresses with real streets by place |
| biodata-generator | Procedural human physical characteristics |
| birth-generator | Demographically plausible birthdays |
| city-generator | Weighted city selection by population |
| country-generator | Weighted country selection by population |
| device-generator | Devices, browsers, user agents and IP addresses that fit together |
| email-generator | Email addresses in each country's style |
| entity-generator | ECS-based entity generation |
| interest-generator | Religion, hobbies and favourite media by country, age and sex |
| name-generator | Culturally appropriate full names |
| nickname-generator | Gamer-style nicknames |
| occupation-generator |
This library is released under the MIT License.
MIT License
Copyright (c) 2026 Diego Dasso Migotto
| Employment status, education and occupation by country, age and sex |
| phone-generator | Phone numbers valid in each country's numbering plan |
| relationship-generator | Families around a person: parents, siblings, partners and children |
| trait-generator | Personality traits with conflicts, synergies and Big Five axes |
| user-generator | Complete user records: account, username, email, phone and address |