feat: compile private personal channel skill brains

This commit is contained in:
冰朔 2026-08-21 00:46:56 +08:00
commit 4c9f3674a0
15 changed files with 718 additions and 0 deletions

View file

@ -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.

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]
}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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"]}
}

View file

@ -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
}
}

View file

@ -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"
}
]
}

View file

@ -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"
};
}

View file

@ -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"));
});