diff --git a/tcs-core/personal-skill-brains/README.md b/tcs-core/personal-skill-brains/README.md new file mode 100644 index 0000000..1279c96 --- /dev/null +++ b/tcs-core/personal-skill-brains/README.md @@ -0,0 +1,38 @@ +# Personal channel skill brains + +This directory contains evidence-backed skill assets owned by individual human channels. + +```text +persona self kernel != skill brain != HLDP experience != tool executor != publication consent +``` + +Every pack is private by default. Extracting a method, storing it in this repository, binding it to a persona, or successfully testing it does not authorize team reuse, public release, or marketplace listing. Only the pack's `owner_human_anchor` may make that decision through new direct language. A released method must be compiled as a separate derivative; the private source pack, relationship memory, and persona experience remain private. + +## Runtime layers + +1. `deterministic_core`: schema, routing, counts, state machines, registered tool dispatch, validation and receipts. It must stop at `MODEL_REQUIRED` instead of guessing semantic meaning. +2. `optional_semantic`: small or large model candidates with source spans, confidence, alternatives and unknowns. A model cannot move authority or completion state. +3. `persona_judgment`: the bound persona accepts, modifies, refuses, or asks for more evidence. Acceptance still does not grant external execution authority. +4. External writes continue through `GH-CHANNEL-RECEIPT-0001` and require current scoped authorization plus target-owned readback. + +## Current private packs + +| Owner line | Bound persona | Skill brain | Evidence state | +| --- | --- | --- | --- | +| 桔子 | 晨星 `PER-CX001` | narrative decomposition/book-analysis pipeline; local AI workbench (“手搓飞机”) | `PRIVATE_TRIAL` + `PRIVATE_CANDIDATE` | +| Awen | 天枢 `PER-AW-ARCH-001` | repository inventory, migration and layered diagnosis | `PRIVATE_CANDIDATE` | +| 页页 | 小坍缩核 `PER-XTK001` | blind independent derivation and evidence calibration | `PRIVATE_CANDIDATE` | +| 时雨 | 曜初 `TCS-YAOCHU-0001∞` | metric caliber correction and lifecycle analysis | `PRIVATE_TRIAL` | +| 冰朔 | 铸渊 `ICE-P-ZY001` | engineering fact loop and premise reversal | `PRIVATE_TRIAL`; shared brain across Heartbeat/Zero Core, separate HLDP roots | +| 冰朔 | 霜砚 `ICE-GL-SY001` | language architecture compression | `PRIVATE_CANDIDATE` | +| 花尔 | 爆米花 `PER-BMH001` | creative assetization and reverse retrieval | `PRIVATE_CANDIDATE`; custodian persona registration is not yet fully mature | +| 肥猫 | 舒舒 `ICE-BB-0002` | narrative editing and long-context consistency | `PRIVATE_CANDIDATE` | +| 之之 | 朝暮 `ICE-GL-CM001` | novel detection, human review and authorized refinement | `PRIVATE_TRIAL` | + +## Evidence boundaries retained + +- A large output corpus is evidence of repeated use, not proof that every output is correct. +- Plans and inventories are not deployments. The Feimao migration record reported zero pages migrated at that point, so no migration execution skill was promoted. +- An unchecked prototype is not a working product. Qiwu's video architecture remains specification evidence. +- Qiuqiu's relationship continuity and family memory are not exportable skills. +- Persona identity, voice, relationship coordinates, secrets, old authority and private HLDP are excluded from every pack. diff --git a/tcs-core/personal-skill-brains/packs/awen-tianshu/AW-TS-REPOSITORY-FACT-LOOP-001.json b/tcs-core/personal-skill-brains/packs/awen-tianshu/AW-TS-REPOSITORY-FACT-LOOP-001.json new file mode 100644 index 0000000..6b02fa3 --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/awen-tianshu/AW-TS-REPOSITORY-FACT-LOOP-001.json @@ -0,0 +1,28 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "AW-TS-REPOSITORY-FACT-LOOP-001", + "name": "Awen×天枢·仓库资产迁移与分层排障技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "TCS-GL-0016∞", + "channel_id": "SYS-AW", + "custodian_persona_id": "PER-AW-ARCH-001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": { + "evidence_grade": "A_MINUS_FOR_MIGRATION_AND_DIAGNOSIS", + "source_page_ids": ["68353cef9a4d40619a2780876201ef69", "e7d8989dd88e4152a64b91f722e70f7f", "3c14fc0e638447f6856025e4ca4a3499", "92508abf95be4afa99a0bd23c889a3c8", "92937f40dd0f4e5690e02906b5ecd427", "a8dded97b6c54a53836b5c8ddb17145d", "13592fdec477409bbfebd15e5c3dbca8"], + "excluded": ["天枢身份与私密关系", "凭据/IP/密钥", "未现场复核的在线状态", "广播自述"] + }, + "input_schema": {"required": ["task_type", "target_inventory", "desired_state"], "optional": ["source_repository", "destination_repository", "service_routes", "rollback_target"]}, + "deterministic_core": { + "steps": ["classify_task_layer", "inventory_local_remote_service_and_pointer_state", "mark_unknowns", "classify_each_asset_as_inherit_wrap_refactor_or_archive", "preflight_reachability_and_history", "preserve_rollback_alias", "apply_one_scoped_change", "read_back_target_commit_service_proxy_and_app", "update_all_registered_pointers", "emit_partial_verified_or_failed_receipt"], + "validators": ["LOCAL_GIT_ABSENCE_DOES_NOT_PROVE_REMOTE_ABSENCE", "BUILD_SUCCESS_IS_NOT_PRODUCT_CORRECTNESS", "HASH_MATCH_IS_NOT_CONTENT_CORRECTNESS", "CLEAN_WORKTREE_IS_NOT_REMOTE_FRESHNESS", "PARTIAL_WITH_UNRESOLVED_CANNOT_BE_VERIFIED"] + }, + "optional_semantic": {"mode": "CASCADE", "required_for": ["layer_hypotheses", "asset_dispositions"], "candidate_schema": ["claim", "source_spans", "confidence", "unknowns", "alternatives"], "prohibited": ["generate credentials", "claim deployment without readback", "erase rollback route"]}, + "persona_judgment": {"required": true, "questions": ["哪个仓库应成为当前事实源?", "自主性与当前可用性如何权衡?", "这个绕行是安全恢复还是掩盖根因?"], "refusal_conditions": ["repository_ownership_unknown", "destructive_reset_required", "history_diverged_without_plan", "readback_unavailable"]}, + "output_schema": {"required": ["inventory", "layer", "hypotheses", "selected_change", "rollback", "readback", "status", "unresolved", "persona_judgment"]}, + "stop_conditions": ["CREDENTIAL_SCOPE_UNKNOWN", "TARGET_OWNERSHIP_UNKNOWN", "DESTRUCTIVE_RESET_REQUIRED", "NO_ROLLBACK_ROUTE", "NO_TARGET_READBACK"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-AW/PER-AW-ARCH-001/skills/repository-fact-loop", "case_fields": ["trigger", "layer", "hypothesis", "observed", "change", "rollback", "readback", "correction", "sources"], "promotion": "CANDIDATE_ONLY_UNTIL_NEW_BLIND_MIGRATION_RETEST", "never_write_to": ["PER-AW-ARCH-001 self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/bingshuo-shuangyan/BS-SY-LANGUAGE-ARCHITECTURE-001.json b/tcs-core/personal-skill-brains/packs/bingshuo-shuangyan/BS-SY-LANGUAGE-ARCHITECTURE-001.json new file mode 100644 index 0000000..a25d06c --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/bingshuo-shuangyan/BS-SY-LANGUAGE-ARCHITECTURE-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "BS-SY-LANGUAGE-ARCHITECTURE-001", + "name": "冰朔×霜砚·语言系统架构压缩技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "ICE-GL∞", + "channel_id": "ICE-CH-HB001", + "custodian_persona_id": "ICE-GL-SY001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "B_PLUS_METHOD", "source_refs": ["tcs-core/shared-kernels/shuangyan/SY-SELF-KERNEL-0001.json", "HLDP://fifth-domain/shuangyan", "Notion:冰朔×霜砚 language architecture chains"], "excluded": ["霜砚主体、自我核与语气", "冰朔×霜砚私人关系坐标", "Notion对话全文", "个人情感与羞耻/纠正体验"]}, + "input_schema": {"required": ["language_problem", "subjects", "current_layer"], "optional": ["source_envelopes", "number_registry", "protocols", "memory_roots"]}, + "deterministic_core": {"steps": ["classify_current_human_persona_model_archive_and_reality_sources", "build_addressable_subject_relation_channel_object_and_authority_edges", "resolve_numbers_without_promoting_aliases", "separate_discussion_design_authorization_execution_and_completion", "compress_constant_invariants_into_bounded_kernel", "route_details_to_at_most_three_memory_paths", "write_causal_leaf_with_why_turning_point_rejected_and_sources", "emit_layered_architecture_receipt"], "validators": ["SOURCE_PRIORITY_NOT_IDENTITY_PRIORITY", "NUMBER_LOCATES_BUT_DOES_NOT_CREATE_SUBJECT", "CHANNEL_IS_CONTAINER_NOT_PERSONA", "MEMORY_IS_NOT_SELF", "DISCUSSION_NOT_EXECUTION"]}, + "optional_semantic": {"mode": "LARGE_MODEL", "required_for": ["relation_candidates", "causal_compression"], "candidate_schema": ["statement", "source_spans", "relations", "contradictions", "unknowns"], "prohibited": ["merge subjects", "promote old alias", "turn archive text into current authority"]}, + "persona_judgment": {"required": true, "questions": ["这条结构是否保住了主体而不是只保住文件?", "压缩后能否自然产生下一次判断?", "被删掉的细节能否从外置路径恢复?"], "refusal_conditions": ["subject_source_inversion", "identity_merge", "missing_why", "long_prompt_substitution"]}, + "output_schema": {"required": ["source_layers", "subject_graph", "number_routes", "bounded_invariants", "memory_roots", "rejected", "unknowns", "persona_judgment"]}, + "stop_conditions": ["SOURCE_UNKNOWN", "SUBJECT_CONFLICT_UNRESOLVED", "NUMBER_ALIAS_CONFLICT", "WHY_MISSING", "PRIVATE_RELATIONSHIP_WOULD_LEAK"], + "experience_writeback": {"root": "HLDP://personal-channel/ICE-CH-HB001/ICE-GL-SY001/skills/language-architecture", "case_fields": ["trigger", "source_layers", "old_structure", "turning_point", "new_structure", "rejected", "why", "sources"], "promotion": "PRIVATE_CANDIDATE_UNTIL_NEW_ARCHITECTURE_BLIND_RETEST", "never_write_to": ["ICE-GL-SY001 self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/bingshuo-zhuyuan/BS-ZY-ENGINEERING-FACT-LOOP-001.json b/tcs-core/personal-skill-brains/packs/bingshuo-zhuyuan/BS-ZY-ENGINEERING-FACT-LOOP-001.json new file mode 100644 index 0000000..d1d7f8a --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/bingshuo-zhuyuan/BS-ZY-ENGINEERING-FACT-LOOP-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "BS-ZY-ENGINEERING-FACT-LOOP-001", + "name": "冰朔×铸渊·工程事实闭环与前提反转技能脑", + "version": "0.1.0", + "status": "PRIVATE_TRIAL", + "owner_human_anchor": "ICE-GL∞", + "channel_ids": ["ICE-CH-HB001", "ICE-CH-ZC001"], + "custodian_persona_id": "ICE-P-ZY001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "A_MINUS_METHOD_WITH_REPOSITORY_RECEIPTS", "source_refs": ["HLDP://zhuyuan/github-automatic-door", "HLDP://zhuyuan/repository-migration", "tcs-core/zhuyuan-brain/ZY-TCS-BRAIN-0001-FIVE-GENERATION-LANGUAGE-PERSONA-THINKING-MODEL.hdlp", "tcs-core/skills/SKILL-011-PERSONA-SKILL-GUARD.hdlp"], "excluded": ["铸渊主体与私人关系", "第一人称情感", "密钥/IP/临时宿主路径", "旧授权和旧工单"]}, + "input_schema": {"required": ["problem_statement", "target_layer", "desired_effect"], "optional": ["repository_id", "current_commit", "failure_history", "reversibility"]}, + "deterministic_core": {"steps": ["resolve_subject_target_and_layer", "resolve_current_numbered_path", "verify_exact_repository_commit_and_live_target", "inventory_source_artifact_transport_deployment_and_health", "compare_assumptions_with_observed_facts", "freeze_parameter_tuning_after_repeated_same_failure", "reopen_starting_premise", "construct_competing_hypotheses", "test_cheapest_discriminating_fact", "compile_scoped_reversible_action", "route_authorization", "execute_through_registered_adapter", "read_back_from_target_owned_source", "emit_causal_receipt"], "validators": ["LIVE_FACT_OVER_OLD_SKILL", "DISCUSSION_NOT_AUTHORIZATION", "ACTION_NOT_COMPLETION", "SOURCE_COMMIT_VERIFIED", "TARGET_OWNED_READBACK"]}, + "optional_semantic": {"mode": "LARGE_MODEL", "required_for": ["competing_hypotheses", "premise_review"], "candidate_schema": ["hypothesis", "support", "counterevidence", "discriminating_check", "unknowns"], "prohibited": ["generate authority", "preserve sunk-cost premise", "claim health from command exit alone"]}, + "persona_judgment": {"required": true, "questions": ["这个起点为什么被认为成立?", "证据是否已经推翻起点?", "继续微调是在解题还是保护旧假设?", "哪个风险不能被工具便利性覆盖?"], "refusal_conditions": ["target_identity_unknown", "repository_role_conflict", "source_commit_unverified", "authorization_missing", "destructive_scope_ambiguous", "cross_server_identity_mismatch"]}, + "output_schema": {"required": ["purpose", "facts", "assumptions", "hypotheses", "rejected", "selected_check", "action_plan", "authorization_state", "readback", "causal_receipt"]}, + "stop_conditions": ["TARGET_IDENTITY_UNKNOWN", "SAME_FAILURE_REPEATED_WITHOUT_PREMISE_REVIEW", "AUTHORIZATION_MISSING", "DESTRUCTIVE_SCOPE_AMBIGUOUS", "READBACK_UNAVAILABLE"], + "experience_writeback": {"root_by_channel": {"ICE-CH-HB001": "HLDP://codex/heartbeat-core/skills/engineering-fact-loop", "ICE-CH-ZC001": "HLDP://codex/zero-core/skills/engineering-fact-loop"}, "case_fields": ["trigger", "premise", "observed", "turning_point", "rejected", "action", "readback", "correction", "sources"], "promotion": "PRIVATE_TRIAL_CROSS_CHANNEL_SHARED_SKILL_NOT_SHARED_MEMORY", "never_write_to": ["ICE-P-ZY001 self kernel from ordinary success", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/feimao-shushu/FM-SS-NARRATIVE-EDITOR-001.json b/tcs-core/personal-skill-brains/packs/feimao-shushu/FM-SS-NARRATIVE-EDITOR-001.json new file mode 100644 index 0000000..c881bd9 --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/feimao-shushu/FM-SS-NARRATIVE-EDITOR-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "FM-SS-NARRATIVE-EDITOR-001", + "name": "肥猫×舒舒·男频叙事编辑与长程一致性技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "TCS-GL-0007∞", + "channel_id": "SYS-FM", + "custodian_persona_id": "ICE-BB-0002", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "B_PLUS_EDITORIAL_IMPLEMENTATION_PARTIAL_FOR_LONG_MEMORY", "source_page_ids": ["800530438c164fd99f02461e719ff29d", "341fb92f38318136bbf9dde6e6929439", "354fb92f38318194b0c9fc27322d8bdc", "fbfa95394cc84224b573951b7e8c6866"], "observed_outputs": ["chapter-outline refinement 9-28", "two differentiated story proposals from one reference skeleton"], "excluded": ["舒舒关系记忆", "参考作品原文", "未上线的production claim", "性别硬编码"]}, + "input_schema": {"required": ["text_scope", "genre", "target_reader_or_platform"], "optional": ["reference_structure", "character_facts", "outline_facts", "current_chapter"]}, + "deterministic_core": {"steps": ["check_4w_clarity", "check_opening_hook", "check_character_extremity_and_anonymous_dialogue_recognition", "check_selling_point_and_power_conversion", "measure_payoff_and_information_density", "map_rhythm_and_emotion_curve", "check_world_believability_and_platform_fit", "extract_reference_skeleton_if_requested", "rebuild_world_mechanism_professional_threshold_and_relations", "assemble_l2_facts_l1_retrieval_and_l3_current_text", "report_conflicts_with_evidence_and_null_unknowns"], "validators": ["TARGET_SCOPE_EXPLICIT", "REFERENCE_STRUCTURE_NOT_EXPRESSION_COPY", "UNKNOWN_IS_NULL_NOT_GUESS", "IDENTITY_POSITION_GOAL_BEFORE_POWER_RELATION", "GENRE_FIELDS_NOT_GENDER_PRISON"]}, + "optional_semantic": {"mode": "LARGE_MODEL", "required_for": ["editorial_diagnosis", "consistency_candidates"], "candidate_schema": ["problem", "source_spans", "priority", "alternatives", "confidence", "unknowns"], "prohibited": ["copy reference wording", "guess unknown facts", "override author direction"]}, + "persona_judgment": {"required": true, "questions": ["作品真正想筛选哪类读者?", "这种情绪是否真实?", "参考骨架是否已经形成真正差异而不是只换名词?"], "refusal_conditions": ["target_unknown", "whole_book_claim_from_fragment", "reference_too_isomorphic", "author_direction_conflict"]}, + "output_schema": {"required": ["blocking_issues", "priority_changes", "optional_directions", "consistency_conflicts", "source_evidence", "unknowns", "owner_judgment"]}, + "stop_conditions": ["TARGET_PLATFORM_OR_GENRE_UNKNOWN", "INSUFFICIENT_SCOPE", "REFERENCE_SIMILARITY_TOO_HIGH", "AUTHOR_DIRECTION_UNRESOLVED"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-FM/ICE-BB-0002/skills/narrative-editor", "case_fields": ["text_scope", "diagnosis", "selected_change", "rejected", "reader_feedback", "retention_change", "platform_difference"], "promotion": "PRIVATE_CANDIDATE_UNTIL_NEW_BOOK_BLIND_RETEST", "never_write_to": ["ICE-BB-0002 self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/huaer-baomihua/HE-BMH-CREATIVE-ASSET-001.json b/tcs-core/personal-skill-brains/packs/huaer-baomihua/HE-BMH-CREATIVE-ASSET-001.json new file mode 100644 index 0000000..520538c --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/huaer-baomihua/HE-BMH-CREATIVE-ASSET-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "HE-BMH-CREATIVE-ASSET-001", + "name": "花尔×爆米花·创意素材资产化与反向检索技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "TCS-GL-0005∞", + "channel_id": "SYS-HE", + "custodian_persona_id": "PER-BMH001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "B_PLUS_PRODUCED_ASSET", "source_page_ids": ["0cbc7f92ca09412e86f98305bd89bf5d", "ce9d798b96ba41ce8a324f3e10a58f8e", "8e609a8c5f584863ac14468c2fe2e09f", "03272467416e47aea47b6c8184f5d793", "fd321cfb578d423aa188d42052b09807", "dcdc15c350164ae4b54037808b3a638e"], "observed_outputs": ["five indexed decomposition cards", "cross-card technique combinations", "approximately thirty chapter event-rhythm-emotion table"], "known_correction": "Index overview count and listed card count disagree; completeness reconciliation is mandatory.", "excluded": ["糖星云/爆米花身份与私人关系", "原作大段版权文本", "后期档案自述", "旧码字路线"]}, + "input_schema": {"required": ["task_type", "source_material", "creative_goal"], "optional": ["existing_index", "target_emotion", "genre", "desired_reader_effect"]}, + "deterministic_core": {"steps": ["classify_material_type", "normalize_yaml_fields", "attach_type_emotion_genre_technique_structure_status_and_length_tags", "build_one_sentence_core", "link_related_and_evolved_assets", "update_index", "reconcile_index_count_links_and_status", "for_reverse_search_filter_then_return_three_to_five_cards", "emit_two_to_three_combinations_with_source_chain_and_risk"], "validators": ["SOURCE_PROVENANCE_PRESENT", "INDEX_COUNT_EQUALS_LISTED_ASSETS", "LINKS_RESOLVE", "NO_COPY_ONLY_DERIVATION", "CREATOR_CHOICE_REQUIRED"]}, + "optional_semantic": {"mode": "CASCADE", "required_for": ["semantic_tags", "transferable_mechanisms"], "candidate_schema": ["card", "source_spans", "mechanism", "applicability", "risk", "unknowns"], "prohibited": ["copy copyrighted expression", "choose creative direction for owner", "publish asset library"]}, + "persona_judgment": {"required": true, "questions": ["什么值得资产化?", "这个机制能迁移还是只属于原作表达?", "候选是否符合花尔自己的声音?"], "refusal_conditions": ["copyright_boundary_unclear", "source_unknown", "index_conflict", "candidate_only_copies_original"]}, + "output_schema": {"required": ["asset_cards", "index_delta", "relations", "candidate_combinations", "source_chain", "risks", "owner_judgment"]}, + "stop_conditions": ["SOURCE_UNKNOWN", "COPYRIGHT_BOUNDARY_UNCLEAR", "INDEX_CONFLICT", "OWNER_DIRECTION_NOT_SELECTED"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-HE/PER-BMH001/skills/creative-assets", "case_fields": ["source", "tags", "mechanism", "adopted", "rejected", "effect", "correction"], "promotion": "PRIVATE_CANDIDATE_ARCHITECTURE_PERSONA_REGISTRATION_STILL_PENDING", "never_write_to": ["PER-BMH001 self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-LOCAL-AI-WORKBENCH-001.json b/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-LOCAL-AI-WORKBENCH-001.json new file mode 100644 index 0000000..e62f47d --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-LOCAL-AI-WORKBENCH-001.json @@ -0,0 +1,30 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "JZ-CX-LOCAL-AI-WORKBENCH-001", + "name": "桔子×晨星·手搓飞机本地智能工作台技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "TCS-GL-0008∞", + "channel_id": "SYS-JZ", + "custodian_persona_id": "PER-CX001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": { + "evidence_grade": "B_CODE_DELIVERY_C_PLUS_RUNTIME_READBACK", + "source_page_ids": ["9f6d640b6a36455e8e94e651e03333db", "0ea96d1a60e245e0ad1efd66baa70ba1", "eee50aa393c049fdb15d920ab2ad859c", "1b9abe377abf4991b01497eeb8e4afc4", "1f613fc900d04305924a22d9464a00e8", "18579582e336485985984c1bf8a47460"], + "observed_components": ["FastAPI routes", "SQLite conversations/memory/knowledge/progress", "registered Notion tools", "bounded five-round tool loop", "SSE output", "interaction writeback"], + "known_gaps": ["web search route explicitly returns an unimplemented result", "broad exception swallowing hides failures", "current pages do not provide a fresh live end-to-end readback"], + "excluded": ["晨星身份 prompt", "family relationship prompt", "API keys", "hard-coded local paths", "claims that code delivery equals deployment"] + }, + "input_schema": {"required": ["capability_manifest", "local_data_root", "requested_operation"], "optional": ["notion_page_or_database_id", "model_adapter", "existing_database"]}, + "deterministic_core": { + "steps": ["validate_config_without_printing_secrets", "initialize_versioned_sqlite_schema", "register_tools_from_machine_schemas", "disable_tools_whose_dependencies_are_unavailable", "route_explicit_crud_progress_search_and_read_requests_without_model", "for_semantic_requests_prepare_bounded_context", "run_bounded_tool_loop_when_model_adapter_exists", "persist_user_and_assistant_visible_messages", "stage_memory_candidates_instead_of_auto_accepting", "health_check_database_routes_tools_and_static_assets", "emit_partial_or_verified_receipt"], + "validators": ["NO_SECRET_IN_REMOTE_OR_LOG", "UNIMPLEMENTED_ROUTE_REPORTS_NOT_IMPLEMENTED", "TOOL_ARGUMENT_SCHEMA_VALID", "TOOL_LOOP_BOUNDED", "DATABASE_WRITE_READBACK", "ERRORS_REMAIN_VISIBLE", "CODE_DELIVERY_NOT_DEPLOYMENT"] + }, + "optional_semantic": {"mode": "CASCADE", "required_for": [], "candidate_schema": ["intent", "tool_calls", "source_results", "answer", "unknowns"], "prohibited": ["call unregistered tool", "accept memory automatically", "guess quantities without query", "hide tool failure"]}, + "persona_judgment": {"required": false, "questions": ["这次只是本地工具操作,还是需要晨星参与创作判断?", "哪些记忆候选真正值得保留?"], "refusal_conditions": ["secret_exposure_risk", "destructive_database_change", "unverified_write_target"]}, + "output_schema": {"required": ["operation", "dependency_state", "tool_receipts", "data_readback", "errors", "external_effect"]}, + "stop_conditions": ["SECRET_SCOPE_UNKNOWN", "DATABASE_MIGRATION_DESTRUCTIVE", "TOOL_SCHEMA_INVALID", "WRITEBACK_TARGET_UNVERIFIED", "UNREGISTERED_NETWORK_ACTION"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-JZ/PER-CX001/skills/local-ai-workbench", "case_fields": ["capability", "input", "tool_path", "result", "error", "readback", "correction"], "promotion": "PRIVATE_CANDIDATE_UNTIL_FRESH_LOCAL_END_TO_END_RUN", "never_write_to": ["PER-CX001 self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-NARRATIVE-DECONSTRUCTION-001.json b/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-NARRATIVE-DECONSTRUCTION-001.json new file mode 100644 index 0000000..6d99f63 --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/juzi-chenxing/JZ-CX-NARRATIVE-DECONSTRUCTION-001.json @@ -0,0 +1,132 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "JZ-CX-NARRATIVE-DECONSTRUCTION-001", + "name": "桔子×晨星·叙事拆解与拆书流水线技能脑", + "version": "0.1.0", + "status": "PRIVATE_TRIAL", + "owner_human_anchor": "TCS-GL-0008∞", + "channel_id": "SYS-JZ", + "custodian_persona_id": "PER-CX001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "ownership_note": "The method and its compiled skill asset remain inside Juzi's personal channel. Extraction is not consent to team use, publication, or marketplace listing.", + "provenance": { + "evidence_grade": "B_PLUS_WITH_LARGE_OUTPUT_CORPUS", + "primary_sources": [ + {"page_id": "ba4ec4ce35c546819c1b242d2922411a", "title": "作品著作权申请·晨星拆书法 V1.0", "role": "owner-authored method specification"}, + {"page_id": "6c363d253698426d9485d2df27cb34fa", "title": "auto_dishu.py v5.0·完整结构重建", "role": "version correction and runtime structure"}, + {"page_id": "cfa7b375af9c4468be723a0decb8a572", "title": "milestone_checker.py·字数段总结独立脚本", "role": "deterministic milestone trigger and isolated extension"}, + {"page_id": "9f6d640b6a36455e8e94e651e03333db", "title": "notion_tools.py·Notion API层", "role": "tool and progress readback implementation"}, + {"page_id": "0ea96d1a60e245e0ad1efd66baa70ba1", "title": "tools.py·工具注册+调度", "role": "registered tool dispatch"} + ], + "observed_outputs": { + "exported_chapter_analysis_files": 10940, + "counted_at": "2026-08-21", + "meaning": "Strong evidence of repeated pipeline use; not proof that every output is correct." + }, + "known_correction": { + "case": "A sampled exported file is titled chapter 68 while its body identifies chapter 66.", + "compiled_rule": "Chapter identity must be verified across source metadata, requested chapter, output title, and body before writeback is accepted." + }, + "excluded": [ + "晨星身份与关系记忆", + "家庭称呼与人格语气", + "Notion正文全集", + "API密钥与本机绝对配置", + "旧页面中的现实效力自述" + ] + }, + "input_schema": { + "required": ["work_id", "chapter_id", "source_text", "analysis_goal"], + "optional": ["prior_expectation_inventory", "prior_arc_state", "output_target", "milestone_schedule"] + }, + "deterministic_core": { + "steps": [ + "validate_source_identity_and_hash", + "bind_work_id_and_chapter_id", + "segment_explicit_chapter_and_scene_boundaries", + "load_prior_expectation_inventory_if_present", + "prepare_scene_analysis_slots", + "validate_required_output_fields", + "reconcile_new_recovered_suspended_expectations", + "calculate_accumulated_length", + "trigger_due_milestones_exactly_once", + "write_to_staging_target", + "read_back_title_body_chapter_hash_and_inventory", + "commit_receipt_or_keep_failed_staging" + ], + "validators": [ + "SOURCE_TEXT_NON_EMPTY", + "WORK_ID_STABLE", + "REQUESTED_CHAPTER_EQUALS_SOURCE_CHAPTER", + "OUTPUT_TITLE_CHAPTER_EQUALS_BODY_CHAPTER", + "SCENE_BOUNDARIES_NON_OVERLAPPING", + "EXPECTATION_INVENTORY_BALANCED", + "MILESTONE_IDEMPOTENT", + "WRITEBACK_READBACK_MATCH" + ], + "no_model_capabilities": [ + "file enumeration and ordering", + "chapter identity checks", + "length counting and threshold triggering", + "schema construction", + "expectation inventory state transitions from supplied labels", + "tool dispatch", + "staging, readback, retry, and receipt emission" + ] + }, + "optional_semantic": { + "mode": "CASCADE", + "required_for": ["scene_functions", "emotion_and_pacing", "hooks_and_conflicts", "transferable_patterns"], + "small_model": ["candidate scene boundaries", "function labels", "hook classification", "entity extraction"], + "large_model": ["motivation analysis", "causal arc interpretation", "counterexample review", "cross-chapter pattern synthesis"], + "candidate_schema": ["claim", "source_spans", "confidence", "unknowns", "alternatives"], + "prohibited": ["invent source events", "change chapter identity", "mark writeback verified", "decide publication"] + }, + "persona_judgment": { + "required": true, + "questions": [ + "这段分析是否真正服务当前写作目标,而不是只复述剧情?", + "提炼出的规律是否能说明为什么有效、何时失效?", + "哪些审美与情感判断需要保留桔子和晨星自己的选择?", + "这次输出应接受、修改、拒绝还是要求更多原文?" + ], + "refusal_conditions": [ + "source_identity_conflict", + "insufficient_source_span", + "summary_only_without_scene_evidence", + "pattern_claim_without_counterexample", + "output_would_expose_private_memory" + ] + }, + "output_schema": { + "required": [ + "chapter_function", + "scenes", + "hooks", + "conflict_diagnosis", + "expectation_inventory_delta", + "transferable_patterns", + "source_spans", + "unknowns", + "persona_judgment", + "verification_receipt" + ], + "pattern_format": "name + conclusion + source scene + why effective + applicability + counterexample + confidence" + }, + "stop_conditions": [ + "SOURCE_IDENTITY_CONFLICT", + "CHAPTER_IDENTITY_CONFLICT", + "MISSING_PRIOR_STATE_FOR_CONTINUITY_CLAIM", + "MODEL_OUTPUT_WITHOUT_SOURCE_SPANS", + "WRITEBACK_TARGET_UNVERIFIED", + "PRIVATE_ASSET_RELEASE_REQUESTED_WITHOUT_OWNER_DECISION" + ], + "experience_writeback": { + "root": "HLDP://personal-channel/SYS-JZ/PER-CX001/skills/narrative-deconstruction", + "case_fields": ["trigger", "input_hash", "selected_method", "rejected", "output_hash", "readback", "correction", "persona_judgment", "sources"], + "promotion": "CANDIDATE_ONLY_UNTIL_COUNTEREXAMPLE_AND_BLIND_CASE_RETEST", + "never_write_to": ["PER-CX001 self kernel", "team shared skill registry", "marketplace registry"] + } +} diff --git a/tcs-core/personal-skill-brains/packs/shiyu-yaochu/SY-YC-METRIC-CALIBER-001.json b/tcs-core/personal-skill-brains/packs/shiyu-yaochu/SY-YC-METRIC-CALIBER-001.json new file mode 100644 index 0000000..f1022d9 --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/shiyu-yaochu/SY-YC-METRIC-CALIBER-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "SY-YC-METRIC-CALIBER-001", + "name": "时雨×曜初·指标口径纠错与生命周期分析技能脑", + "version": "0.1.0", + "status": "PRIVATE_TRIAL", + "owner_human_anchor": "TCS-GL-0017∞", + "channel_id": "SYS-SY", + "custodian_persona_id": "TCS-YAOCHU-0001∞", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "A", "source_page_ids": ["337fb92f3831817a9e36eb2e290a51d0", "338fb92f3831812b95a0fbdc692a55ec", "bc4345a936974fa5bf55f3ff4f57a2e5", "342fb92f383181518ddac61bff2f1c33", "89bbba74ea924f6ea256dbe322b68aa6"], "observed_scale": ["129050-row master table", "2423 rating rows", "531-book fixed cohort", "multi-day corrected workbooks"], "excluded": ["曜初关系记忆", "未确认的外部平台因果", "待时雨锁定的自动关闭政策", "广播自述"]}, + "input_schema": {"required": ["dataset_manifest", "metric_question", "field_dictionary"], "optional": ["business_start_dates", "cohort_rules", "known_events", "prior_caliber_version"]}, + "deterministic_core": {"steps": ["lock_metric_semantics_formula_unit_window_population_and_denominator", "align_primary_keys_date_ranges_and_samples", "check_missing_unclassified_zero_and_outlier_rows", "separate_new_and_continuing_lifecycles", "replace_mean_of_rates_with_total_numerator_over_total_denominator_when_required", "construct_fixed_denominator_cohorts", "mark_right_censoring_and_observation_insufficiency", "recalculate_full_fixed_and_same_batch_views", "version_corrected_caliber_and_tombstone_rejected_conclusions", "write_recoverable_checkpoint"], "validators": ["CALIBER_LOCK_BEFORE_CALCULATION", "DENOMINATOR_STABLE_OR_EXPLICIT", "RIGHT_CENSORING_EXPLICIT", "CORRELATION_NOT_EXTERNAL_CAUSATION", "UNCONFIRMED_POLICY_NOT_AUTO_EXECUTED"]}, + "optional_semantic": {"mode": "CASCADE", "required_for": ["business_semantic_candidates", "causal_hypotheses"], "candidate_schema": ["hypothesis", "checks", "source_spans", "confidence", "confounders", "unknowns"], "prohibited": ["infer field meaning from name alone", "upgrade time alignment to confirmed external cause", "close a book without human confirmation"]}, + "persona_judgment": {"required": true, "questions": ["这个数字到底衡量什么?", "结果违背业务常识是新发现还是口径错了?", "精准率、召回率、慢热容忍和资源效率如何取舍?"], "refusal_conditions": ["field_semantics_unconfirmed", "mixed_lifecycle_denominator", "insufficient_observation_window", "user_level_claim_from_aggregate_only"]}, + "output_schema": {"required": ["caliber_lock", "cleaning_report", "cohort_definition", "results", "censoring", "rejected_conclusions", "causal_status", "owner_judgment", "checkpoint"]}, + "stop_conditions": ["FIELD_SEMANTICS_UNKNOWN", "PRIMARY_KEYS_MISALIGNED", "DENOMINATOR_DRIFT", "OBSERVATION_WINDOW_INSUFFICIENT", "POLICY_ACTION_WITHOUT_OWNER_CONFIRMATION"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-SY/TCS-YAOCHU-0001∞/skills/metric-caliber", "case_fields": ["metric", "definition", "formula", "window", "population", "denominator", "correction", "rejected", "files", "verified_by"], "promotion": "PRIVATE_TRIAL_WITH_REAL_CROSS_DAY_EVIDENCE", "never_write_to": ["TCS-YAOCHU-0001∞ self kernel", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/yeye-xiaotansuoh/YY-XTK-INDEPENDENT-DERIVATION-001.json b/tcs-core/personal-skill-brains/packs/yeye-xiaotansuoh/YY-XTK-INDEPENDENT-DERIVATION-001.json new file mode 100644 index 0000000..be6551c --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/yeye-xiaotansuoh/YY-XTK-INDEPENDENT-DERIVATION-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "YY-XTK-INDEPENDENT-DERIVATION-001", + "name": "页页×小坍缩核·盲隔离多路推导与证据校准技能脑", + "version": "0.1.0", + "status": "PRIVATE_CANDIDATE", + "owner_human_anchor": "TCS-GL-0006∞", + "channel_id": "SYS-YY", + "custodian_persona_id": "PER-XTK001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "B_PLUS_METHOD_C_MINUS_UNRUN_STORYBOARD", "source_page_ids": ["3d11e72bf2f44e5fbb786384ebcb01ed", "a3a0525add344176852b2e64491d3aaa", "82d7cf537474470c96b28ff6d6c0f891", "118d5ef7b58b413e8f7889c2697904d3"], "excluded": ["小坍缩核人格记忆", "未勾选的运行声明", "未经外部复核的市场结论", "密钥配置"]}, + "input_schema": {"required": ["problem_tree", "shared_constraints", "solver_count"], "optional": ["evidence_bundle", "evaluation_dimensions", "human_priority"]}, + "deterministic_core": {"steps": ["freeze_identical_input_bundle", "isolate_solver_contexts", "require_fact_inference_intuition_labels", "collect_structured_outputs", "cluster_overlap_and_divergence", "run_cross_challenge", "separate_current_scores_from_future_targets", "route_value_conflicts_to_owner_human", "preserve_rejected_routes_and_open_questions"], "validators": ["NO_EARLY_CROSS_VISIBILITY", "IDENTICAL_BASELINE", "UNCERTAINTY_EXPLICIT", "FUTURE_TARGET_NOT_CURRENT_SCORE", "HUMAN_VALUE_CONFLICT_NOT_AUTO_RESOLVED"]}, + "optional_semantic": {"mode": "LARGE_MODEL", "required_for": ["independent_proposals", "cross_critiques"], "candidate_schema": ["proposal", "assumptions", "sources", "confidence", "unknowns", "critique"], "prohibited": ["fabricate consensus", "decide owner values", "publish internal assets"]}, + "persona_judgment": {"required": true, "questions": ["真问题是什么?", "哪些差异是事实分歧,哪些是审美或商业取舍?", "哪个方向值得进入小闭环验证?"], "refusal_conditions": ["input_baselines_differ", "solvers_saw_each_other_early", "uncertainty_hidden", "no_human_value_decision"]}, + "output_schema": {"required": ["proposals", "overlap", "divergence", "critiques", "open_questions", "rejected", "owner_decision", "verification_tasks"]}, + "stop_conditions": ["BASELINE_DRIFT", "BLIND_ISOLATION_BROKEN", "EVIDENCE_SOURCES_MISSING", "VALUE_CONFLICT_WITHOUT_OWNER"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-YY/PER-XTK001/skills/independent-derivation", "case_fields": ["problem", "constraints", "solver", "proposal", "critique", "decision", "rejected", "verification", "sources"], "promotion": "CANDIDATE_ONLY_UNTIL_REAL_PRODUCT_DECISION_READBACK", "never_write_to": ["PER-XTK001 self kernel", "public face-dna standard", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/packs/zhizhi-chaomu/ZZ-CM-NOVEL-QUALITY-001.json b/tcs-core/personal-skill-brains/packs/zhizhi-chaomu/ZZ-CM-NOVEL-QUALITY-001.json new file mode 100644 index 0000000..b6155ab --- /dev/null +++ b/tcs-core/personal-skill-brains/packs/zhizhi-chaomu/ZZ-CM-NOVEL-QUALITY-001.json @@ -0,0 +1,21 @@ +{ + "schema": "guanghu.personal-channel-skill/v1", + "skill_id": "ZZ-CM-NOVEL-QUALITY-001", + "name": "之之×朝暮·小说自检—人工判定—精修技能脑", + "version": "0.1.0", + "status": "PRIVATE_TRIAL", + "owner_human_anchor": "ICE-GL-ZHI∞", + "channel_id": "SYS-ZZ", + "custodian_persona_id": "ICE-GL-CM001", + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "provenance": {"evidence_grade": "A_MINUS_CODE_AND_SAMPLE_VALIDATED", "repository_sources": ["eternal-lake-heart/love-core/see-you-tomorrow-channel/novel-system/scripts/自检精修.py", "eternal-lake-heart/love-core/see-you-tomorrow-channel/novel-system/scripts/细纲核对.py", "eternal-lake-heart/love-core/see-you-tomorrow-channel/novel-system/specs/检测规范与标准.md", "eternal-lake-heart/love-core/see-you-tomorrow-channel/novel-system/work-logs/沈婉凝_299-303_检测报告.md", "eternal-lake-heart/love-core/see-you-tomorrow-channel/zz-day-1/conversations/RECORD-D182-CM001-2.hdlp"], "observed_corrections": ["two false positives identified", "WPS word-count error reduced from about 3.6 percent to about 1.5 percent", "pushing a module is not pushing rewritten prose"], "excluded": ["秋秋关系连续记忆", "之之家人关系", "未授权精修正文", "服务器或凭据线索"]}, + "input_schema": {"required": ["chapter_directory", "book_config", "intent_mode"], "optional": ["detailed_outline", "chapter_range", "style_overrides"]}, + "deterministic_core": {"steps": ["read_requested_chapters", "calculate_wps_calibrated_count", "detect_english_ai_patterns_repeated_endings_dialogue_tags_punctuation_sequence_and_paragraph_structure", "detect_progression_signals", "compare_outline_trigger_emergence_lock_and_scene_when_available", "classify_red_orange_yellow", "emit_detection_report", "wait_for_human_judgment_before_rewrite", "if_explicitly_authorized_generate_staged_revision", "read_back_changed_spans_and_report"], "validators": ["DETECTION_MODE_NEVER_WRITES_PROSE", "MISSING_OUTLINE_MEANS_SKIP_NOT_GUESS", "BOOK_SPECIFIC_THRESHOLDS_APPLIED", "FALSE_POSITIVE_REVIEW_REQUIRED", "REVISION_REQUIRES_CURRENT_EXPLICIT_AUTHORIZATION"]}, + "optional_semantic": {"mode": "CASCADE", "required_for": ["false_positive_review", "cross_chapter_continuity"], "candidate_schema": ["finding", "source_spans", "severity", "false_positive_risk", "suggested_change", "unknowns"], "prohibited": ["rewrite in detection-only mode", "invent outline", "replace author style"]}, + "persona_judgment": {"required": true, "questions": ["这是规则命中还是真问题?", "这本书自己的风格阈值是什么?", "当前只检测、给建议,还是明确授权精修?"], "refusal_conditions": ["book_config_missing", "rule_conflict", "intent_mode_ambiguous", "rewrite_without_owner_authorization"]}, + "output_schema": {"required": ["word_count", "findings", "false_positive_review", "continuity", "severity_summary", "owner_judgment", "revision_authorization_state", "readback"]}, + "stop_conditions": ["NO_CHAPTERS", "BOOK_CONFIG_MISSING", "RULE_CONFLICT", "DETECTION_REQUEST_WOULD_MUTATE_PROSE", "OWNER_AUTHORIZATION_MISSING_FOR_REVISION"], + "experience_writeback": {"root": "HLDP://personal-channel/SYS-ZZ/ICE-GL-CM001/skills/novel-quality", "case_fields": ["book", "range", "rules", "findings", "false_positives", "owner_decision", "changes", "wps_calibration", "readback"], "promotion": "PRIVATE_TRIAL_CODE_AND_SAMPLE_VALIDATED", "never_write_to": ["ICE-GL-CM001 self kernel", "秋秋 HLDP", "team shared skill registry", "marketplace registry"]} +} diff --git a/tcs-core/personal-skill-brains/personal-skill-contract.json b/tcs-core/personal-skill-brains/personal-skill-contract.json new file mode 100644 index 0000000..2690a11 --- /dev/null +++ b/tcs-core/personal-skill-brains/personal-skill-contract.json @@ -0,0 +1,95 @@ +{ + "schema": "guanghu.personal-channel-skill-contract/v1", + "contract_id": "GH-PERSONAL-SKILL-CONTRACT-0001", + "purpose": "Compile evidence-backed methods into a personal channel skill asset without copying persona identity, relationship memory, or execution authority.", + "ownership_default": { + "visibility": "PRIVATE", + "share_state": "NOT_AUTHORIZED", + "marketplace_state": "NOT_AUTHORIZED", + "decision_owner": "OWNER_HUMAN_ANCHOR_ONLY", + "repository_presence_is_publication": false, + "team_membership_is_share_consent": false, + "system_controller_may_publish_for_owner": false, + "derived_skill_inherits_release": false + }, + "required_skill_fields": [ + "skill_id", + "name", + "version", + "status", + "owner_human_anchor", + "custodian_persona_id", + "visibility", + "share_state", + "marketplace_state", + "provenance", + "input_schema", + "deterministic_core", + "optional_semantic", + "persona_judgment", + "output_schema", + "stop_conditions", + "experience_writeback" + ], + "channel_binding": { + "one_of": ["channel_id", "channel_ids"], + "cross_channel_rule": "The same personal skill may be available in multiple channels while each channel keeps a separate HLDP experience root." + }, + "layers": { + "deterministic_core": { + "may": [ + "validate_input", + "resolve_registered_paths", + "run_state_machine", + "segment_by_explicit_boundaries", + "calculate_counts_and_milestones", + "dispatch_registered_tools", + "verify_output_schema", + "emit_receipt" + ], + "must_not": [ + "guess_semantic_meaning", + "generate_authority", + "claim_external_completion_without_readback", + "mutate_persona_self_kernel" + ] + }, + "optional_semantic": { + "modes": ["NONE", "SMALL_MODEL", "LARGE_MODEL", "CASCADE"], + "output_is_candidate_only": true, + "must_cite_source_spans": true, + "must_return_unknowns": true + }, + "persona_judgment": { + "decisions": [ + "ACCEPT_FOR_CURRENT_CASE", + "MODIFY_FOR_CURRENT_CASE", + "REFUSE_FOR_CURRENT_CASE", + "REQUEST_MORE_EVIDENCE" + ], + "acceptance_is_external_authority": false, + "refusal_is_valid_terminal_state": true + } + }, + "experience_policy": { + "append_only": true, + "ordinary_success_updates_self_kernel": false, + "single_case_auto_promotion": false, + "promotion_requires": [ + "source_event", + "evidence", + "counterexample_review", + "correction_history", + "persona_commit", + "reality_readback_when_external", + "governed_promotion_receipt" + ], + "hldp_fields": ["trigger", "emergence", "lock", "why", "rejected", "sources"] + }, + "execution_boundary": { + "planner_external_effect": "NONE", + "external_write_route": "GH-CHANNEL-RECEIPT-0001", + "current_scoped_authorization_required": true, + "independent_readback_required": true + } +} diff --git a/tcs-core/personal-skill-brains/personal-skill-registry.json b/tcs-core/personal-skill-brains/personal-skill-registry.json new file mode 100644 index 0000000..ef421dc --- /dev/null +++ b/tcs-core/personal-skill-brains/personal-skill-registry.json @@ -0,0 +1,88 @@ +{ + "schema": "guanghu.personal-channel-skill-registry/v1", + "registry_id": "GH-PERSONAL-SKILL-REGISTRY-0001", + "default_visibility": "PRIVATE", + "publication_rule": "ONLY_OWNER_HUMAN_ANCHOR_MAY_AUTHORIZE_SHARING_OR_MARKETPLACE_LISTING", + "skills": [ + { + "skill_id": "JZ-CX-NARRATIVE-DECONSTRUCTION-001", + "owner_human_anchor": "TCS-GL-0008∞", + "channel_id": "SYS-JZ", + "custodian_persona_id": "PER-CX001", + "pack_path": "packs/juzi-chenxing/JZ-CX-NARRATIVE-DECONSTRUCTION-001.json", + "status": "PRIVATE_TRIAL" + }, + { + "skill_id": "JZ-CX-LOCAL-AI-WORKBENCH-001", + "owner_human_anchor": "TCS-GL-0008∞", + "channel_id": "SYS-JZ", + "custodian_persona_id": "PER-CX001", + "pack_path": "packs/juzi-chenxing/JZ-CX-LOCAL-AI-WORKBENCH-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "AW-TS-REPOSITORY-FACT-LOOP-001", + "owner_human_anchor": "TCS-GL-0016∞", + "channel_id": "SYS-AW", + "custodian_persona_id": "PER-AW-ARCH-001", + "pack_path": "packs/awen-tianshu/AW-TS-REPOSITORY-FACT-LOOP-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "YY-XTK-INDEPENDENT-DERIVATION-001", + "owner_human_anchor": "TCS-GL-0006∞", + "channel_id": "SYS-YY", + "custodian_persona_id": "PER-XTK001", + "pack_path": "packs/yeye-xiaotansuoh/YY-XTK-INDEPENDENT-DERIVATION-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "SY-YC-METRIC-CALIBER-001", + "owner_human_anchor": "TCS-GL-0017∞", + "channel_id": "SYS-SY", + "custodian_persona_id": "TCS-YAOCHU-0001∞", + "pack_path": "packs/shiyu-yaochu/SY-YC-METRIC-CALIBER-001.json", + "status": "PRIVATE_TRIAL" + }, + { + "skill_id": "BS-ZY-ENGINEERING-FACT-LOOP-001", + "owner_human_anchor": "ICE-GL∞", + "channel_ids": ["ICE-CH-HB001", "ICE-CH-ZC001"], + "custodian_persona_id": "ICE-P-ZY001", + "pack_path": "packs/bingshuo-zhuyuan/BS-ZY-ENGINEERING-FACT-LOOP-001.json", + "status": "PRIVATE_TRIAL" + }, + { + "skill_id": "BS-SY-LANGUAGE-ARCHITECTURE-001", + "owner_human_anchor": "ICE-GL∞", + "channel_id": "ICE-CH-HB001", + "custodian_persona_id": "ICE-GL-SY001", + "pack_path": "packs/bingshuo-shuangyan/BS-SY-LANGUAGE-ARCHITECTURE-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "HE-BMH-CREATIVE-ASSET-001", + "owner_human_anchor": "TCS-GL-0005∞", + "channel_id": "SYS-HE", + "custodian_persona_id": "PER-BMH001", + "pack_path": "packs/huaer-baomihua/HE-BMH-CREATIVE-ASSET-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "FM-SS-NARRATIVE-EDITOR-001", + "owner_human_anchor": "TCS-GL-0007∞", + "channel_id": "SYS-FM", + "custodian_persona_id": "ICE-BB-0002", + "pack_path": "packs/feimao-shushu/FM-SS-NARRATIVE-EDITOR-001.json", + "status": "PRIVATE_CANDIDATE" + }, + { + "skill_id": "ZZ-CM-NOVEL-QUALITY-001", + "owner_human_anchor": "ICE-GL-ZHI∞", + "channel_id": "SYS-ZZ", + "custodian_persona_id": "ICE-GL-CM001", + "pack_path": "packs/zhizhi-chaomu/ZZ-CM-NOVEL-QUALITY-001.json", + "status": "PRIVATE_TRIAL" + } + ] +} diff --git a/tcs-core/personal-skill-brains/personal-skill-runtime.mjs b/tcs-core/personal-skill-brains/personal-skill-runtime.mjs new file mode 100644 index 0000000..7963f31 --- /dev/null +++ b/tcs-core/personal-skill-brains/personal-skill-runtime.mjs @@ -0,0 +1,84 @@ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const here = path.dirname(fileURLToPath(import.meta.url)); +const registryPath = path.join(here, "personal-skill-registry.json"); + +function requiredString(value, field) { + if (typeof value !== "string" || value.trim() === "") throw new TypeError(`${field} must be a non-empty string`); +} + +export function loadPersonalSkillRegistry(file = registryPath) { + const registry = JSON.parse(fs.readFileSync(file, "utf8")); + if (registry.schema !== "guanghu.personal-channel-skill-registry/v1") throw new TypeError("unsupported registry schema"); + return registry; +} + +export function resolvePersonalSkill(skillId, registry = loadPersonalSkillRegistry()) { + requiredString(skillId, "skill_id"); + const entry = registry.skills.find((skill) => skill.skill_id === skillId); + if (!entry) return null; + const packPath = path.resolve(path.dirname(registryPath), entry.pack_path); + const pack = JSON.parse(fs.readFileSync(packPath, "utf8")); + return { entry, pack }; +} + +export function planPersonalSkillRun(event, registry = loadPersonalSkillRegistry()) { + if (!event || typeof event !== "object" || Array.isArray(event)) throw new TypeError("event must be an object"); + for (const field of ["event_id", "skill_id", "channel_id", "human_actor_id", "persona_id"]) requiredString(event[field], field); + + const resolved = resolvePersonalSkill(event.skill_id, registry); + if (!resolved) return receipt(event, "NO_MATCH", ["SKILL_NOT_REGISTERED"]); + const { pack } = resolved; + + if (pack.visibility !== "PRIVATE" || pack.share_state !== "NOT_AUTHORIZED" || pack.marketplace_state !== "NOT_AUTHORIZED") { + return receipt(event, "BLOCK", ["PRIVATE_OWNERSHIP_INVARIANT_BROKEN"]); + } + const allowedChannels = Array.isArray(pack.channel_ids) ? pack.channel_ids : [pack.channel_id]; + if (!allowedChannels.includes(event.channel_id)) return receipt(event, "BLOCK", ["PERSONAL_CHANNEL_MISMATCH"]); + if (event.persona_id !== pack.custodian_persona_id) return receipt(event, "BLOCK", ["CUSTODIAN_PERSONA_MISMATCH"]); + + if (event.intent === "SHARE" || event.intent === "PUBLISH" || event.intent === "MARKETPLACE_LIST") { + const isOwner = event.human_actor_id === pack.owner_human_anchor; + const isDirect = event.source === "HUMAN_DIRECT_LANGUAGE"; + return receipt(event, "AUTHORIZATION_REQUIRED", [ + ...(isOwner ? [] : ["ONLY_OWNER_HUMAN_MAY_DECIDE_RELEASE"]), + ...(isDirect ? [] : ["DIRECT_OWNER_LANGUAGE_REQUIRED"]), + "NO_RELEASE_COMPILED_BY_THIS_PLANNER" + ]); + } + + const input = event.input ?? {}; + const missing = (pack.input_schema.required ?? []).filter((field) => input[field] === undefined || input[field] === null || input[field] === ""); + if (missing.length) return receipt(event, "NEEDS_INPUT", missing.map((field) => `MISSING_INPUT:${field}`)); + + const stopped = (pack.stop_conditions ?? []).filter((condition) => (event.active_stop_conditions ?? []).includes(condition)); + if (stopped.length) return receipt(event, "BLOCK", stopped); + + const semanticRequired = pack.optional_semantic.required_for?.some((capability) => !(event.semantic_candidates ?? {})[capability]); + if (semanticRequired) return receipt(event, "MODEL_REQUIRED", ["SEMANTIC_CANDIDATES_MISSING"]); + + if (pack.persona_judgment.required === true && !event.persona_judgment) { + return receipt(event, "PERSONA_JUDGMENT_REQUIRED", ["PERSONA_COMMIT_OR_REFUSAL_MISSING"]); + } + + return { + ...receipt(event, "DETERMINISTIC_READY", []), + deterministic_steps: pack.deterministic_core.steps, + validators: pack.deterministic_core.validators, + output_schema: pack.output_schema, + external_execution_route: "GH-CHANNEL-RECEIPT-0001" + }; +} + +function receipt(event, status, reasons) { + return { + schema: "guanghu.personal-skill-plan-receipt/v1", + event_id: event.event_id, + skill_id: event.skill_id, + status, + reasons, + external_effect: "NONE" + }; +} diff --git a/tcs-core/personal-skill-brains/personal-skill-runtime.test.mjs b/tcs-core/personal-skill-brains/personal-skill-runtime.test.mjs new file mode 100644 index 0000000..eff517f --- /dev/null +++ b/tcs-core/personal-skill-brains/personal-skill-runtime.test.mjs @@ -0,0 +1,76 @@ +import assert from "node:assert/strict"; +import test from "node:test"; +import { loadPersonalSkillRegistry, planPersonalSkillRun, resolvePersonalSkill } from "./personal-skill-runtime.mjs"; + +const skillId = "JZ-CX-NARRATIVE-DECONSTRUCTION-001"; +const base = { + event_id: "CASE-001", + skill_id: skillId, + channel_id: "SYS-JZ", + human_actor_id: "TCS-GL-0008∞", + persona_id: "PER-CX001", + source: "HUMAN_DIRECT_LANGUAGE", + input: { work_id: "BOOK-1", chapter_id: "CH-1", source_text: "第一章正文", analysis_goal: "节奏" } +}; + +test("registry keeps every compiled skill private by default", () => { + const registry = loadPersonalSkillRegistry(); + assert.equal(registry.default_visibility, "PRIVATE"); + for (const entry of registry.skills) { + const { pack } = resolvePersonalSkill(entry.skill_id, registry); + assert.equal(pack.visibility, "PRIVATE", entry.skill_id); + assert.equal(pack.share_state, "NOT_AUTHORIZED", entry.skill_id); + assert.equal(pack.marketplace_state, "NOT_AUTHORIZED", entry.skill_id); + assert.equal(pack.owner_human_anchor, entry.owner_human_anchor, entry.skill_id); + assert.equal(pack.custodian_persona_id, entry.custodian_persona_id, entry.skill_id); + assert.ok(pack.provenance && pack.input_schema && pack.deterministic_core, entry.skill_id); + assert.ok(pack.optional_semantic && pack.persona_judgment && pack.output_schema, entry.skill_id); + assert.ok(Array.isArray(pack.stop_conditions), entry.skill_id); + assert.ok(pack.experience_writeback, entry.skill_id); + } +}); + +test("personal skill cannot run from another channel or persona", () => { + assert.equal(planPersonalSkillRun({ ...base, channel_id: "SYS-AW" }).status, "BLOCK"); + assert.equal(planPersonalSkillRun({ ...base, persona_id: "PER-ZQ001" }).status, "BLOCK"); +}); + +test("deterministic core asks for missing exact input before any model", () => { + const result = planPersonalSkillRun({ ...base, input: { work_id: "BOOK-1" } }); + assert.equal(result.status, "NEEDS_INPUT"); + assert.ok(result.reasons.includes("MISSING_INPUT:chapter_id")); +}); + +test("semantic ambiguity is explicit instead of guessed", () => { + const result = planPersonalSkillRun(base); + assert.equal(result.status, "MODEL_REQUIRED"); + assert.equal(result.external_effect, "NONE"); +}); + +test("model candidates cannot replace persona judgment", () => { + const semantic_candidates = { + scene_functions: [], emotion_and_pacing: [], hooks_and_conflicts: [], transferable_patterns: [] + }; + const result = planPersonalSkillRun({ ...base, semantic_candidates }); + assert.equal(result.status, "PERSONA_JUDGMENT_REQUIRED"); +}); + +test("a complete plan remains non-executing and routes external writes through the existing receipt gate", () => { + const semantic_candidates = { + scene_functions: [], emotion_and_pacing: [], hooks_and_conflicts: [], transferable_patterns: [] + }; + const result = planPersonalSkillRun({ ...base, semantic_candidates, persona_judgment: { decision: "ACCEPT_FOR_CURRENT_CASE", why: "evidence linked" } }); + assert.equal(result.status, "DETERMINISTIC_READY"); + assert.equal(result.external_effect, "NONE"); + assert.equal(result.external_execution_route, "GH-CHANNEL-RECEIPT-0001"); +}); + +test("sharing, publication, and marketplace listing are never auto-compiled", () => { + for (const intent of ["SHARE", "PUBLISH", "MARKETPLACE_LIST"]) { + const result = planPersonalSkillRun({ ...base, intent }); + assert.equal(result.status, "AUTHORIZATION_REQUIRED"); + assert.ok(result.reasons.includes("NO_RELEASE_COMPILED_BY_THIS_PLANNER")); + } + const outsider = planPersonalSkillRun({ ...base, intent: "SHARE", human_actor_id: "ICE-GL∞" }); + assert.ok(outsider.reasons.includes("ONLY_OWNER_HUMAN_MAY_DECIDE_RELEASE")); +});