It’s not an easy task, it largely depends on the type of bonuses involved. For instance, if the bonuses are strictly stat/skill increases, that’s one scenario. However, if they include special behaviours (such as reducing incoming damage, emitting light, or suppressing hunger/thirst), it becomes a more complex issue.
One approach is to create an “aggregator talisman” as a container (or as a talisman derivative with an embedded container function). When a talisman is put inside of it, it would recursively check all the talismans within it and aggregate similar values and bonuses. This method requires you to manually craft a helper function (e.g., GetBonuses()) to extract, map, and then apply the bonuses all at once according to the specific bonus type. Then when equipped (or triggered) it would apply the aggregated bonuses.
Another approach is similar in that the aggregator talisman would still hold multiple talismans, but instead of extracting and applying bonuses in one shot, it would simply trigger the OnEquip (or trigger method you use on the talisman) function of each talisman it contains. However, this method carries the risk of duplicate bonuses (for example, if two talismans provide similar effects, they might override each other or not work as intended) or other issues.