{"knowledge_relations":[{"id":1,"source_id":"61d25281-9508-46b0-b5f5-e98340a424b2","target_id":"a18fb879-c53d-45f7-a0e6-65518ead784f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 61d25281-9508-46b0-b5f5-e98340a424b2 -\u003e a18fb879-c53d-45f7-a0e6-65518ead784f","gmt_create":"2026-05-16T13:21:38.7486692+08:00","gmt_modified":"2026-05-16T13:21:38.7486692+08:00"},{"id":2,"source_id":"61d25281-9508-46b0-b5f5-e98340a424b2","target_id":"1b4157ca-4c87-461f-bb56-051340bbca1e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 61d25281-9508-46b0-b5f5-e98340a424b2 -\u003e 1b4157ca-4c87-461f-bb56-051340bbca1e","gmt_create":"2026-05-16T13:21:38.749676+08:00","gmt_modified":"2026-05-16T13:21:38.749676+08:00"},{"id":3,"source_id":"61d25281-9508-46b0-b5f5-e98340a424b2","target_id":"87689515-cccf-4c24-9817-beb105a160ad","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 61d25281-9508-46b0-b5f5-e98340a424b2 -\u003e 87689515-cccf-4c24-9817-beb105a160ad","gmt_create":"2026-05-16T13:21:38.7501821+08:00","gmt_modified":"2026-05-16T13:21:38.7501821+08:00"},{"id":4,"source_id":"61d25281-9508-46b0-b5f5-e98340a424b2","target_id":"d1dc2fd0-8acc-483b-8b48-a631b00b3db7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 61d25281-9508-46b0-b5f5-e98340a424b2 -\u003e d1dc2fd0-8acc-483b-8b48-a631b00b3db7","gmt_create":"2026-05-16T13:21:38.7506876+08:00","gmt_modified":"2026-05-16T13:21:38.7506876+08:00"},{"id":5,"source_id":"61d25281-9508-46b0-b5f5-e98340a424b2","target_id":"019782c6-56d6-47da-8dc9-90dd3c5cc78b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 61d25281-9508-46b0-b5f5-e98340a424b2 -\u003e 019782c6-56d6-47da-8dc9-90dd3c5cc78b","gmt_create":"2026-05-16T13:21:38.7506876+08:00","gmt_modified":"2026-05-16T13:21:38.7506876+08:00"},{"id":6,"source_id":"d33fe06c-8396-47dc-90b3-e6799315126d","target_id":"4cea0b6d-9c76-4625-9ecf-a7e8ab8514a8","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d33fe06c-8396-47dc-90b3-e6799315126d -\u003e 4cea0b6d-9c76-4625-9ecf-a7e8ab8514a8","gmt_create":"2026-05-16T13:21:38.7506876+08:00","gmt_modified":"2026-05-16T13:21:38.7506876+08:00"},{"id":7,"source_id":"d33fe06c-8396-47dc-90b3-e6799315126d","target_id":"848b8177-5da0-4c80-b1b2-0dfadad67e2e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d33fe06c-8396-47dc-90b3-e6799315126d -\u003e 848b8177-5da0-4c80-b1b2-0dfadad67e2e","gmt_create":"2026-05-16T13:21:38.7517037+08:00","gmt_modified":"2026-05-16T13:21:38.7517037+08:00"},{"id":8,"source_id":"d33fe06c-8396-47dc-90b3-e6799315126d","target_id":"53d99faa-d1e3-42be-8474-c977db3da42c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d33fe06c-8396-47dc-90b3-e6799315126d -\u003e 53d99faa-d1e3-42be-8474-c977db3da42c","gmt_create":"2026-05-16T13:21:38.7517037+08:00","gmt_modified":"2026-05-16T13:21:38.7517037+08:00"},{"id":9,"source_id":"d33fe06c-8396-47dc-90b3-e6799315126d","target_id":"f908d033-1e13-451d-be55-93fb9a9f181c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d33fe06c-8396-47dc-90b3-e6799315126d -\u003e f908d033-1e13-451d-be55-93fb9a9f181c","gmt_create":"2026-05-16T13:21:38.752359+08:00","gmt_modified":"2026-05-16T13:21:38.752359+08:00"},{"id":10,"source_id":"d33fe06c-8396-47dc-90b3-e6799315126d","target_id":"f11438e7-f21b-467b-9011-af1c2e3881aa","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d33fe06c-8396-47dc-90b3-e6799315126d -\u003e f11438e7-f21b-467b-9011-af1c2e3881aa","gmt_create":"2026-05-16T13:21:38.752359+08:00","gmt_modified":"2026-05-16T13:21:38.752359+08:00"},{"id":11,"source_id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","target_id":"8a8dc12e-8f1a-43db-b330-96dd3f8c56b3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d4d5d7d1-e282-4f68-ae3f-fb6945f659eb -\u003e 8a8dc12e-8f1a-43db-b330-96dd3f8c56b3","gmt_create":"2026-05-16T13:21:38.752359+08:00","gmt_modified":"2026-05-16T13:21:38.752359+08:00"},{"id":12,"source_id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","target_id":"2c75e3e7-eeb6-4356-9355-00277b33c568","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d4d5d7d1-e282-4f68-ae3f-fb6945f659eb -\u003e 2c75e3e7-eeb6-4356-9355-00277b33c568","gmt_create":"2026-05-16T13:21:38.752359+08:00","gmt_modified":"2026-05-16T13:21:38.752359+08:00"},{"id":13,"source_id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","target_id":"bd5891a7-c453-4ada-b8ea-30fb4aaf7a1a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d4d5d7d1-e282-4f68-ae3f-fb6945f659eb -\u003e bd5891a7-c453-4ada-b8ea-30fb4aaf7a1a","gmt_create":"2026-05-16T13:21:38.753367+08:00","gmt_modified":"2026-05-16T13:21:38.753367+08:00"},{"id":14,"source_id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","target_id":"f7e1d371-a005-48ff-9493-574ea74c9bc7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d4d5d7d1-e282-4f68-ae3f-fb6945f659eb -\u003e f7e1d371-a005-48ff-9493-574ea74c9bc7","gmt_create":"2026-05-16T13:21:38.7538719+08:00","gmt_modified":"2026-05-16T13:21:38.7538719+08:00"},{"id":15,"source_id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","target_id":"b5178261-7194-4e7b-8332-d9bffdd37e23","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: d4d5d7d1-e282-4f68-ae3f-fb6945f659eb -\u003e b5178261-7194-4e7b-8332-d9bffdd37e23","gmt_create":"2026-05-16T13:21:38.7544217+08:00","gmt_modified":"2026-05-16T13:21:38.7544217+08:00"},{"id":16,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"7de21301-1800-46c4-9e90-252230ab0880","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e 7de21301-1800-46c4-9e90-252230ab0880","gmt_create":"2026-05-16T13:21:38.7544217+08:00","gmt_modified":"2026-05-16T13:21:38.7544217+08:00"},{"id":17,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"656adbc4-c074-411d-8c5e-ba6611bf599d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e 656adbc4-c074-411d-8c5e-ba6611bf599d","gmt_create":"2026-05-16T13:21:38.7550932+08:00","gmt_modified":"2026-05-16T13:21:38.7550932+08:00"},{"id":18,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"d4fd3a89-ae04-4f08-95e7-4ed903b28c49","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e d4fd3a89-ae04-4f08-95e7-4ed903b28c49","gmt_create":"2026-05-16T13:21:38.7550932+08:00","gmt_modified":"2026-05-16T13:21:38.7550932+08:00"},{"id":19,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"f51cc9c8-b978-40a2-bb68-b06fd46df9aa","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e f51cc9c8-b978-40a2-bb68-b06fd46df9aa","gmt_create":"2026-05-16T13:21:38.7556094+08:00","gmt_modified":"2026-05-16T13:21:38.7556094+08:00"},{"id":20,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"53ee4d63-72a8-4732-bc7d-00eda6d8d780","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e 53ee4d63-72a8-4732-bc7d-00eda6d8d780","gmt_create":"2026-05-16T13:21:38.7561393+08:00","gmt_modified":"2026-05-16T13:21:38.7561393+08:00"},{"id":21,"source_id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","target_id":"d95a5269-84e0-4428-b367-dcbe5fcdf516","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0 -\u003e d95a5269-84e0-4428-b367-dcbe5fcdf516","gmt_create":"2026-05-16T13:21:38.7561393+08:00","gmt_modified":"2026-05-16T13:21:38.7561393+08:00"},{"id":22,"source_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","target_id":"97215c0a-a8fa-4946-8d6f-ffdc1d5f09d2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 7ff7c770-eec8-49dd-afda-7dc0b0e25487 -\u003e 97215c0a-a8fa-4946-8d6f-ffdc1d5f09d2","gmt_create":"2026-05-16T13:21:38.75765+08:00","gmt_modified":"2026-05-16T13:21:38.75765+08:00"},{"id":23,"source_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","target_id":"8bac35a5-6784-4e7b-b543-e1cbbf86f0d0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 7ff7c770-eec8-49dd-afda-7dc0b0e25487 -\u003e 8bac35a5-6784-4e7b-b543-e1cbbf86f0d0","gmt_create":"2026-05-16T13:21:38.7581964+08:00","gmt_modified":"2026-05-16T13:21:38.7581964+08:00"},{"id":24,"source_id":"08905c93-7af2-46ac-ba40-88f5ec13480f","target_id":"0128328c-d6c1-447d-aeaf-99be20c6fbe1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08905c93-7af2-46ac-ba40-88f5ec13480f -\u003e 0128328c-d6c1-447d-aeaf-99be20c6fbe1","gmt_create":"2026-05-16T13:27:06.4031733+08:00","gmt_modified":"2026-05-16T13:27:06.4031733+08:00"},{"id":25,"source_id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","target_id":"411dc0f6-de65-4195-be76-dc48174538e0","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: aa9487e8-dfb6-443c-8c01-e38b8a827588 -\u003e 411dc0f6-de65-4195-be76-dc48174538e0","gmt_create":"2026-05-16T13:27:06.4037059+08:00","gmt_modified":"2026-05-16T13:27:06.4037059+08:00"},{"id":26,"source_id":"08905c93-7af2-46ac-ba40-88f5ec13480f","target_id":"e99c777e-850d-4ada-88c6-72e6585c5be2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08905c93-7af2-46ac-ba40-88f5ec13480f -\u003e e99c777e-850d-4ada-88c6-72e6585c5be2","gmt_create":"2026-05-16T13:27:06.4042385+08:00","gmt_modified":"2026-05-16T13:27:06.4042385+08:00"},{"id":27,"source_id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","target_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: aa9487e8-dfb6-443c-8c01-e38b8a827588 -\u003e 7ff7c770-eec8-49dd-afda-7dc0b0e25487","gmt_create":"2026-05-16T13:27:06.4047648+08:00","gmt_modified":"2026-05-16T13:27:06.4047648+08:00"},{"id":28,"source_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","target_id":"dc16bcd8-f8ab-45ac-abb6-e2504c0649e7","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 7ff7c770-eec8-49dd-afda-7dc0b0e25487 -\u003e dc16bcd8-f8ab-45ac-abb6-e2504c0649e7","gmt_create":"2026-05-16T13:27:06.4052781+08:00","gmt_modified":"2026-05-16T13:27:06.4052781+08:00"},{"id":29,"source_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","target_id":"749e6888-72ea-4280-929d-fe0950645f77","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 7ff7c770-eec8-49dd-afda-7dc0b0e25487 -\u003e 749e6888-72ea-4280-929d-fe0950645f77","gmt_create":"2026-05-16T13:27:06.4058035+08:00","gmt_modified":"2026-05-16T13:27:06.4058035+08:00"},{"id":30,"source_id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","target_id":"d948e21d-0204-40e8-8c99-b48ea367aa57","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 7ff7c770-eec8-49dd-afda-7dc0b0e25487 -\u003e d948e21d-0204-40e8-8c99-b48ea367aa57","gmt_create":"2026-05-16T13:27:06.4058035+08:00","gmt_modified":"2026-05-16T13:27:06.4058035+08:00"},{"id":31,"source_id":"08905c93-7af2-46ac-ba40-88f5ec13480f","target_id":"96a1ec75-8efd-4372-9986-cc7310e56c8b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08905c93-7af2-46ac-ba40-88f5ec13480f -\u003e 96a1ec75-8efd-4372-9986-cc7310e56c8b","gmt_create":"2026-05-16T13:27:06.4058035+08:00","gmt_modified":"2026-05-16T13:27:06.4058035+08:00"},{"id":32,"source_id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","target_id":"df958a5a-4c42-4aa4-99df-36618e31f4de","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: aa9487e8-dfb6-443c-8c01-e38b8a827588 -\u003e df958a5a-4c42-4aa4-99df-36618e31f4de","gmt_create":"2026-05-16T13:27:06.406333+08:00","gmt_modified":"2026-05-16T13:27:06.406333+08:00"},{"id":33,"source_id":"08905c93-7af2-46ac-ba40-88f5ec13480f","target_id":"c6634f0f-1c55-410d-89b9-815a3c153c46","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 08905c93-7af2-46ac-ba40-88f5ec13480f -\u003e c6634f0f-1c55-410d-89b9-815a3c153c46","gmt_create":"2026-05-16T13:27:06.406333+08:00","gmt_modified":"2026-05-16T13:27:06.406333+08:00"},{"id":34,"source_id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","target_id":"bba374a4-6375-4f0a-a3bd-415caec58122","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: aa9487e8-dfb6-443c-8c01-e38b8a827588 -\u003e bba374a4-6375-4f0a-a3bd-415caec58122","gmt_create":"2026-05-16T13:27:06.40685+08:00","gmt_modified":"2026-05-16T13:27:06.40685+08:00"},{"id":35,"source_id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","target_id":"ca90a370-9cb9-4fa2-8568-3a333f897a33","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: aa9487e8-dfb6-443c-8c01-e38b8a827588 -\u003e ca90a370-9cb9-4fa2-8568-3a333f897a33","gmt_create":"2026-05-16T13:27:06.4073628+08:00","gmt_modified":"2026-05-16T13:27:06.4073628+08:00"}],"wiki_catalogs":[{"id":"a9dcd690-f864-48f3-8b00-ab83d8beef13","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"项目概述","description":"project-overview","prompt":"为 Video Socket Server 项目创建全面的概述内容。解释项目的核心目标、技术架构和在实时视频传输领域的定位。详细介绍基于 WebRTC 的双向视频通信能力、多模式通信支持(公共模式和私有模式)、以及双信令系统(WebSocket 和 HTTP 轮询)。说明项目的主要应用场景,如 Unity Render Streaming、远程视频监控、在线教育等。提供技术栈概览,包括 Node.js/TypeScript 后端、原生 JavaScript 前端、Express.js 框架、WebSocket 协议和 WebRTC API。包含项目结构图和核心组件关系图,帮助开发者快速理解整体架构。","progress_status":"completed","dependent_files":"package.json,README.md,src/index.ts,src/server.ts","gmt_create":"2026-05-16T12:31:02.6502977+08:00","gmt_modified":"2026-05-16T12:34:31.6762069+08:00","raw_data":"WikiEncrypted:0MI1/XkBoMl0lTbK6t0Cn/+8FdvqrJ62ianMLvZj02elJtBUgH0Ns0veIx1WPtM9wwkxI+/XAqHLxJLlHB8wV3TbVTwChn/8g3/Jvqy5Vx1Gr0/hd85jpY9OByhDcSXrKbJXim6ejLIeZhLyxIKVgp0GibD0iD+Rnra0JgHnJ8ezTJeB0Z6Xn7SbWjUbB3urjf09pCgFnEx51ZrW8E1dG7TSN+t7PF3ZOywFWfF1qQwhwwwc5QczKRpBCqavRoq99W2FnrKmXlOsnNk6cin0qvuSYdSs9onLBfyRQhVg1mvaLNAD7zEGOnfUo1Q351tDFxVKDJJ5mdqZvEgI1QWmeh1eKaPBIVkvmm3AjfPmC6f+gXtCWwYkzHIpw/1nvs4dsGZMciQJuBfEJ5psGx4AQbSSde7hz3qcnXDBOSpmUwNYxVcB7VQBOlXPpLkp8PJJHU4dZP0aqdS6GfYG5nJb3OKJmTx95rOz5mfAvBhRba3abeTtqZmbFyPCkVhnhHEZSKrob0Q1lTn6DMj2TizUmO26QlDOMzsrmOEnLz9oyHwS51ZoO54tZ1JqbbG34IViwvIiM0us83+uwDt9YtCGc+R7HIZFreqCUCqkjk6FqgtqTYr3fEg3pWxgRWyPDP97Q8L3NGxhJ8+kyraIhvmGo0TQR8viqpG7BqV6vkBvUuMF24ZyovAQynNol4GGrd924IcqULo8JA74Sta7Ny4kY8kmwDVqZs7ARSRerbp6GCB2dqdVK/vpwsBAixRLCNE0wk1rm1Ndtm0uZkc+m8BlCwkliUn5WPknHOgP4J7ZFRwMw9wyTDtlyS9hKAe5P4G1S+EXiTxdGXOcxD2emnRHsE/26F6Cha8BvIm7aBP7VfsZm2aYAP72mHTiJ217OhdlLJSqIw26kPXAlndiG3mEsqjjESV/SK6SOfyoZLp8bpI5L+AGEhdw8VOoeiTjLuyZ+g3a5MoF2aCLAyFlor0rAzUbM/k3JgQOPkb1HXb9VsodJnmNoMNu/yAzVt/yCAZ77Fcj8PKXW4H/4MqQygR37AIASkt0FmFZho3k78DHPKL5cz/ixA2wd+Ssc1Rc7+mZsDHGjbr+luAeGYVZoOISFiKXrJYKk6vdVTSxZXlG26T1scoWHewhbggy2wYJ+bbL8PYKWTXcq7J9iH9aWnkn7Vh8T4UHxwmgqoFKw4oUTmn5JM6YvLtOBHpyIIiRAGPQPztrp+l+F0xPc0zxmVW2luuHXA9q5ottG8ePG73vJwrkE92+pZb5ofd7j3B9I7QY"},{"id":"5d349e63-8143-47c8-a4d8-9abf775836a0","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"服务器入口点","description":"server-entrypoint","prompt":"为服务器入口点模块创建详细的技术文档。深入解释 RenderStreaming 类的设计和实现,包括命令行参数解析机制、配置选项处理和服务器启动流程。详细说明 Options 类的配置管理,包括端口设置、HTTPS 配置、信令协议选择和通信模式配置。解释程序启动时的参数验证和默认值处理逻辑。提供各种启动配置的示例和最佳实践。包含错误处理和配置验证的实现细节。","parent_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","progress_status":"completed","dependent_files":"src/index.ts,src/class/options.ts","gmt_create":"2026-05-16T12:31:19.7747432+08:00","gmt_modified":"2026-05-16T12:46:18.1852693+08:00","raw_data":"WikiEncrypted:DfAL4INOq29Pd0V8no8kjO5e3C7f6O7e6ABrkMfBm460flADxdC2Ym6wFmxT4T7LI0eujv05jLEFAPRbxUqcmR5QHC5Sf/QqC2cKrGi19/YFpC/HTMzXmrQWh/cCZ7i6+5OvI2IrYEli5z9+RREHJL3P4qmPbhRTAI+p1OcbiRqD5k5tbDfcSwChFQgf94DUdIWVi1NBB4DmL/+kZ8OQqAZ+5llsF1gj3r6MQP6Rx8R1QtLrnfbaBlBCaisBLxpdm5HZBH1QnUdtf8mb3XhJ/qjOqP7/rBIBCXuD/LY0jYdKC3yRPDL4xssAA8MZk3HXgWKoOqNzXpCYTufxWQ0kBLcVK2vB9a44jzf+FViTfjp0r+++9qJh22sMoAjzQOtDWoPTxQ/eeBOToWlqjY/eVRvWpLHQTWambuEeejlYA1TXM90l9Ni2fJkGKCB0NiWoKRJG3KGox9kwblJVR0PuXLLgo61bmKWSg5IxgXLr13G/4PPtpRYTbimU5e9SNLDkvPu4GqyNuTZEqnSoasDP9VkqFMTbpmcSnrRklsyL5Hg+28z9Tjq/jWeP8UqyMVsmKB+t+S/u74fMHFphIOzvggpdQi9cHdWQNhfKbhxpgrif13Kg6jUGQcDMY2Kt0CupSbKb3wTY0vdqztd4LTnCoQcaWkgXDuyXm5y0k3cXnRenACHa7uk58EU9YKi/r7CPUOBINOcVJdN2XCt8b8N8qWkBoF8w9Yg/iua7aa4oYrv2nGi/hNm8hFrXt2lpQP+zSANW18dW8sufiKmet8CLW7y+nn1rBQvWAPemNsO4TKK0j9PoVjMjva+LZFBK7P/AIZNmbWpjcL0LO3rqXuzsnxdLDmWQlSU0INldEPz3WFKwpeoj7HtwK83RENNr+a/6S/UcalcapsQMOebWlbfp8RRRzjJtbwBKSr9M1kmxY82omxMd+j6FAGqTAMk+toN6b4NFyEcteA5bGs5/duu3Ev8XQPTNo5Ue1pKxRGICSNR81Pl0y8c0/ct8NlXQ9+0U","layer_level":1},{"id":"a4cc8c7f-7b51-446f-a7e8-f4c4cbca61af","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"双向通信示例","description":"bidirectional-sample","prompt":"为双向通信示例创建详细的使用和开发文档。深入解释该示例如何实现视频和音频的双向传输,包括 WebRTC 连接建立过程、媒体流发送和接收机制。详细说明 main.js 中的核心逻辑,包括信令客户端的使用、PeerConnection 的配置和管理。解释 sendvideo.js 中的视频发送功能实现。提供完整的使用步骤,包括如何启动服务器、打开示例页面、建立连接和进行双向通信。包含常见的配置选项和故障排除指南。提供实际的代码示例和最佳实践建议。","parent_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","progress_status":"completed","dependent_files":"client/public/bidirectional/index.html,client/public/bidirectional/js/main.js,client/public/bidirectional/js/sendvideo.js,client/public/bidirectional/css/style.css","gmt_create":"2026-05-16T12:31:24.8939968+08:00","gmt_modified":"2026-05-16T12:46:36.1698925+08:00","raw_data":"WikiEncrypted:MqItpDuY9YqDnR5qOIZ6DkGvxP9REZHWqcuESnzDgIGmuhJrV5lXD/ijJYkTN7DUjOGgO9f+IFEPeyd4eIdhhlFZ8RREv+UA/XZPUhbPoQrmcPN3hVw7LWbxLxXr2kYXqOP4RPtOYlZet1aj70glPncJRSFUUCUfa2FuoiuquW/yRwy61uog4iw0/NnZApGIciQzEMYuVptMljNzLKq9XnbaSBAM2uBVAFRYZCVUSXG18AYUuvDorjh8X0/+wYUn9r53QbGXVYn2n1z2Xs251haWfP1Xe1F8+EebEIHLtcYi7XbS+80uooaAFscillNKSWPfHWUIDu+tAewwSbHE3MSPpvZ+EVessPNlJfHKpEUhRBd8kq04VCFUrfa1cRXwhzkS+nzfhvH1TmJ2mg7obQOxwyCoYT+WyJy4/DRVBDFN7OVmM+f9EK4h3dLySB5sHXZXFaN6cakAGNzTMc2ht7wLORc4EK3wSJReS4elONbZjoVw+SphiEDLI8ig1umlvuSgo+Ekl0agNx9SvIyi3TPXnmH/WAqfKBoGhD05MKK+Y8Lbi45L+QyWqsQODnDEPFudIfm/u52PzUo8rNfPxYEWsAvsd1P0/SAsApUUUC2gbFkGrJlMMxNgKgZC1CebdoU61uHvk8TascUXvyS3uBdvfKZI7iGjf4++nVHYb/Wkr4e4s4XH+OQAgfqoFyof0Q44IDxyjhzWbkE/N0CcC6DnA5U+LDs1NfySiapEtmY6mO4dp2hyeFDXoIwZ90jya5u2OeTfYW9/PkjVDBsOLS6rMsqN4SrCP8ZoxqirkT8YhFIOF7GDddHPlKPgG5Jd7qXw6E8/lwCebYYFoDxIzWkLuYrVZNrcVMVZpCgrGAbXCHiuKd5ywsVNht8V6WrxyxKRrLh8RO3LNo9BdnyDJsJzTi1B7NfHlceb7VBtdMViCaTAmZeeALx3TvmE1pE2As3VCsJb5SFanLFHy2m6OakHAF2GzgBEGsq6thJsxjnah3oUnxzSFGPIuEEb2sNfHENk+wNdi/ULI9iBhELCFqqznb/MqOIMbYwbrDVXQZ/3a8pKfeSAEFjg3MphNfoVESa4fmbZ0FhLx3ltTOivQtoIOwE4n+6KLvkDPtcEmS8uxoIP8Hm1wLzkEjBD6QM4E+mCbKJ+oUQHjytjUYrzWg382g5TrO7d/fPAVscppr6F8J/Jd1snMAZicuGeZhnWOZzFDFaYmTeNvqCn9NaF2M71e0sb4tF5y1DdS3/66IQQ9m+AaKakAKu09H3KaJs528HSxnAag/4c7mD2PuJAOmp1QRUADzlJHTMui9HixHmJUnsZPKshV7rMY9YzOilUTrfPl+eATf9Xt042LzuTDr9zVWhrI2KyGoeKHxkuPv1dlGzJQpszVE06C+2mIVvS","layer_level":1},{"id":"0b227205-af0d-4e95-a18b-9d354af01ac1","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"WebSocket 信令处理器","description":"websocket-handler","prompt":"创建 WebSocket 信令处理器的详细技术文档。深入解释 WebSocket 连接管理机制,包括连接添加、移除和状态维护。详细说明连接组管理算法,包括主机(host)和参与者(participants)的角色分配和通信规则。文档化 Offer/Answer 协商流程在 WebSocket 中的实现,包括 SDP 交换和媒体协商过程。解释 ICE 候选者在 WebSocket 中的传输机制和处理逻辑。提供私有模式和公共模式的实现差异分析。包含心跳检测机制、超时处理和连接恢复策略。提供实际的 WebSocket 信令流程示例和调试技巧。","parent_id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","progress_status":"completed","dependent_files":"src/class/websockethandler.ts,src/websocket.ts","gmt_create":"2026-05-16T12:31:42.3654238+08:00","gmt_modified":"2026-05-16T12:47:17.6601811+08:00","raw_data":"WikiEncrypted:846PjIgkeMHsDVBj61Op9/eL6AVfXeMwv77NzrbEoeayqIvGFC0n1i7ba/GxMj6f1wQ5VX5LP9wdfFwhmZINC8Jss17yYqbe6DAE36Pk1SkiltfbOvcj8Dokbdda3JG+3Af0ogq0+pZZe65OTDH0n6ebgsNLT2GIlFB0tsYlNKe8A8ahF1E7XDRf/FhTQJUqQrJUg8mPGJnp1X/HhGvKCuafpFFFTqzTxsCfH/s+53sPYirLxzZ68ArNUIxKBjzEDCTF4jYAR77JWUSRC7weJwjw5gH3WJZkJkqWA9sstDP/EHymI2U3E2FghhefrBoGjIR5q+3EU56NlhQXzYMUVPkgsKM9H5zTQPh/1ru6F11jqdhLT43ZK+KYf5uVGVjaI5cCidRc04gbW4ZI+VnU+JMYw5hPrQRDcCGFT+XMJ+Uu7tr4WlRpZyqkAEO1sWIT7Nqd0tQRT+G//N2U+WiYGiS6AwsdgZkHDG6KYDLcnHg+P1nbxZ/9AKvdfu2yyMERExXBYeQCt7ny7a0AqwzUKlkAL3zWCV6EJOoAk3b03BnhdsoYfmXBjPziDDm319QtKrj7G5mRF+a4sOxQkdh16uPNs4ANe/bVcqwqeAdWyijU9sWA/lv6z4L9/ECj8IdmiLxzolNkpstPCGRsmwfoxTFEioKv0fBkDOcXWBTENU1Yii7mQL4mxvBblK4r4N6elgrA+J3y5dsbCrbmcsFY3UAQnu9oHivaWqTc4KXQuCX6qD66kepRsfRs8XA3UF4G1vCzJgtJfs5BFMxlfvKCJrYtU4bvUU7dw/Umf3dSueWYOU15N/BCGOP+MkYqFgGHFZg5v5L3yBnB+IlWa5zNIuWQm/RILtZwMUTaFqW+eGLBSU4XOzZBmTlx/FWeAgdMb14OpnD917KalUa8KlpdicHyFoT3u/3YYvRIRJGBSBZKdkEhIJ5UQYUrpoXP7hCJV9MbLkyZLXivAcHRmyoPECRMY7ZhBZXbdlgx+mo0oJ8M8bq1yWPKshXP2aOcZTRHEgpHzDHRWtZOyVWFKMO9CV7YqMNP+Q6jRKyH/dOvkl6Ci20y63EkqFxEgT0zIdX7hGxFPOoWRrFhD3mBjwrBmLGlpjU83FaX5ginPSVUwWg+wvafJGcewzkUuzKB3inoIjKulA+lyPiLvgjiq3QONLOQA0LzfZ8RDIfXtzQnAPlkZPEWxWJyQBEfJ2TNfjR/Z3DNbBcVh5rTssqOAzg03nG5yfZbAle+nZIjALdpsTs/uiov7iKR8GmaEv6UFN1qh0mE1e1LIhyXnlu4gK8CdkgFO0KQNOru4u4Aomh3vt9b9PK2tImMNRViE808hEVq","layer_level":1},{"id":"5ef4dc8a-3a84-4e7e-a5f7-40db73889380","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"环境配置","description":"environment-setup","prompt":"创建详细的环境配置指南。说明 Node.js 版本要求(基于 package.json 中的依赖版本),操作系统兼容性(Windows、Linux、macOS)。详细列出系统资源要求,包括内存、CPU 和磁盘空间需求。解释开发环境和生产环境的区别,包括依赖安装、编译配置和运行参数。提供环境变量配置说明,包括端口设置、SSL 证书路径、信令模式等参数配置。包含常见环境问题的排查和解决方案。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","progress_status":"completed","dependent_files":"package.json,tsconfig.json,.eslintrc.cjs","gmt_create":"2026-05-16T12:31:50.8657899+08:00","gmt_modified":"2026-05-16T12:47:18.3467186+08:00","raw_data":"WikiEncrypted:mJFb0eo+82adP8NAeq7d4LBCxC5w9J+0Fo3COLpkFPsv5pzQPfNIC9hSOAQ0FGEcW3X7M53PFGVNz7i8Y9H6LMPPTwQ9TzwBmfKdK+h2mzYYDu8UFWbTL6idISn6jahNrhzOjieZj8zjwTU34bGk+4e5P4LsTqvvisBYZgyJaoTJ/oejmnngZ69/y0BdyPCHMjeL/+DkIszNK+9ZXRINE8uPZQ+0LoZFQfHQ2gSQkhLw0SQaCwUGBtfy9dlPmKRjV+AiExpH6NICtchTN/qFSnDyRkLOkR9YJZdmplJdnXikIxdXdq1dvHyY4na7aqkKp705u+tv8pHPAlB1zAUapCkT0WoZ0oDzqHIrMxYTpsUC19nG/WnEFUVU/+3anRlt/Sz5uCltEPxWViQDvYsdOowt8XNDE2zFzVczBVawFPrQEnjHnPgzxsa39FP2+/iCxXtFIAIfapKt4w9kq1oYZrPrtqCaglWDecu3YwOlUKNAaHHxfonMdcIsqQMY42KYLDPxVHr+KeLQdCqkXkn4GX01B0FogNTCBX/t5ws+fcpdg7JUDDKegOZ2NxsZg3p5bjzdCswCktd+WABy9IDOtmro934oNNW0TWKT+g6FSmOwxhX6JktrcX0xTKgmQY84/YOmXYRsqaXLw3YOpWOqCDHopDhzrz6edqxyGNFPQQ/gDrx17FNNuaVCI0gV0BVZYU1WOANqNnZDwPq58FN3NkaDQEb1phXNd6/oHvCo80AJT2mwixcTUyYo1r2mqpLcYqaLTmnz1m2qM1sYkjIdx30Jg20Qx98y2XgDzuPUnCY1xEMSg+vDtm2XMGkJjbdmDXEFIpgyOx7dpVkDyasELpux+OTyTD2I8Ki12ZsMnbHsu1vG5AO8AkfbYiNgcz4xRk1jv0vFxpVrtayn1NKaZBgttAkTPx1skx5EZmUymYcnKJN4xMd1DCSGTLT/z6JEsiaZJ3xaIrMn1nd8S/3BaN0Mk4FKmOZAbLiFOpUb4yWM4OVM5T/+fDIrQ9vsPe14vYw00LbtLOfvgLGobupD9g==","layer_level":1},{"id":"20805460-563b-4af7-8279-1cf55b0c7a90","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"PeerConnection 管理","description":"peer-connection-management","prompt":"创建 PeerConnection 管理模块的详细技术文档。深入解释 RTCPeerConnection 的创建和配置,包括连接标识符、极性判断和配置参数的作用。详细说明 SDP 协商过程的实现,包括 Offer/Answer 模型的工作原理、协商状态管理和竞态条件处理。解释 ICE 候选者的收集和处理机制,包括候选者事件的触发和 ICE 连接状态监控。文档化连接生命周期管理,包括连接建立、维护和关闭的完整流程。提供具体的代码示例展示如何处理各种连接状态变化和错误情况。","parent_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","progress_status":"completed","dependent_files":"client/src/peer.js","gmt_create":"2026-05-16T12:31:51.4451482+08:00","gmt_modified":"2026-05-16T12:48:19.7440884+08:00","raw_data":"WikiEncrypted:tpW79Xttt2IDuJ9djVnufLeevi9TAw+DR17O1dw2HLYpQWb4jV2i6PGWCqnyfXoZy8uxtHbrogAoikyPT42HyP7DuEJtyBJmBkXF0ftVDm9VKZFv5ayMCi/YoaRuMMBas8rB30HXzTl/MWv1TcW9rHkdKzCWp43LPr2JqgD2hDx33x8rfpMAWGZ6oVdSojDRBtYnlULp1nuemklc3JXfZInO7uIzloz+1QSRYX55AaK+zTnBzH6utw1oIta1xEP06GRPBOGRVpmYvNdmQJkoZ/zQabyImMyg44vrPdlTr2kG5mYWcAZVrL+CqCvP6oO6Bc07XojGcd/xopbs542wQWw+NP+wOyeN2EJG5eRKh8FCs45X/0C7o6+pB3i3zAmcdAcDLhgho4W3p2/w9QryfPYQmIlAzbNqjJ5sPRi48b2m3ULpTdvyXVg8jpPVY8jNI2YTHqBre0yujsdsgO2T5FwqJ1Vlx0ZFHRZvRHoap1un+1tn5NWw3suPzY2UBsUA64rvxDykn3VWeZ0S/R7r2SkeiGsrFPuU/B2vaggauZW9UQt25TswUraUUbyYoFEcy/UlGnDeqLcOdt3PvszchekH2AFsJ579JNtP1ld+ojeOmrNnVRqNFrEJI5S4trQ+MHaanu26AihW13Ndz9nX6+utQUapsv07lkqxzaO9ZRgKN1Q6IESoqguCXVS5h3XYhlK0aTW8LtpIUpjv6KiBVZKicebRzydCGgfWj+sHii/wdu1PbJNqh1DPcTt2rZ6PH1TocC4Q3jmCGlB9KyeFhZg9MeIKsMgg7BobGWTzRE3oQgGov7zseVrSX5AT5CdM005cQGbEEacKFs3mP1r6PLBG7KzA/zcWIO20cmJPNAFTM7ZVaL8kbE1YSTCelNa6dW6HstjPcKfrFuKLoMKrEt45ib+iSn2iXly/lm1PO3Bnyvh4lC8+CRKeSq3/wWWPTg7tiL+VhoCW/J1R5URVSCVYLOZoEf8mT9JNWBP7T+Va9mO3HFuVBpQkpuqJEMgafmWXLxc/kPPJz0FbRByDh9Ndeh3gDajjIdukLxOJCPdRCAcvYbO+slbvExnyfZ0sHEvkeKZpImoBj2rneJokAWKCGBMlpvUiyj4sTz34TMGcLi9XsSwJfr6n4iVQqkRB/9zU2LYVoDaJAn5294WByQnmwQ6pJJTcQtUXSJGdiFswjuhohHuTEMLSbWgoU+r0fFRua75rl1R1qiSM19DYXn1wpKsE1YEl900FjXnGNL1ejvdkmIw5/h5mWDv9Z07s","layer_level":1},{"id":"73389b15-3341-4577-a7f8-93a58709c76f","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"开发环境搭建","description":"environment-setup","prompt":"创建开发环境搭建指南。详细说明 Node.js 版本要求和安装步骤,包括 LTS 版本的选择建议。解释 TypeScript 环境的配置,包括编译选项和构建配置。提供包管理器的选择建议(npm vs yarn)。详细说明项目依赖的安装过程,包括生产依赖和开发依赖的区别。解释开发脚本的作用和使用方法,包括 dev、build、test 等命令。提供 IDE 配置建议,包括 VS Code 插件推荐和调试配置。包含常见环境问题的排查和解决方案。","parent_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","progress_status":"completed","dependent_files":"package.json,tsconfig.json,tsconfig.build.json,client/.eslintrc.json","gmt_create":"2026-05-16T12:31:56.6827842+08:00","gmt_modified":"2026-05-16T12:48:27.5144309+08:00","raw_data":"WikiEncrypted:mJFb0eo+82adP8NAeq7d4LBCxC5w9J+0Fo3COLpkFPueKEbQmlzZW8ahrMhEmCXtuop5Yg0lSYYKjoYPiCANIRZLZpOM+EECM3o02H9RDLujtWGpKajc2AQYi0Fd/blier6qodK9Z8TLQbjcaApBTLxVHhaY31kmqQd9jdXlDWjF6JjqkAikfuajjQTNBVU6o1AklK7EJdiZTVHAgk+JAcKGjxHX6s4ue080ii24XFU0rpESW9jYzXfT5mesPH5U13r8WqZCmmijF8d2ZOd/82loqAyk1i8rdcg2/ulLDK4xcky/5feKsOaZXHxk4soZYdUjToGq5SyFVfG6z4ilXCZ4es+HHXhvGxlAPf0RBPS8WTlVy6FtqO30y7SSc7W5IoJh2vITFJxnw83Ck68nCWuX0qq/BWoib7t7IzACn5CJ1gsu1UnSD5pEzBKTjdXrbbiS6fL2UNz/+gFedu8WpUMBXTVUdnDj7PJEW3gXA8MXLpLqEq5+ASba6gtv4kfsEo67sGr1CctqtrhJby6Sxb0WUAqsm1oMYitzJkq4eHBTOGZSe5UrPQRrB72Cwe+qreu2sXsJnPkvVz8kZWlhoHfuOtmcHmN5JLKQ29sCnHdsz4P85Oxt26b/BUzG7ZAQ5u7vv7t+MoNQqV1ndTGDQKUglVa8F+oU47eX4l/MGnmvjbnQChQzy7EjKx6/+JQ8p0H4OqiHk3cxTdbwHnR/68lS3oDW01Xata2SpD6pb8WzYHXTuY3GCDH/MNjhTu67q8K9SA3u3Yo/8NNMUnyg8LpV3Xph4dcbPKdlVzY5OY1/R8P+Bm9J5Z3SvATjPmpNjW21biG9DIQn0YPtpPbNePzrf39DgvoSlVEkBKpPDKlNzk4ZB9m3WV0WLUI+F1rC61HSrRJtr22//xq8ZyfpXwsICajI9+HEqTkpr3h3ArxOhpkPhKN7ufWsHVQpgGzt4LZ3p4uIIX5kb5zpMJVkSWJMr9HPw2zVPTXtD47KEUi0ENtxepSRldMiKOHvfwm2MzyHEQLkpWsK5Ix/HKrysMga94Q8FzW9LXFsEZCpQQbaVkKpKHcnHNL1iUPgmx457R5enbET9ERi8D8+9IRYHd+dO4iqzonLCBrQMQpUXA4=","layer_level":1},{"id":"008e823f-93b2-403a-9d60-08e7cd494f18","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"鼠标输入处理","description":"mouse-input-handling","prompt":"创建鼠标输入处理的详细技术文档。深入解释鼠标事件的捕获、转换和转发机制,包括鼠标移动、点击、滚轮等事件类型的处理流程。详细说明鼠标坐标系统、按钮状态映射和事件数据结构。文档化鼠标事件的时间戳同步、坐标变换和延迟补偿策略。提供具体的代码示例展示如何处理鼠标事件的捕获、序列化和在网络间传输,以及在远端设备上的重放机制。","parent_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/mousebutton.js,client/src/inputdevice.js","gmt_create":"2026-05-16T12:32:15.7272477+08:00","gmt_modified":"2026-05-16T13:25:10.7948339+08:00","raw_data":"WikiEncrypted:wjuZIvqtMZ9FwucWL2xjKEVHCUdgn6bi03awOikZqkk/BJVzg5ikQP/VZ4mtJWhtPfLk38O1gwZaR+bIxF4MsU17R7Kf6XRASRa1fBQgSXLwZyPLYbzcMxDRIC/7OjJ0vmuBjTlMvrjwSDZmGwC6JQ+ryuR5iz61f8s1+cgJCL+UvUoYKzZNlmh+PDk9gJI1rpLJva+HL5AOWhThAUk9+S9BVXlMClfdEdb1gTmle0Rpk0SElMITSJ4DGnJUu81N8iWyEiZovgmSe25H/XJW0NGVuMzH/SrDj+/jkkLNBc6mwl3W6IcUfXcQgcXDsZjhOxpBPKMeFgtGoGGmXh97q3fhdSeOjbGCM61tsk3rbQTzjD5AIjsGCV+3Fymho8LpNk8b/D+3fKoRFzneYpWtArWuuGQChva6OAUaNvUHQMr4VHlYuCxJt9V7lu4ZIZg2EhTx0b1Jo28o9U6BIugwIxu7rMcS/fA6yuLDPVRWwVanm/isTNCjuyCEYBQTstuVeEuK47uJFtnfpWUOGbjEX0aes9rsHO5Scnx/ZodZWVGInbW6IXew5FZzagEloIKchQ6qntTkgbOpUOp7jysoD+c3UR23cUP9WjDRqeoWM2tvZRzKacyP8NiYsAykyH/PDTsT5QiFD6b8p5iNimiyUjNCyLyQzqzMNMiIyioMmlNdJX9Fi2RUfheHcW3ynsgizcAQ+J3w4Tm6os8OVXEdtU8iiV61IEfQXUKE6LzsAklKClfL9mhtGBn/tOMx96i+QfoxMFCmpqGU7x36y4A5R0SGJnEZvC3O94w1V50C6lEPggX+Og1kGfmPkiIV+WG9Q5V4CbA8EpWGs3GcGkE6eg5NfF2nB5JooaIErSoC5DoWxTM78Dt8fs9AP+/uvsNoJI7VqXQ6cQuZzyu0/Z1/aJxsMPgZLKKZE0u5Ok8z7pWiPYb4mSE9Hhk1NyfhZguqGcA/pujM/7luFZJmlegtMixkIGovdlFZaJEJ2Er7CGARbZBqGLnegEdsJ5lAnnI/hF36j7GPaDjXT9W964nCAqd0/aa5bFuCI3FRQJwz/Tvqb0ksZJRU4CsQNi/ZsHTt","layer_level":2},{"id":"ab3ffc79-b32f-4ce9-9e92-122cae33eaae","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"快速开始","description":"getting-started","prompt":"创建 Video Socket Server 的快速开始指南。提供详细的环境要求说明,包括 Node.js 版本要求和操作系统兼容性。详细说明依赖安装步骤,包括全局安装 TypeScript 和其他开发工具。提供服务器启动的完整流程,包括命令行参数说明(端口、模式、SSL 证书等)。演示如何运行内置的客户端示例,包括双向通信、视频接收、多客户端播放等功能。提供常见问题的解决方案和故障排除指南。包含实际的命令行示例和预期输出结果。","order":1,"progress_status":"completed","dependent_files":"package.json,run.bat,src/index.ts,client/public/index.html","gmt_create":"2026-05-16T12:31:02.6502977+08:00","gmt_modified":"2026-05-16T12:33:44.2656433+08:00","raw_data":"WikiEncrypted:qfgbutC7oyxR6nMxrwk1ODnNMBEQ3/sG78fQT1yXWju83LC7H/jAM8CEAvWT8huE5OClmQiIfNYNxHQ9s7RRS59UcYwHhsvrAQS1mvhD+wuHBw9RiG5G4R2zPwwRy3mNXA/rK1rZA7uY4mMtHoUIh2I5oZF6pT3uDbrc6lo7e7TgRjWPsVedkGHYPAM7bvDU4mnvoBm/L2iZIqIHmnkkn6qZfvJaKJ7EPhQmftsFIV4SQ5QLlSBFocmustQzEN1E8cpd1wI/578+P76JuNBhlqTiqvDdsbYhLAhcQQeD0szf1Tjfb+vRmhbKtHuFc5FP9k6uG7u+6Nbq6LdTZgawvEoRWlRnKklZuS1rMkuLd1UrLQ1byC//a2v0+swrr8UF8Gf9aG9Gf4EJkkDi7yhLvqILK8TpguTg/FJKQMU2zNaHpgSvr/zUXSiQDFRbTebwcIv3XuOLtKoJV1+SPcnSfvRaTC1xznBlzRhZrVueoTTrym+8IYEzLxTyMhVYVDgsCqMlkc/q0o7GIs8I6KQi3fhxKd7Qg2KeS0HGIQq7tfK5ppVw3rivIGmOO3Y6YHmDkCPzH0aaIpiwgKukXGwRUmjm9ikPO115tV5XYmcBE20fpX9ejkL9NogiQmfJabZVQLm/U+AZgBXDjawffuVIFK2NCFMZfv+RRrXxeNtIeNmrC/sJNdmoX27z8RB6oL2IdZxF3JFhxdYnIRV/PVOdOeX3vK5lsSyJHwmSuD5Jy9shdVYUeTiXnpSUNfX8XYhJ+++dD7TaCNHuDXJJybXD02HmvCL03a06V93XveYC1HTkDJtQpHt5x89yNFhLrLjE+e93TA9Z6s6I9e71BA3exxGUf+qOw3bMSMZhRWlY1zR1+mPMS/Q5uohvQvcXz+47bsLfBNqhKu98rj0zM4KE5fuOkVVaEchsKHOmlBtG9TULA/s7fkb7sZIXaCp1Sk6DSmwJDWk1GGHKFhqBIPKi9lnjLHXvZiuUrWOTri3+F6Hir5fjDdVuKOpiq/6hNuQDtIHE7Z++pCFG8dofoI8L9nXpKN0aF4qg573v0ZgiI79EIQ66IfeZ/naJLlZr9yknnlD243rZGkRfCDA0av0owUwPlS7fVW+A9no7Bwa8of6Il2wDlBj+QEDTQjEP+Wi9"},{"id":"eca2b26d-d22e-43d2-8e65-b238a269789d","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"HTTP 服务器配置","description":"http-server","prompt":"为 HTTP 服务器配置模块创建详细的技术文档。深入解释 Express 应用程序的创建和配置,包括中间件集成、静态资源托管和路由设置。详细说明 HTTPS 服务器的配置选项,包括 SSL 证书加载、密钥文件处理和安全连接建立。解释 CORS 配置、日志记录中间件和错误处理机制。提供服务器性能优化建议和安全配置最佳实践。包含具体的配置示例和故障排除指南。","parent_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","order":1,"progress_status":"completed","dependent_files":"src/server.ts,package.json","gmt_create":"2026-05-16T12:31:19.7747432+08:00","gmt_modified":"2026-05-16T12:48:31.5546713+08:00","raw_data":"WikiEncrypted:TL+8cnFaK/dnHCy6UlYEJc9PbMe0R96zZZIIy0QVUGBKgomdMXUWqV4xs+hUfAKGOP25u6tl2wiEBfLZGIl9S5YCqKuq/HC5piLgxynRj2DBbx5NMZY8rhq13ostn6Peyek7OXwFP0lSQhNSBnkKskElboZ+mxi0MawXLh6gonu/PUKk0c3dLxv3tmtQu5MXbvvq8PSzTUjQ6ZpuScp1mG5zBYnSdBsaYbqC0Q+mJz23osaZuoDmx4iJNXSl5pKvRiO8QVmVstBRCz0AGRMRx57Xg3MpWTzweSEn/suOaq0GJ2EJbq9QajbCGOOZDa4BqXfTu4/7Tqm+XA8UkKKDjhbcVfRA/cyHqwPx2S4c64dtJUQ8hYsM/jf/CWOJsNI/4Iz/CQ0UAm70Z28HDej5xQbR+heYF3C0anR4Aj/k90np6wSbW4JIIQgTx/9Vdj/WQRtrh/rKiTnyCzuTjYghU62Iz41ZYdFs91U1Kh7KugyDYbYO2LrKLRQ259M4HdWKLpN5obTcLAdsO4mJ8UAt758tERDM5Cu6rnGO3+q+jkE+xvf7DEZLjcz0I4dZ8xDUYWKpRx3O38pvZhS6W06+Gb7eYhCTkAod1hASI7pMf27fIgcnh2o0KcNGRcfetc/MzoC0kK2QATafNSvc+dhWC8oLy65CDe0/oh+0FizK9VjWcL5BJHv4CniMaJi04NfVDh67Oo9B0IOmOYnfwsGYOM3Bjlqp1kVjBd9WofHcBoyVUrRrO+aUT83Fj1JT3bY4s10sFxoth6pCkGb68+vpZRaxGfEeT/UFgRNrHfEUiCY7EDmqGsEOTv53Ek0pzlk6pK9yATNJd/drceFPfPp5RFROG+yrCCD2re0IrVV69IrZx6XHgJD+DkGs0DNENkoqsGOvJMDPNbGTkDsAkoUvMSbmtW6LGSDpiHdPD0hpbpK1AeOqGEmbsW13nfd3jMnvi00VLHJPPKBcQCVYDWkj+XX5YQhx9MTbxV/GeqMJ5mhIMKVQaDaNF3OfaY4OnLMSzdAZUB6jUA3qtPJyKSvYrw==","layer_level":1},{"id":"68e75bda-0f61-404b-8038-89345a43e067","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"接收端示例","description":"receiver-sample","prompt":"为接收端示例创建全面的使用指南。详细介绍该示例如何接收来自 Unity Render Streaming 的视频和音频流,包括媒体流的接收、解码和播放过程。解释 main.js 中的实现细节,包括 RTCPeerConnection 的配置、媒体轨道的处理和视频元素的渲染。提供详细的使用说明,包括如何连接到服务器、处理媒体流和调试播放问题。包含性能优化建议和兼容性注意事项。提供实际的使用场景和配置示例。","parent_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","order":1,"progress_status":"completed","dependent_files":"client/public/receiver/index.html,client/public/receiver/js/main.js,client/public/receiver/css/style.css","gmt_create":"2026-05-16T12:31:24.8939968+08:00","gmt_modified":"2026-05-16T12:50:18.4512043+08:00","raw_data":"WikiEncrypted:OxLw75zJyzGExYdh/w1VRxP6Cs7sYYZX6BGL5xinxPx4UoTgYUkF04qyjGdTX8ixdx0zvlRp37k3ySDvLv7frYOH5iTsoyML3VOW7DILMjo4l2NweQ0DkEzFGsDnpGlGfaXAICHNy2kuR5/SMHwuFmd7j9IyeFbmzoiN4IiIvs9srBMQFtslRizWusCqmIKip+8Jdcye6tGXKd1D9HuWkhoDxvPEpG/wn7eAkhPIrrADWExkYafBiUqXdwjtNeZtob1+qvF3el5T7qSyRtG2KuwtTAvA0/SOkBQKfwbFqZBSemcblWQLxPrfCaStFSDS1tGVlKp9f1CMYAxyIvXiS0vmDWYGpO/yrllWpKpD3Vd0jJvUY1CLQyDh7iflpZztd2hEtZYO2Qoh9z/SVV0Amj/sp7KrWxoZqD/BrU7s6dZFF38tM20qnESuME+cM041Gv7u5DqjZEfPHg+tbmZqtwbCYJyx/jgqM+jW5Jg4fUrj2/1ztlJ+XA+ej2Ia/f6KT/W6WzjHI4E380KYc7VEojkCjyESnELKrzJsRm+s00lp5/fisW6GMOHkzBbA0kn9XE6cuM4foWusROC0NWKRBNi2ruvma21oxEzztwQi//d5WjDc5GQ6tIF27ZpXcgJOIwejnnorH9LbeVFmSKYRZ9PdRnyFsQBbBE2Ym7X/gbL7ZN0vMWSp236q0StX6uaXjwIARw4eIkVIaAPpbxm2350WbsRcMvtdWZnNxVfnEM3c4exrEaGaIWOMNSGMt0AIi2ihS4Nv5vtxPYbV3mhLP1B3KWJEGZRQUp2LbmWSuLoNcfbFjaGyEiAUEo+NWCGdTKbKBk5SFMcU8itcsZX5zV3gcxibqTzjfbqa67j/e9qpay6sY1gFpmkhtb+FmhHxsOBY/xzgILRQqZgsVXl2tXrBgsaPva/hcl8vqlMnW4oAdxa0LPVwAEZ0m0VcFDG3KVQ/voqF4/wKiCG9Ihhie19l4TyqZkfLGvRFxsWwqugRzO+VWf1rzUgbeRaLdOjiwunubk7zfgPqJRbhtBSqPSSb63Xu8a6rPfuNoX9Bop7Ff/gpQ/mLMqjtObDSXl8MSwlk82zXEx96AwjcDA5d6i5cbaC1X6ayCm3lUrtwkeY7ix5dxqgJBwsY+Ou0Yno9","layer_level":1},{"id":"482a84ec-9e84-4271-ac38-8ea5dfe61e9e","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"HTTP 信令处理器","description":"http-handler","prompt":"创建 HTTP 信令处理器的综合技术文档。详细解释 HTTP 轮询信令的工作原理和实现机制。深入说明会话管理策略,包括会话创建、维护和销毁流程。文档化 HTTP 信令的消息缓存机制,包括 Offer、Answer 和 Candidate 的存储和检索。解释轮询接口的设计和实现,包括 GET /signaling 端点的响应格式和数据结构。提供 HTTP 信令与 WebSocket 信令的对比分析,包括各自的适用场景和性能特点。包含错误处理、超时管理和重试机制的实现细节。提供 HTTP 信令的实际使用示例和最佳实践建议。","parent_id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","order":1,"progress_status":"completed","dependent_files":"src/class/httphandler.ts,src/class/options.ts","gmt_create":"2026-05-16T12:31:42.3659688+08:00","gmt_modified":"2026-05-16T12:50:09.5864059+08:00","raw_data":"WikiEncrypted:nODnyuhS8iIsw8A7yrQNpJtJ/m366Y+2d6UAkw8EUq9Dp9Uf0K9lYQi6OO5njTh8acWP0mamtn/5a4TWPHcyJtMdl8yLWiAAWAFOWeOaWjUoluOFGVSCoeV/vFoLP2BiOueT06XdSIBq/ld35VorIK5fV+1FcaWHmX2Sx3EHvDH6Fm5h3Q+BRgY/Pl+h8PVE6OaGZQbPhPWYC+su5u5xnsX07o0C49dPvkWajI4P/V5NKxgazZPbLPbXMoWTbxffQ53n5k0fB7tSLbECoAfPpJV+ZAKO5GWzL2A2y9y4BVlpzL6nTIf4V/iqTIclLlEraW/Y1QOERu1jPRukLQSxpGgkNi4Z1hHgS9cmjgXBnJJDnqB6J/z7oNHS3MuRphvNLL0JILMHLWvpYsbuQ3hXQio4b4GptdTvagfnWly4xLOMvGsg80w1xsoY6nYBQI/PgCTTMK3MlLfOcqYfIgQc57RentCIDRMuWWbEQ8+6s9sZlCfjypSx1UsxsyqZ2FadH9eNVhV9qLFEDBf1n7p8b+dIZgR1pgXbPPD6BIPhGUSc1RAuRlmj7+Qpeh3r04U1YMdAzXwIfNEPmE0mwrthWm9eLoQdxGKIK/R8QTl4X342dAfJnF5KGT/cmEqEs9vnj1ND742GMqeEs+aXY53cTunB3iFPCRlDFBYt9O6XocrGX/o2oTV6cPqmMAjzENx1rLAGjUih2BF4SaiPrpPkftZK1HNzSeL0fElCJ0P3QWysrAHzlFbR+yQjV85FyFKxBqXiY4w7QifdF9kTbwfuAg4SjAdF6B0KZyzZPMGMSrVXGtAiDiIVNK/AOiPwOxPq1Nzkgn5gWSFmzSxk012DZ8XPQnPMgXZsW8E1iVXvAe0H7Qe9H4DpemHkPtJLEXC1rIjetpOUy1WCT7ZzhP7H3G32RXdjcCR6pIrceJBovY1y4SpoGo6WJEE1sn1msD9EcDu9kUEyJh+WufDGnz0/xkeSQ1VLhD9qMXJzDl2s+JuFFn0aiIKRvfIKxpC+qE9BRzECFMJ9rlEmZe9TEHKyCdV7jb/0SlUM+K6JNgFRAa6+23Irgh5NsGchuQkCLhbkU9sonT2xQ1dYDP17253Mh3XmuuqTsEEhtCT0mR4QVsSAkUkYxmE+CBqbBv/qfC9h4m75hhkk5LnWogsSlXbXeHrd8VXD73B0uNdGKK5o0Fwj0ZNarOBQVTrW6ypqp1SxFywgXn/av3zSQ1vf86oY6z2UuIwMA/4gZPshM3UKVZQkGkIXuruXxiLXkwWnNIobmD1QkBWqEWxprR3rqgcf4A==","layer_level":1},{"id":"bffb854e-14ea-4aa3-8c58-bbb08bef5c9f","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"容器化部署","description":"containerization","prompt":"创建容器化部署文档。提供 Docker 镜像构建指南,包括 Dockerfile 配置和多阶段构建优化。详细说明 Docker Compose 配置文件,包括服务定义、端口映射、卷挂载和环境变量设置。解释容器网络配置,包括端口暴露、内部通信和外部访问。提供 Kubernetes 部署配置,包括 Deployment、Service 和 Ingress 资源定义。包含容器安全配置、资源限制和健康检查设置。提供容器监控和日志收集的最佳实践。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","order":1,"progress_status":"completed","dependent_files":"package.json,Dockerfile,docker-compose.yml","gmt_create":"2026-05-16T12:31:50.8657899+08:00","gmt_modified":"2026-05-16T12:50:20.8690039+08:00","raw_data":"WikiEncrypted:OYVOcFWO8QG2KTNzD99v4xxMusUyWhQxf3J/07wObNtFIyC4CbcNIuFY4V1ewVc8ZQcA3boon6xnUDfRpiaK2I9pkmLK/0LdWC76JlXPw6maFAj/2vDJLKW6fFXlZa8Z5zbaWsdI3RuMfTuLIxIu1HOiOWe9caHiq5coDx5mSUcb9jExsPNjzPH5JbHg+DRZ/OPSWdVExwoZidxrBoZPYZNUElPBQSw0gFOw95AUcS+gC0rvrJUfNHRFRBqmFcm+LvKLQ1JoiiDRvmJ0rfTSuzZQyMviCV8zgA/PUThEYkm7pppuTq0xOAMr2XF+Hi+95sRCYMudh/OiW57sPVC0R7JkQpFuR+QzaR0DnkZfSMRy0jRrjeFPysoUzTxnsXCN7874V50GTU53vE7yme0i8d0WCUki6P8CdhrqHQdURpE0Va8XPdUvBnIBoZO9v6AMEeLose8m2CQOsk8nUUybSD6WswC1ERsMeaPM4Ocw1KZYyddLAahEG+9KdQMMUMIklVPrpxxIn/5cHiwCTYsbx1Pgia50t+CQeoOvp0t1dnxH1l/qp0Uc9WZwVTYATdG5OU6fD12gqm/inLNrJ/4oPrZTrhuYlLj+19RALUoN4zlaouaBEUJFurkDgYUhsVj2qc6dL4SgkjcNEyGAfiwbVwv06rWzwfOkt1BpbDVl9cJccdymYRtAUT2XIQj4aZarLIkvGHPqEK/AZH0TDyIElsGsjEn2coRrPenShX00akhrRF0iy4KZDixuuVS+B1AcG30EIjeAOpTTw/weZDvSt+Pw/1ZD20NudsbZoaw8xbQNEEW0oUVGb9r/5ElHS3ec+ndCJEJzGBbn05cBm5is4llW8u/B4UaoRLTWXRR5CbOJdUzF7GZVhPr/FpKGz0EAkPdg4eLj7ZFj1QVxbdI2xoIFQmInVvqAHei8j3iy9HrHslfBwiaDz4mzGDwYf23yruZtYzKtl+6cPCjLctTnoNPwc0svy6qu7Ee8sWWnA00Do52FmolmS9FLRHWYBxiDOV/DWDAYZ+6xfCFnppKDp2rFvohQ3L9eMQ4ucC9LZbsf/J9dB3avyKAQ9NEr0ABeM4khNohNTfx8nDpWim6bT5S7NH0oHIQk1myDsmYl1BA=","layer_level":1},{"id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"输入设备控制","description":"input-device-control","prompt":"创建输入设备控制系统的详细技术文档。深入解释输入设备远程控制的实现原理,包括鼠标事件、键盘事件、触摸事件和游戏手柄事件的转发机制。详细说明输入设备抽象层的设计,包括事件捕获、转换和重放的完整流程。解释各种输入类型的数据结构和事件格式,包括坐标系统、按键映射和手柄按钮状态。文档化输入同步机制,包括时间戳处理、事件队列管理和延迟补偿策略。提供具体的代码示例展示如何处理不同类型的输入事件和实现跨设备的输入同步。","parent_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","order":1,"progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/inputdevice.js,client/src/mousebutton.js,client/src/touchflags.js,client/src/touchphase.js,client/src/keymap.js,client/src/gamepadbutton.js,client/src/gamepadhandler.js","gmt_create":"2026-05-16T12:31:51.4451482+08:00","gmt_modified":"2026-05-16T12:52:41.7386979+08:00","raw_data":"WikiEncrypted:yvmiCbNZO/j/crebb6wVo8z9pEvXiQp+Q8OBuQcwVcz78gsXS4XFUV1mNGrRnsUILrPgWfsE3vzZI3p2VoLjS7KoMI6TGMZoxZneV0drH8XjOc/BzBLVaiLr6BfpltiMVFjjmZwQKLdD4bjLZ+aam3eW4yJUjsN/yUpeqQM3/Uensvo9sHlQIM98ceWokQU/CT9RAnY1PDhyRZb1Pz0uLI3ECXUAiOEGHwt26lzXZOS/18Cek6CqCjL9894UV9Nn63ulihgWVfusI2c7mtnvtfdfjWNq5ZEt+SIMwuE2pHiUFYoSWx6EmcektPxrxfkh+/WkydZwZw0qJ+/lhCkoS0Md1ovE7wKfikS19dlXRwfQIkJ276LzZ8092P7PtyPa+a446bFpucnDYoOCTkCCoB6d0MVVT7CpBAf3hBXN5xGWF04XbwjRkES4aA2JnvW9mxGHcJJXN65ecUuhzCE/fG+XpdFnysh1N/JLkk4+qOVj2iLIGDdpqSIgnCWhJ+sT/N4Oz+5tnIGcaOrM9xDBmkzW/j3HvKLS6zQFdedpfaXu5CmMmMvvTOdEXDglkiHWsfgZ90JfjUjlSovRML+PienyyICHtTmmr62C8hI+TTyirisaoFKYHsDnEL7u08b4Qxl2CrSDyje827jdPVvA+7nWK/rntjDCfaXkf5MMEdJPYgoTwJwpkS5070tc5XegyAfgzGxTSYaQ+1gPI9Rk2hurA3GfTocxkZ8OGMhh2IgTxOvKzhzPPS0I7LgSNYITQ9m9eQiyTsB975U1AvQA2dd1mgcNn1Y0c2U/qV/5hiCupzy2RKFpF2k5PK0VC2JjlQr74c8p4K02iCAGS3yB360gUP1aPHJMb01kFEifZKkrwSV0Nc3PwIycT4NX/FFNZ2iFLTlBNtYn1zVeLVULSOndSPskfngMfcuyie7yNDLFoyy1Sd5fe1CcTJdPUU6MIAl11GmqMYjQZB+wBYZp6l5s3yH5qjcqOJNJxKdYILwgkzOyQUYceqWbnIYMPrpFMUPYQMvh46o0a31f5quzKwNqhTWZ9RyW6T2lCpbyF1PG5iRDEy2SNy+e8E6NgkSUrpR2AMAXdYhT8H1f5HC897u8dCrHOpW//23o8AAwQ7eCw0A/wk0v1aCWVs5vdhiBJaYROZxrxttMqr8W3QWI2ii26tkYvB3fec/FKyoOw8/UPRukydtZdjPHuZKd0n4aVT/ie9VR3Qjl75Kd9PdbpekTKssXZmVk+ppd++Ey0R1Bs4HGKQrD1wBFSIT64WSAsk4F7xiVmzpD1RULlAOGrZ2mrU5eD43oRzUF6dAbzwV9IKArvQQRJqy9L2XzR4cwlQq8yYYV1cY6yHm4SfffJmuoZeUkb0WMvMoaVlZVmG5daQ/pwxu7BZ74qjVWktvpghE6MMSCB+XgP2bH+UQmp0hYPjK69P7d8mJEFTBuEln5W1jEODDUfUg6oir/dDLG0kf8ZbE5XVfxwDKVLQ6Vo6ilE3OUMOy83brkeJ5z56btLR3FMaIxtmAoPghwUqtOFSiyiR+EDS1ip1MOISJAynVKwFLUpNuRzq1l3mQmYHQeMZ2AfGAvw2tdcD5ROKV6","layer_level":1},{"id":"d532c7ba-1b0c-43f0-8f5b-1741ca9f7b91","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"代码规范与质量","description":"code-standards","prompt":"创建代码规范与质量指南。详细说明 ESLint 配置规则和代码风格要求,包括 TypeScript 和 JavaScript 文件的不同规则。解释代码格式化工具的使用,包括 Prettier 配置和自动格式化设置。提供命名约定和变量命名的最佳实践。详细说明注释规范和文档编写标准。解释代码审查流程和质量检查要点。包含常见代码问题的识别和修复方法。提供自动化质量检查工具的配置和使用方法。","parent_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","order":1,"progress_status":"completed","dependent_files":".eslintrc.cjs,client/.eslintrc.json,tsconfig.json,tsconfig.lint.json","gmt_create":"2026-05-16T12:31:56.6832964+08:00","gmt_modified":"2026-05-16T12:51:21.1557498+08:00","raw_data":"WikiEncrypted:Gw00+yNdsAXvNpUHE0sZ2+QbHW33I6XBnIRt1QjI/FU8cxOfb3vCgHLU1Bq+8to1yZknBTvEMZf49B9SY8hL23QCtnhj38VZwAnk0jM00Bo9kFeZPWySiK4EJoHaLcIokjvUypRugiK43K88dj/pqwlE3U20P13+hQfqKX3CG3UoZsGZ99KqiT0+JLDkhIRz/xFZJiBewC/ST2RZBuF927dNqWXFgIX8hR9V4wlMv2sseEjk6TsJbCKmR+qqYnzNb3rOQxxnFiSFj0GGMtSmhp/WyS1uuegJTjvf2n3gQDG6bJoSygmB9V+y19xwATC/CVmBvbleHgTKi/nr8s4tW/0dEQn+bjSZbtdulju1V054PDIG7ZjDt8fyIKlthGk+WhpOQer2fxHuCkLYvlMgxAjsGDxE+gncvocjCbXw9u+pPjOLUhvbZj8lW4WkonUAZoxLH8MXN5EpoJM3Wkl88r18N33wWX0Gf2bM7aYpcgffYtVKveTA30hm5D4Fg882FdHXUqf9bdJ307AxHBV5yoyU6r5zATlGWmN2G1DBb0qHOLcN+3LPFlAw6YR5iqR0BGrKrfw3pYQh4rMQhIqyIzT9ht4YCuV1ne9sv/ST6Pq/knfCa7PjZeKlBIfv8htDAZb7jPWs27tFwlJfDTOONrrs2K8bpu2RXJoTGuIRqyiKYax4XUTLQojniQJRRKMxaEG0qTwIZkSgjgVNxo4+xUrLybaAD4hKq+F+aqOKlA7xD/LFojoSTXOKpeWSVm3blVtv8/TaAgo/6/S0ZG4i1G1PeeKtcFvDeu512ORvZ2V54eerk5cGnSChAUSOZL1WhjtUCWTcpgeqk8OCnEk7wkRoS6uBLcjrc/P4yCabnNlPfaxoLgoJxFXuShwmjzAEw5Q2YYIbaxbw4L5NAbw20O43Xv+v+gl6m0CqexU40C1DCCC3KlnfRjjmHCifmFY4MKxMxsPTCYQSKytvB30VmoSRr5INVCoJqXcR5R2FmBkWIPoL/t4F/hDlu9Oqeo8ZfrlMA62tti0utU6QZnYGzbrRhFSc5M8Lard5dIWVPQGrttxYdTCR9aIZUprpSoin","layer_level":1},{"id":"a34e1301-4130-410e-b147-4698c45c23ae","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"键盘输入处理","description":"keyboard-input-handling","prompt":"创建键盘输入处理的详细技术文档。深入解释键盘事件的处理机制,包括按键按下、释放和重复事件的捕获与转发。详细说明键盘映射表、按键码转换和特殊键处理。文档化键盘事件的状态同步、按键组合检测和输入法支持。提供具体的代码示例展示如何处理不同平台的键盘布局差异、修饰键状态和跨浏览器兼容性问题。","parent_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","order":1,"progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/keymap.js,client/src/inputdevice.js","gmt_create":"2026-05-16T12:32:15.7272477+08:00","gmt_modified":"2026-05-16T13:03:10.054634+08:00","raw_data":"WikiEncrypted:bOBBm1sWTMw1sXFyq6BOXM4Yzbo+UD+kVhf9jJxYtRydM0fcnUjcm9D9A4i92KCAMjLpNlHEJKTUjpsPUNHsdh/z+KwodPOsfGtnEImSMCFKTEkM3KLLzuJsRf9Wt4G3lRHuP6HtsDJe2iofL4heWpA0OKlpp7Xry521qmOcC6MbXh0ZWe2SXZcpqzRs0BM4exd5Baqj0dYRfHKpWrcQ5TgO9BydG7yYmXdOiSFa0nRmmOn4QeJLiiXC0Mmwe78WB0rmCcSqPBQEZ5ZdVudyuaj+VMPAahFDfErVNw3rweJ7YMwqR7IXNIho7IST3RX6pZSsOMM22dh005d/H8RSpkG9EtIQ9XAgXyysyCNr8RzVqU7vkRowcFdVehazX3wRXZH3eieQ3eB7gcZ1BO2WrBniFWF7U/WVbYh1JisG4rCpfvk2Gi7GtNMWOQe0b+vA9gMS9bHN7gwzWmarspexWKi2qfCCqkePMPpWuZxJWjMSLvknBIsB/gGyog6401BNXwi6/n+ShyhuQHEqaH3daumqTr5JdcvCnaPcdQUdwhGw0sx5i50u1nkyGBGJLMxa0VCmf+vD89yahSbDyZX9VhGzImzJlI5b3NmrQSdzqKZtmWxLNDsX1bkWUxg42POor2i52DpGG4ITTz0zI1wqr4jQk5eJvF8JiZMpDk0WhGsLexorDaR1thJsZEwO0Alxnfelsk1vr4r02EHAY7/yeBslJI4oGqHFEaDI7aeeFc7ErtB55Wr1gBLUQWq/LwQdeRJtDd4xqme5TGunsmYrhXZfLYQsrsr7gSV6VeSgKWUsVjw74ncPXMoNdfSOIIlAXJAMYdo7Q581zquzsomsELp+UInMjr60pzZS/iqWvWWE4GENJiz6UyBvtIcapDsfbYiy+fNgl0K03QNMjNXfx1SE+UIOPiwUQJ4ik2TvRGjLAfmT5unejFNEPEcwkjB8kTYRGhJVgBjBGt5W7xVSz2XIaGilr/NhQkx6RHcjmeA=","layer_level":2},{"id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"服务器核心","description":"server-core","prompt":"为服务器核心模块创建详细的技术文档。深入解释服务器入口点的设计和实现,包括命令行参数解析、配置加载和服务器启动流程。详细说明 HTTP 服务器和 WebSocket 服务器的配置和管理,包括 HTTPS 支持、CORS 配置和中间件集成。解释信令路由系统的实现,包括 WebSocket 和 HTTP 轮询的路由处理。文档化日志系统的集成和配置选项。提供服务器性能优化建议和监控指标。包含具体的代码示例和配置文件模板。","order":2,"progress_status":"completed","dependent_files":"src/index.ts,src/server.ts,src/websocket.ts,src/signaling.ts,src/log.ts","gmt_create":"2026-05-16T12:31:02.6510634+08:00","gmt_modified":"2026-05-16T12:34:45.9414399+08:00","raw_data":"WikiEncrypted:DfAL4INOq29Pd0V8no8kjMZ6fQVcyTmwYTbBEd4hCgJSr7mzidkbPm7rudelVDQ2whIUXL4Z+Yvi537PuXKjy7yuvBGecq4la5Et1SXTvBJ0H7lB2yrUBmmd+upXHzmY8qz/dEN+PlYkm2svVUV/C/QdFuFKR04on0k9M5f0IMuX9fvEPw4pZL2Q5NVFkh3WTubMt7dGe1IDHRvuittpU/tAxDZvmBFAHOwwgHOWdABWx4J5vX2c9j55p6BW9qHlUSZAgoiH3ZE6wCz90a64BECzOoluLWWB5TmvbUqpt1DpJ6LtUjsedxCKxc/gysviGEC+VCX6utM4ffnUmMrbjehT+dYH0V570Zoj/kViCThknTA9nPamx/LO2DzFFcaLaXFHaYZcm38kF6Vqu6gsyQBmz9/XCkPbBwPYlmnPaC6y2oSi84/45TH62DN4nsrBb+LtVbMycYUQtqPD71P92VtsotIr9Iw86HeILy56pQycUWjHTown+SzdoOIJTqDEqZZ1K+aQdIUNxrYrKl31xvPcjfucMzCFGAllYXXFjWw8xRCKIV8qBigjQBvS2q43gpC9yjcyIBioptgIvQDAC3j/u5vsBgkTc9S8Swhbi8zSRcqmYpomE3r6kreI7GLSnaJPBsWbEHjuHwvLrtOfd/kTQWSbq7dnZNh2qP02+5xuHNz42GxtYN//i2fvnBvwrAOhyHmoyRMbfaVeRQe6HgfImb3fTESeUVEVUx1hFlAHkR8mhiAuT4NdQf3ImzLDiMWk1wiJfXg+twWuMY10SoakXmxhOrBvCFyGl7Ahua4GCdyVNlrKxkUWLWSFJlhRlu3DT5tasgKixEOM+u6J8aIu/ZEBn0CLqljSo83w+zKRxjO2XTtmFBkbbtx5zsSqUcdrRRJm9fn9Z6p3o6vA23U9VEYMud0ptWin2QlmtuloMJNg/LXbLoCtsgNr3kIvtEsYhQzvWwGXymdJZgGztrfArkKfqspJLQnDGcvekrgJHTtKfmpGdxvvSoRMp2M18Mjh1lBTTxqdUkCaz6eU5aDS/hswDSi3KByQ2B1ifWCXc1xCHYG3OZfeECu31KEny1Idbun7gikuW+BPwc5j4B9stFEDtzcdQfKYyR8+7SPnO/B5wOlL+bhj80Zgdzorvx3YgwtmI1obEvOPFyaYUtQdvsg+Y8BvZzTu4UhEaYSzA0dzq/44jdDIFkxyERF7xaS6gZpXoTxcbMFXxtDwRkcPYqa4ChzEcdiOCi1R4KizDg4b+PHDa2aILji90cVu"},{"id":"3ad75da2-7ef6-4c9c-90ef-4b9b5adb9d39","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"WebSocket 服务器","description":"websocket-server","prompt":"为 WebSocket 服务器模块创建详细的技术文档。深入解释 WebSocket 服务器的创建和配置,包括连接处理、消息路由和连接管理。详细说明 WSSignaling 类的实现,包括连接生命周期管理、消息转发和错误处理。解释 WebSocketHandler 的核心功能,包括客户端连接管理、信令消息处理和广播机制。提供 WebSocket 连接调试和监控方法。包含连接池管理、心跳检测和断线重连的实现细节。","parent_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","order":2,"progress_status":"completed","dependent_files":"src/websocket.ts,src/class/websockethandler.ts","gmt_create":"2026-05-16T12:31:19.7752554+08:00","gmt_modified":"2026-05-16T12:51:39.8694985+08:00","raw_data":"WikiEncrypted:846PjIgkeMHsDVBj61Op9/0DKQOpQOzIynXZ0s7rhZVevVcHleTHoTX6HcIO5VEwoBy1353oOelnTc240fEisc6yVjbRX4n/ImsKcT6eDl46JPsq71aI9RWN6bqMF0fhigIk5nA/qOGKAQoVS9vyl8E3t7LhFq7JgMkv604oQOS5P7l4TYD/q51r06ghqye3ZNDJ2WjeK/+284NYOjdF0YeluLaNiGLkNtJL3fJ0DNG8jovaS6csg+mrYyb4MeXaZY5m88IVS4Xj6XTJGXL/GPpmAH26LhyyJAIqqNYu8zbmQ0MbBZrC/yzdkE9rblKK3DfkjgsTV6pThQIaUphT7FFBcNkd6vLSnlcaXqjSYnLky15rLzWL3xYPCaWy1humgro82jnKaWrX8oLFqy/MMyfJp9d1pTnmroMX81CI5oa92yrndXmXg9tK+a1dEQ02ntMb5CIn2hYPB00KfwdGQ8XI1McnGwyqTc7iMfyJqvD8hEq+GBwqWkctd6znqxWqXqrP/uT9B4cGS8D0VvqLx1pbqRS2VzuBAHEwupAftRxBF5UWPTGv5c/YS+pGc1VVWqotyqUAfUqwFMbPwDOsHbOn2ZaoeKVj++oz6BQJizKCyL8PFRseTzsRVki8Qjork6LjCFjiy44/2ePwiMrT1zX9VhP+eIMGg0vGM38dVP2fFMY0a9ain0gRSVDl4yyOwU+JAFD5ny3wI69X/cltNsSpJTnq2pM7umDxxCEsXc+8wgz3rSFv3Gk/lAlcI4Axilx9LTqIWrWLbBwX//F6FK2Bs7USgrOZOSilto0p6V80kq7yXs0Gs4qgBj4YdSYqCHEDCihhnpJG67Cy81nqzcLbG39P1QtwDMChXV7e3UtpfG7KrVY+wA4c045DXHi2WOwUIfmJjcsjuBxFvhzFj5fw+2cRQy3jFL3CcxGedHz4Vp/ufbNlK4QxovzP1R0RyzGLnyFSTF09mcKmZ1fR5k9u/u+64tv1nlM+uhC8XTgOR3Edr1P8rmZjxrAlpvIMMyw6VhRD5Rx4FVnmmbv5Iv0kmlZOJAxJJeyXlZXqh/c+5IvIFuubK1RpAwnaYks/","layer_level":1},{"id":"16e0345a-01a0-42ac-9d58-6acd773ccd7a","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"多播放示例","description":"multiplay-sample","prompt":"为多播放示例创建详细的开发和使用文档。深入解释该示例如何支持多个客户端同时接收相同的媒体流,实现广播式的内容分发。详细说明 main.js 中的多客户端连接管理、媒体流复制和同步机制。解释如何在 Unity Render Streaming 的 Multiplay 场景中使用该示例。提供完整的集成指南,包括服务器配置、客户端连接和负载均衡考虑。包含多客户端场景下的性能优化策略和故障处理方案。提供实际的部署示例和监控建议。","parent_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","order":2,"progress_status":"completed","dependent_files":"client/public/multiplay/index.html,client/public/multiplay/js/main.js,client/public/multiplay/css/style.css","gmt_create":"2026-05-16T12:31:24.8939968+08:00","gmt_modified":"2026-05-16T12:52:56.4881619+08:00","raw_data":"WikiEncrypted:61qbWz+R0QU/Pi7NYUA44ujwoCJEKP55/Ij5ZJxKBEiUAIJWu1fR31A6t7L3DieKt458F+PRL8tKiFNyLWFe3awUzhiWi/Yf0nk+9XEhPh0vgqoGHoM7OLFROvVlBBKdkuBo4IA8/Q8pmoDJj1uRlWhwnCfBgJ7pdPs2YwOKTZwmLVLEZAnMKB9tSSFuBhTTFVTdsQRtxh1gV7I3uWNx4MeQ4l7nR/KLQRa082fGObp3OoE1RUoiBBCWzvTOUDO7vx92+PK9iuAW8w+JJKD71K2XF1zVXdMYgp+1EoVc8RM74ubyCmagK+AC3JYY81/2//+x7CHYBYgZE+l33qHM4n52xbArRz9uDcGCOBh1m51aEf+AOJVr6zcAtO9JEwLujASrQDsqAMiQUlVxVlQwOvcupw8QSFXg6PXm09VkanaSd7vT3gB2106zVBGJHYpzeqng9HVHnl845IvGHntPYWMQ/3DPLj197kHkv/m0O8fHIsKQEEVCnlo7J6PayVkyHOzyyQTmOT8TOVMAc9yrnlXAUc3/Q/NlRQ6NjgezkbRUC3a6Nx5RAx28VQI4lp2Jm6MtB+rQ2wg2DRqUVhq5wqbY4WkfpXpSrDSzK0aj4TLp62BTyQLF2m6Xxz10IS2DIqp4/WwEcI/KjICJFTOskbEqcDJQmrMpziLWawP7WWAyf7ukK2TE0k5uAyD0UgwWdw12ppba4fc4Gu7R6Vq/RLZr64IkuqpOzE5OuRRB+MeSkrNWlb6VdMry1yNS1UOn1O5aOklBc5x7ahNVS0jWi5U5NcXzCYEtRhg2DI6qndbLI2aV06ZBvyzETrrgKV+LdoL3hZqlzkLDUfVEFxPBhVXD16nRbyYBVL1KD5SCuSK+jb3mphLHLATGPopHa+b6E8kxqzDdhGewG+fIe1ha4guBV8WUALdmRWtnFe8Qg8ZRXJbiD2dZI53JNEgApKhToU6Gpq+eGf+WRHtG5UX9AQFjCsLbNfPw8G9qadeaOyQGshUG9hA+oty6D5UDofeg1fBRRK1f+gonvtBho4LsND0Umdf/ppLQGtZaQ+8xdbnlaYH9I94iSZBZ0TSXZPJniepe1lo5wtgRrD+evtID5j06uKVKdoyBWbrNECUsyZ1hL7Z8HcBy34AX6NfXG9FaXAP0J2hgZnXvkiIQlZQetpivRyumz6lfvAePvwYyXkfGPQF5Ra0tuKMoLKtnl5Sfwh/twsJ6dz67paoBtxskyeJrU3FVcs24rVjk5luZ7IE=","layer_level":1},{"id":"bca5c096-0c2c-4f80-a594-4e3b0a2e1a51","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"信令消息对象","description":"signaling-messages","prompt":"创建信令消息对象的详细技术文档。深入解释 Offer、Answer 和 Candidate 三种核心信令消息的数据结构和字段定义。详细说明 Offer 类的实现,包括 SDP 描述信息的封装、时间戳管理和礼貌协商标志。文档化 Answer 类的设计,包括应答消息的构建和 SDP 交换流程。解释 Candidate 类的功能,包括 ICE 候选者的序列化和传输机制。提供消息对象的创建、验证和序列化方法。包含消息格式的 JSON 结构规范和字段含义说明。提供实际的消息交换示例和调试技巧。解释消息对象在不同通信模式下的使用差异。","parent_id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","order":2,"progress_status":"completed","dependent_files":"src/class/offer.ts,src/class/answer.ts,src/class/candidate.ts","gmt_create":"2026-05-16T12:31:42.3659688+08:00","gmt_modified":"2026-05-16T12:53:29.6108452+08:00","raw_data":"WikiEncrypted:wLjCSFFOERUBp4iTLnCPtnu/pY3ogxZi+HbiEQQPu6GWv7F7oFpYnJyJPZzojY4rQBWVamav0pT/HInmdkh5UIbDudm2GU0eyneDu2rRExM2AvwIhNBten3DZykKIdj1nt/vMnhnOcVn7lf+5Fyz70SVpiu9r/IqiuzcHw2BRm/4yZyBEBl7YL7oXubsIkdPsOOhEf+qgWXNHEi2RADRbivU7NpdLdUo5ocCeiT2o7JUkLE+aj/MCxwoxsqebwghROlLLU/wJMk+5R5hkty7dp3hIE20EEBmjOkTmtSwmTAwVCGdxHtpErNF//qewy9zPpWxnNTjWJqOr9LKlZJDQ2P4QnepAxAFhu2uUoHs38qaefZsENf7+llkaAM0dwhrAOklhV36NXjyaVxhACTRBGLM70/CgQVgf/MZ8+X849tM33gXuvwrnZv1Mt8E1nREdtGnTxTTHm4yIwBRJk1UsYmi16oVVM+cf8JiioW8UAn2/ML+aEUaC7fbGjZA4OMyY5SRYYtddqLqzc2EDeLco42XCp/9+VmO9EN0B0xSlxJV5TY+8A+2oc4iqDaGpOwfLdQGzOW7gffXaUdm1TwXriOXMNWeLG/2gor2wd2AXFtDlSdI17n0Y3gfYu0gWrab71qEKsy1Kp9vyqk02qMrJyofOgbSPbjoIbdOtVe81e2DTxE6IVHlCbvF67dhCcsYiTS0QzZar2NARv9QoY7zxbaiTSmj+Ns4wDuhqGjM5o/DewfG1HKIXkRgHI13UbtbXZ1cBFKWrQGlSxmCoK79nrrxj9FUAf2Bs0o7wJLycY/UuNXhyLn8blPz8JvAJ0Gu3lVhWvrf7pHnqO7fYn8Z2Ehkk5E/VtF7Zt6fGtqEPwWF8PkYnHcyP2X9qPKrolJsTG1Alc9f8m+RLl1UID/59POd3krwRQMSi8ZVpkaIcfZervJqdwdLAK+t5nxL2tYEHdoBH3dhEWPEQoDjG8RWD8xVF8LVFqWFEEiNIEXFQri5beu6rtqrKtPsa5gIuC8Wpa1JvpPL0zLpP/StlN0UtDdd+3QafPSBUilYv2bQc3Mab0JjaeQaNcfKvYcWxSY4llpm6aV0tq0h9lM9ToYVuadwrkS48+6J1T//fzqMATDU5q37s6Cet4m3MA8QdW+Fr2n01ICAy95+XOcbTCT3RXzZ8W8kEuz26MyWf1xCcDw6jzpurM7PKQp0gaeaTzGh45qUU4p7OOD2VPXopT5h1tbJXyf/PkoTgimLRXljjNGu9b5Mpn0yUrRxgtJgr6A0PxxD3FfyLWdgfHdnYn9cCUS/rkzqoRxMk5p3ibAoYofXU/jUGZd3Dc9qD3xYpAOk2hJ9PXqSQvpUiA+ozKbCVKoi5wOxy8KB/fwKj8+BGmg=","layer_level":1},{"id":"b26e6ce5-8068-45e0-afad-aa894dff7bff","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"反向代理配置","description":"reverse-proxy","prompt":"创建反向代理配置指南。提供 Nginx 配置示例,包括 HTTP/HTTPS 重定向、WebSocket 升级、静态资源缓存和负载均衡配置。详细说明 Apache 配置,包括 mod_proxy_wstunnel 模块启用、虚拟主机配置和 SSL 终止设置。解释反向代理在 WebRTC 场景中的特殊考虑,包括长连接保持、头部转发和压缩配置。提供性能优化建议,包括连接池、超时设置和错误处理。包含安全配置,如 CORS 设置、HSTS 和安全头部。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","order":2,"progress_status":"completed","dependent_files":"package.json,nginx.conf,apache.conf","gmt_create":"2026-05-16T12:31:50.8657899+08:00","gmt_modified":"2026-05-16T12:54:12.2895983+08:00","raw_data":"WikiEncrypted:FK1S00S/So/d/XqgGPDwppTi4ZBSxvu5sdxdGSowapHtcYPhPBiwdEYascd8at8ddi70cLrYyywEkteLeQtXgw8+eyofVYDh3ilTJMG30FUH3fqqa4IsurFfv+sFsOmf9J+lK+BU1BQb60xZcqJiEfBIUU39X6P8mzq3MlwKq1MEJOC1L+RVzOovcJRk5vnBev/psNvIVvIZOgYacqXF5WqD8wF1WQjKp9Tq6pycn9k+CKWr2z4kKg4Q+MezjZHGcR7Lu16z0nNvjGcybtL0jeMgFOUBJNlAOwzOxsOk2YXqQHl5bWpgsiJECbpbiCjxs2t5lOZzN3bsO6mDh+Fg7RCP2VON8xnTki89i/+o1JXjTfL/zEFJ6zTbvphyLvIRfO76VVOlZIKa5M+ZeOeFV5i7ubQIsXZ5RQR7t0e14RNbqFK0kYWwwq8AiQ73caji3KuTjGfNjEQCcKnZypRDdFFtvlOZALFj3lM4D5Mws6mcY5CVM/zEo9IfIm9prOwCjPOuqrOavFB8ugVRXCi4lXAcgPNNZ9qONHSuOX5vmW0cdz3fwozNDLkZftjAmTwLybRtRWxjS4ILiU/emNopFOixl1leX/P9rVs9pvC5BykVomuH8vyotfLnhp5MRgNUS3tA6Lb4eKjsiC3QmWcXHctTYOBks0ERmxX18wk+ph3k68fUPtb/QO4AwZQLeD1DziPNaDzuq6RmzqJIk1tUdQnmKafsC30w0FQ7t8Pi/rUxZsZL+q6MBb4TDSrS//DRNxclv5ZtxdPnIdoMEHzXHBRFUJlIrDxnusF/bj4gtbv+A0NXuCdaulev48ASDIILb5etwyPFn5BpaikY4KgfZgD/ctXVx8RhU4RcfLvvp9IXo/gXX5t/rxKhCTrn1P8itVPqP4ZnOxSRFOkwioxv2r/HLOppYpAQxsYRPZ11FJMk56aant9uYSJV+hj7exMNjsAzz1c+PlskoK18NJ3mvlkJHlTG/cHnyN0oGBRDIX3pSdkpTnZHtW2zifhq+800Tv7DCeU2RxpwJhoblUBO4dyAY7utuII0EyZrFFfgzwGaOhazCr1sRfMcQM9jr7uLSt2KVMGkPnsrimpTQm1m6/wwPWT31GEyYqxdDoo9S4k=","layer_level":1},{"id":"fb0e54f9-8ba9-427a-a51d-0e20ee6d7fd6","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"渲染流处理","description":"render-streaming","prompt":"创建渲染流处理模块的详细技术文档。深入解释媒体流的接收、解码和显示过程,包括 WebRTC 媒体流的处理机制和渲染管道。详细说明渲染流的配置选项,包括分辨率设置、帧率控制和编码参数调整。解释媒体轨道的管理,包括音频和视频轨道的分离处理、质量自适应和带宽优化。文档化渲染性能优化策略,包括缓冲区管理、丢帧处理和延迟控制。提供具体的代码示例展示如何处理媒体流事件、监控渲染质量和调试渲染问题。","parent_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","order":2,"progress_status":"completed","dependent_files":"client/src/renderstreaming.js","gmt_create":"2026-05-16T12:31:51.4451482+08:00","gmt_modified":"2026-05-16T12:54:20.8643932+08:00","raw_data":"WikiEncrypted:237Hp7b+m+6V491ZOMBhPAynVrxUFFpuPntrLhCPXPWlfnfm1U2Lnoik2bU3MQR6fJQtNGzSV6ErCWfthV9Zqo2zRSMY7oBhIjnDEYcJdATPRfgPus82y7T+xggXuLIYixbI2And5KbTm9L3C81kVhTqGZMBbjqncBYy6c7022cxnsM3GnJYe8LfXKikNZtAo8U51D/kuqUhjPKyN7YhVMYQ1J68BTVJ/54ayCIRUgrjnnl6T2pGvlNgpLo3RDYlbBNCngfGneiJUlTmF+9c8hPGFIMzRr8SeGXCV9qLPENn7iVCIApHk0jC2aC1A4m3oXH2xF1yI6veofJFbp65dm/43maN5O6Nq0gbOHbxPo68AXgu+ZFybJHgWVULgCAPMy9fODYmhnVgGf2sboDU2j+GLNnNAF39K/efLXEnUdJutDkIKea3huzgH8u2TK2GZcDS7Dwe5x/IASEzgHO543ZAu4sdABmMiafR92hzk00B/c/lsJ/JcKO1ZvU7j/tIdwiigBipCibPh6gmJce6vs+Bf6BZDb8/w1jOuyQre5yQhTqCBIljchEWFluH+FmVESDJQxGyD+cF3tzxzesk4QZArsQA3kaydDCpZpjRdhVaMXjbr4WLAtSZ4PwS+wfprVLDwDkydwjulyuF/cEWhB100DWXoPqv1WibRPuGAUr1x2LWBO0ocvuR4jUneOt2fE/NmuEhQ8GsBpiduC/2R+8ckG60CjXudeQMPqUJ0MiLhNEkVBFbMRgNKLjsO181nugRo2xkPhqA36b4HLC2lQ7qoFNnBM/QhOy7WUzU1bG4+STPaycyOzb68Ks2bgDfT1kYkdNZpANUpTsPEzyD4A0TIR22HbDWf+9EwZmoX5IFlNW4Qq8PqHr0KENj8YE7ELNFCGx9zH7gm6HdbiexXyYY0+Jx70oTp2C1hz0gJWpG5Gz3Ngeq4eQOombgC3Db+SQ7zzJVp+PbMSFyuWx8fbdFOPF+ridqIhcX9CrMXgsKKzvSMG0tDPtGUP9iRKQu0hxzaZ9cw4nNTJ7vzhYItdKya6jKD0efEPoVVXQwhaz7501nbjMuYvz24rUGuMktmnVyKDXhRhHhzGIjIZxdNV0t3J7msxToKRQSCJXiK8QwGP89pdJU3fexPMIMjvWwKP64eCNG/Vc6wYavpDmrzy942igr2ZZM/kSXHrkCQMQaXa4DYW1FJ4ttKNh8jWHl","layer_level":1},{"id":"f4c8bc1c-7182-4212-a6f0-5ce1ce114cc4","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"调试与测试","description":"debugging-testing","prompt":"创建调试与测试指南。详细说明 JUnit 测试框架的配置和使用方法,包括单元测试和集成测试的编写规范。解释测试环境的搭建和测试数据的准备。提供 WebSocket 和 HTTP 服务的调试技巧,包括断点设置和日志分析。详细说明客户端测试的实现方法,包括 WebRTC 连接测试和信令测试。解释模拟对象的使用,如 mock-socket 和 jest-websocket-mock。包含性能测试和压力测试的方法。提供测试覆盖率报告的生成和分析方法。","parent_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","order":2,"progress_status":"completed","dependent_files":"jest.config.js,client/jest.config.js,client/jest.setup.js,test/websockethandler.test.ts,client/test/signaling.test.js","gmt_create":"2026-05-16T12:31:56.6832964+08:00","gmt_modified":"2026-05-16T12:55:22.146713+08:00","raw_data":"WikiEncrypted:IGJnZREY6KPscHFIFvSUZAkcZ2wP1NBeORsC3B12k8WEpAgjP9FaNBT5caZjFepbp/xo9XnaRPqRj0bSCC0Q6usnnT4oKs9XygkWX2D2uv5BVeUykN3tHb/BOEGEnVRCUopnEg2EMs7cegnJUVdKTs0COqv0FFlngjTy/cWqT1gt9DsblZ7P16CvYAQKjUZJslmRLQP9dN8HTpMdTTcCX/zXrvTF0WFzD5SZEoHknyvbJL/SiPp1A0q7csBWKZVA9kINcFtskbEbrEBo8Os4LGtJJ8McA3AjO5E7uyq7SwSfC1+57kZRCClb262SRkrbQ63LyzWdv9D2WImj5JbY0bDRIcg8ajwXBrOOrizZ9Qv12kvgtdkfeiNpfkPSjJdV3/CZ59T+iV+YzPEDHCad3oU/bDP1B7fl4eNAaLMrFvtmwEt8h1IgTfpfq3BVTkBhOLmHj9sLGhsd1krzX7K6XkNu6K4JGjEvbbhGSq3Mct81wsPr15PgjAK8f+50dyOM5lQvVJDLtC6nl1PmKQwdFuBv8gg3+qbsjZz6+rWteql/ALMGcl/iyM5EWwcqPJ+RsntvbdxO2qDRX3whxmIdqAa/B60wKvq+ypJTZFdDBzfY6CgHHfw5yv5YQprOeu6YqnXgiG1o8nlTKnUaMFkhYu2dKBhkBLhZJYJNHdKEDUJgv7DJfKe0+X1QS3IUWSNliYbyGBgnIMZ25an4Ef10EQ9fJnRP/9xHPfreOyINTfdn56oQ6seU+iqc93IKv6kiO9JZTmT5j6s8t4OIlyazQSnHcIw604GHj68yeFqjYSuzBEfsu7/TjcTvuyiknp737IQmgnaLeUhF4oss0C1RNQl2MSfI4+Q0VaUVE3/4rBiTzpcPJM8YT0lnjjfQFCACBPJqAg632vNnFqsbtVqE2gYG1Ltshmo1rh86UvNj6LeGVT58xH+tJ6YMIs8CloWXxZS8L3eGxyuUqKgr09q1sAphCkH6LIJS4lbFS3PCurHemzW/JD3/Em1ikQUQYAOUqs0ILT95A1OrF9skY7DBjQsB6ZDntFuJvDJ2CE+G5CER3VLCjBG9j2w6Y7ZOZT0lYcQUFMc0b4OcalS6yZtFX04QGYjLi0fr8PGh6jIUjdOOqLwQLbrTKB51jgWRSKbsuPy5xpM2lJ6U2PVLWLR8FTqotIzgd2WYr35D/iF2Q33kvU2Pp64rAZYTlNBSNl1c","layer_level":1},{"id":"0bfb7aaa-5a8f-42c6-a9d6-60845e7015f4","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"触摸输入处理","description":"touch-input-handling","prompt":"创建触摸输入处理的详细技术文档。深入解释触摸事件的处理机制,包括触摸开始、移动、结束和取消事件的捕获与转发。详细说明触摸点标识、多点触控支持和触摸手势识别。文档化触摸事件的坐标系统、压力感应和触摸相位管理。提供具体的代码示例展示如何处理移动端触摸事件、触摸轨迹预测和多点触控的手势合成算法。","parent_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","order":2,"progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/touchflags.js,client/src/touchphase.js,client/src/inputdevice.js","gmt_create":"2026-05-16T12:32:15.7272477+08:00","gmt_modified":"2026-05-16T13:03:24.3223653+08:00","raw_data":"WikiEncrypted:X6OoECXgU7f6wJfEFv+6UehSjBFgSCASaDifKWg09vhGwxIiiAOUYoBoN6wtKnQcSbd7NyzpDsgmccCpMFvhBf/oplzPNkm1CVXWYNCn3ig7BfENO3SdH2AdPBEmCf+nfzmCAXcc0b6en/bPV/J2Vj2SvQ2U/P4u/h8D5kHtKOG2GOoqkQjCwv6OmjnyZzm0dFLwp/BSun2UyJB8imMqhhNwx7HvGAlNUxg1R0kIUYLRmQlbeobLrmnk3M4cz2WsAodWjC5cT0A6G0fvhV7n8hqApSYnf0COAl99sd98332BUxbaQBbGkhE30JRCJXClMvTLXXdBTQGJNRBPlWzfRj78yI9Uh98wgw7+CSHHmhMh+lro0PHCTy6pKhw44rleAgAy7v8KabXWCQvTbCREZQYeGLf+jETX7VLA23N99jI9M8wDvvEe1BLxI8rBLv1Jg3aXWC5zeYUZSDdmJxknrRekWZ5nCDgK6bo7RwQ4SMU2S3oW6VvhhVsj31BuV4G6zYoR5N7Uj4VjNkVwgV8C2VC7Q66AYqpcjDxgWSZo92NSL8vvuHTI8YpJ/H5aEf2RB5G0lsGJRz3E+nZm4Kbhw/AYBNzsdRTVuVEGgOVqxo5HcI6/Jo9jwzg24mw5y8FqHRCzhaecTdR2rod0rPL6+/xSzSgKJgjnv1ICjUPrA2ERFFexFp2CqetXfl5T6vtm6hE4loB2HoOVy2NPfX8zVnwCujUNS9yLXE95fWe5PX/RTm7hWjB5zHYjzk9XyFGWVjpIl00OEGbHdGC4YqyEqUL40CFx+TogW99+S7EB1UmiiOt+6Jz2foqRXhWGUyhuFSJga+922TDL9L6pYRWfPsOv26+FwJ91MdDUCmzvp/eV77WX30d2xHAHTmmRCbFaMBR2RHwRB5JgG12bpSViBCWQ/V1dAVx0cOAZhDrqauJ578A1HbW+RZMg6iem+ZIBD3QaPI64VFgQ0LVcGQIbPe+VM4Oq0bxagjeWlNWbEndoHd7JqOEUyTgp5TuYBjIsN/Z+PlWgpi5XghLf2akxxUfvhKIyETz/ks4X3CcaTj6F4SNRXpiaZHhDV1RRaAzS","layer_level":2},{"id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"信令系统","description":"signaling-system","prompt":"创建信令系统的综合技术文档。详细解释 WebSocket 信令处理器和 HTTP 信令处理器的实现原理和工作机制。深入说明 Offer/Answer 模型的 SDP 协商过程,包括媒体描述信息的交换和处理。文档化 ICE 候选者的收集、交换和处理流程。解释连接组管理机制,包括公共模式和私有模式的实现差异。提供信令消息格式的详细规范,包括 JSON 结构和字段含义。包含错误处理策略和重连机制的实现。提供实际的信令流程示例和调试技巧。","order":3,"progress_status":"completed","dependent_files":"src/class/websockethandler.ts,src/class/httphandler.ts,src/class/offer.ts,src/class/answer.ts,src/class/candidate.ts,src/signaling.ts","gmt_create":"2026-05-16T12:31:02.6510634+08:00","gmt_modified":"2026-05-16T13:25:49.0614137+08:00","raw_data":"WikiEncrypted:wLjCSFFOERUBp4iTLnCPth/jOqDlLBQvgKR2w3kewOZhTFSAWjogNkuhcWsGNz2Tw9dNewVDTA6qpRxnMx/1z0bULkoGA0ku0nvVVg9aU3I41zhgp4FCkEpo7q9+kwmzj18EF7pu626bniIaS+NQ5ogdNU5VBqdNv1snIvgh645LZxKe4nxvpNj93Dw9MzvTs/8U251aTsFn1JYS+L3/+1BDjsfUbwXYKhuAnFe1xIxK/HefUauljIgrWiCurXgWfoX2MEWuaAQyhAXqjiqNeWylq3rY9Y25TEgwaHgrFq7Ur7E4CPZb9gUcYB+vrzzYQpwNCDEkXwS92Yi5foCecVByycBd5dtgQyNLPDNyZCW8W7URrTfgm4Ud0bJdNXGrHkGvY7LiIpPxq9x8qNXeRmnRLaYtLfLwYwcG8JYkwAqeevGt5lNBpw/odAPE77va9LEEEdhMjamFma5s+4JTKB7eg5axMi9vNFX2aYUW32BKMROj2dmMGi2zVeP/onG9GrPj2/H0QyDopz/wwdSqQKMUCxRRe3YNsjbQ1zffb8nUYFhNGHyq0FrIak7xpk0NnxlyAXSc+rBtFMZ6R8KqEzElnblf0g3T9/P4kBjC/tSPa1sCtCQqyw0s8E5Sx4UrnXSpi6bLMIddD6/rFQxrDbtMLBpy5Yrz8fqlPDwStgJVDN3ZotqLten7BbMVFj0tvnVQvz+LuXtlOEFRF7GXUDKATJN8TSuYbKErzDFF8xSnM5uxoOBAgEJTLlGZrgNeKN4pFXVP/TQ6b7WDdNkCQAl8Ccktg/2WEcQD4KjggnD28msDlWPZwWgqYBwnQFkeXIqf9c3h/im14hUTKwDHRf3D1hDzB3smgeHpMkmetraLufAwsMqpECL7CQ5hultFnKXpzyTNu2/3XbWzJFJWd0kVDw7Qca5E5On9YoqAUOsAZQwakpy94yE7uOAVW/r0572QE+dpCOPnoqj9Q2gIp87zNBv5VwkGGJbKRja2uezagmNdVi3gkjMsaO/St3x56/GzVmnAZ2PGWReRko47fgffGRXla3bQQKkHMTCZX12wcnvs1aFtJmRoqjWs2X1nQYK+rydB8zwqDwN6CMLhUA6faImfuwAzBk0D3mkaZvbbucTO3aDFFTpIMjfNKvE7DDi0621qy5Y3OF1alu+4oNFgbpRwJ+9bSf5lzM0jNOOspCpqXmdKYR2aNGitNHLsV6/MnudSUqS6KdyMyPN+c/F7iDOVWvVh8P5DlcP5+hypDspOeIuzJC0OjyDmAx22l+CzurQeVyj5TCBaTFX3M6QVV+mN4PoI86GJtYBRhncm9iqY4wTRNESoBgxrRjB4aAMqPWHjCWfojY5gxNHb6p9VDCHoVDp8AEGIYtMeSYQ="},{"id":"939c76fd-c27f-41fc-aa05-687375faa473","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"信令路由系统","description":"signaling-routing","prompt":"为信令路由系统模块创建详细的技术文档。深入解释信令路由的实现机制,包括 WebSocket 和 HTTP 轮询两种模式的路由处理。详细说明 HTTP 轮询信令处理器的实现,包括会话管理、消息缓存和轮询接口设计。解释信令消息的路由规则、负载均衡和错误恢复机制。提供不同信令模式的选择指南和性能对比。包含路由配置优化和扩展开发的最佳实践。","parent_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","order":3,"progress_status":"completed","dependent_files":"src/signaling.ts,src/class/httphandler.ts","gmt_create":"2026-05-16T12:31:19.7752554+08:00","gmt_modified":"2026-05-16T12:56:42.4264457+08:00","raw_data":"WikiEncrypted:wLjCSFFOERUBp4iTLnCPtiycFSFFMOuIlriI+vrSIf/6Pmna1WcC9yjFQdEuKYviWSxg5fFFzwU6+fTr/SsChkkxY8I9Oq+SnyBkWFX7tw2NCqk4nZAuzByhH5gTo3ysMih2PVh9wS8wF71sPRYo3fCG3vpDkJcGx8dGsBbC/VJhOLxO/6EMBhkXnaO4zOhJhhKJKXFbyQ36BtJqS8PCUNaFp0IHL1SQ1DRAy1rwdjonEwMeohOrAlg2eVi6yvLuLVNcvz1AKPAndcUfLrbPHJF6bwrGvHkHp+KAaN4frXnb0Ew4rH4mMWVQ0bsm+QeacE5OFBq/Tl2x/fua0mBcZoua8SRJkqMR95Gl7aqIrs1bSF39vHl7V3CfkSgIPMg3LWRc76DlTqQVPPwJJAL4r+qgYiZM/cga3kFtF1IhoIfVvQH5eLWmRgj/TearZ2vbw0o+6fwAjIWM1bTW2hTirvPNotqU+xvGYsZohQeor3m/xUedhgZrnr4bVw/WKHiRIf/vJCnSgd37hvYzMzTkpyEJIvPl95PfY+9uMiH77DMnfchkcbQPJR/J7uGb9mXFHcVrOz/nT0Qe7ANfnEMSl8OoYlvSbq542uZE2OneKOy0Z5fg0hYwGWFv++9itdYfyDQpXP5xR02KdEgO2I8OJGaqB67OjUOYPbUCsQcwH3Rb5CfbDbiTEVgnlOOIXdgxwKmddoNJ0xuFu6O/YCptvwD3B+u1Qm24DKuBLiyK8V6Mc+lJ+qZBlvRAhV0a3otNM/7ntO6wIEH+vsQ5TqpcdF6LcZnQvNyqHpnS5PyTMJTOw8oZlXRU4U5Df0eCPI43+KfJzq9/LTp2CQhitg84Hh3OcDm+TFzfnyY11EAzEF+b5nJRCFweSGfNJYUuFd0aY6jn5A5TGu5jaP03DMhOv9tEbHMzRf6eJ6KbpXfeCSdzXV30nJZw+jHyGj9FFwJpEciRQwohEtKAQ0idD8A6k7rag7+0S/BwTQO2WKRIBvuaUQbWEpYZq/e7tIGAZdimt/UP6nvod3BKEfu41irwvw==","layer_level":1},{"id":"c225ba69-033c-432b-88e0-c96cafc612d5","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"视频播放器示例","description":"videoplayer-sample","prompt":"为视频播放器示例创建全面的技术文档。详细介绍该示例如何接收 Unity 渲染的相机图像,并允许从浏览器端操作 Unity 中的相机。深入解释 video-player.js 中的播放器控制逻辑、媒体流处理和用户交互响应。详细说明 gamepadEvents.js 中的游戏手柄事件处理机制,包括输入设备的检测和事件映射。解释 register-events.js 中的事件注册和处理流程。提供完整的使用指南,包括 Public 模式的配置要求、输入设备的使用方法和相机控制的操作说明。包含游戏手柄支持、键盘鼠标控制和触摸设备适配的详细说明。","parent_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","order":3,"progress_status":"completed","dependent_files":"client/public/videoplayer/index.html,client/public/videoplayer/js/video-player.js,client/public/videoplayer/js/gamepadEvents.js,client/public/videoplayer/js/register-events.js,client/public/videoplayer/css/style.css","gmt_create":"2026-05-16T12:31:24.8939968+08:00","gmt_modified":"2026-05-16T12:55:54.794541+08:00","raw_data":"WikiEncrypted:mqJTkneGh5/Ed9h1f4JWJk1EvNY+VNxQO5/nCj67sYRHtBKUQGlJMaD9tyh0sOhYZF/EWh0lknF7q1reanVPGebTMmMlwR3IBUZz3yGYug2sgUVF6xVCZ0pZd6KB3ifOUMF/q8fmJ1fKcs9UstNt0M+As0/LRPXHKv8lK6Khidik0/CW1hUjd+C0Rs8U59DxXJmWYHaTE6zM1JNUbJJInR5/PeyJ9hDLyvOZ7L+wD+EYPRNNuaSd+Yfh8gRInKMjm4DHgDdCYPK7eFw1fNUaLW6wiL/MhwRPwZsJd4lJTkBt/uw8IxAB1RUVxjqyzGP62zLK7DaYYwVd9iR/fGoTeqx1YCZGL00USOAJMxbEgdsQtbYnewa98567zTuDplY4RHMTk61fHH25F9/yo0wWOvdFsQ1tOM5z4u48GDnpoh+scy8nCJfZO4+wQ3i3EJu93QphA6cfXI+Q4TEn48bi1VWoBP4B29X1exQ7HslbN8/14a53SiamwbtMJ9N77gVj8eUE29xcz4PwTv/+3kHWux0lFoDYvvzEE+HQcqSvCF0sY6KK717e9dF5LFDU5DiuM1u8FAsOAVX5djYCGcSS3P/styQCJ77QPN/NfRKq3RPoKZSRrgzz1cKdDWW+lZz5jIeL2FO4MRNt2KEnGctmLAjVvTwjub6Fxl3JVtrsUVOXPaonDsC7jM+DV3fjrKndw3qnSaGaJCuwMxTLYkyrz+msFtQv/FmmqD8bTSHmXekO2JoQ3ReT3ms3NDS95W38kpXgqlnDXkAbZZTxNrOgWvofn3d+htbPiqohFZrTqu3ftYwI5P4QgIu0MqGKEBnqZ7s4SjRWLrlP98SVXTWMi6e5RydoD77pbnsFizG7uw6bcnnagBU1cI7BoTML8/63trq6OQq5XDJMFuIjLuxu5HRdGZbKElUlMtVDJPex8k0blvLLgidNkDtr1eP06O6WQNAKpB2LqjDYimKt2I0ynuufsMELmRX7HOMS5hldzpl8YyHvYZz9b9TRKr/pEx8AGAJosHGx581mcd8XbRfCO+x50th9WvV0S33WoFoRl5FwaWWVWkF6IH7+Kx+rZo7HBpe2ANlg9vA9PUBEaIgVSEdqGqmAqlSBCIMraHeBtEFwDR++3tfWiUbLLO4wCaFy/Lo3AbCOqvPcfV9c8j5aIvMRtwb8+j8r6qkdwfx9mt8V8JPbPXUjm5+l4nfglFO+LhVQEKl/wWhi7ASi2lch6NRXh5ObICsam8YM6kJDuuxPLkmDblt1vbjwo4yFZy57WagAdx4XErm5rAScdEg1bOY2xp4okFZoS/L3hyiYZhNq+WYyahZkCcy0sAK4KnHspQXlJxb6ovf0mTciAkCCkOS1vYCuj6jW0nK2WgOXiyEDbz+w3TLYiOEEp4vnYz7caRoCm86aaM/0mfTy/yXHLlOihVhem8xbTfUBgDaXekl86I2sThry/waERywkCC9UExHwbNZG6RBF7cCuzNsJlJ09H4ZZuTkqjfne5BOWYfmGK4hr7zGR4l0NBtj9gNZkny9geNO6BAPfC74uqjlLsvS/mL1dHd9Yc0kIrcvy36nscwpq6xKe9pY+CCS1j1fP417Y9KvekoIidV1raR+qFA==","layer_level":1},{"id":"38f69d88-cf29-4ea2-8c51-f18ed2a172e6","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"信令路由配置","description":"signaling-routing","prompt":"创建信令路由配置的技术文档。详细解释信令服务器的路由配置机制,包括 WebSocket 和 HTTP 两种信令模式的路由规则。深入说明路由中间件的实现和消息分发逻辑。文档化信令端点的配置选项,包括端口号、SSL 证书和 CORS 设置。解释信令服务器的启动流程和配置参数。提供路由配置的最佳实践和性能优化建议。包含故障排除指南和常见配置问题的解决方案。提供实际的路由配置示例和部署注意事项。","parent_id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","order":3,"progress_status":"completed","dependent_files":"src/signaling.ts,src/index.ts","gmt_create":"2026-05-16T12:31:42.3659688+08:00","gmt_modified":"2026-05-16T12:57:25.6553355+08:00","raw_data":"WikiEncrypted:wLjCSFFOERUBp4iTLnCPtiycFSFFMOuIlriI+vrSIf/6Pmna1WcC9yjFQdEuKYvimK+5GRY6xKTn+Ymv8ErY221K87u36qAUeeJTl5o0bjBlclW6iiGA3gladqsoq2ob5lTxu3RTjIpNr5Eq5p+Yeqs5Nxjtq7d/qwIEmT8E3LwjYfNCJEWrjiqhtIEm4wtaOIjSu1hmCm+Kkcp26ZW7AfXhuZXJKc0DCLhtIjq8uZxrh4dR++FCjD5baVO6fMY4cFwIXLIGla+PztaMShTC/Wi4UHrf261Q8I//+ljNgSULVAW4hrCGttK19yaSHOhueurrR5UFHhDwny8r56JgkTZ5uWc0hOZOSESfCQUF9qLlJwhZObr/ZVhIlown8VkIUc5NS3Ofj9EVE28OSHimZf/h/kBtFSaJ6Qo+/Uon8LDBJTr3eDnOrN0at4xereZDWYlW9TrGdNAje8YmuoVK9jv3sbXYbqnohxqU5GMK6717ZlCVJaVXsO1fi26+vkzlsAMZTJKMGVgMJKLcNcmIA1QQF7vez6vMJuPSwSKWmPgUB0PdhFM6cpjjgXX63VixUdgbz6TbErv5gJon8y3Wk9ZSyIZM1dO5SSYhsJ1JPhsHqfmTWmzd6a9x3RY+3Fd2UpkHjaa5f0AgrSyhiiIbEW8b1XO1RYQ+7yoZ/Qw0Sgp83x31MaFs9rYT/6WBmqKvPnkxgVRsR0cce7bHagWlb9twZYHPYzDpBcTIgZkeu3ZhzFvdJYin2pruIZV1v9I+mhaLwqpWXbayLjob2GEaSyAf2qDY5ytQ5QNerPTEOu6Clhk9mx1uDqL2yRN1T4s8yTPNloO6fhi0B7LwpRj4erjzC+0rrWLL3yafbNEIL4I5aXohAyd3Tnwp6b81luxcu28m+tfHQ1dmk0TPdrieXjg/WM3PAHL70BX7kt3PtTHlcXDfaV7v6UQcxG89ERsP7NFdFg5muRjtnKcSTckRZobeFpByDF/XQ4HazXBwaDSzF3HCw7FI9NU31C0FA6EFJcadk9EBSvLYgwIZBgC3jOIYL1XuzG0nWV8HWqciUw8O73FjSd1BYClqzuWhCre5tKlXGnrTczXytSMlTHPeQJup0Kj+QTZe4K69dK5/Ok9sHVhWfR8W0FrYJafB89nH57SY6FOkorhkTATmP5I1thNm/XCAYSMlmXkgg5/huPM=","layer_level":1},{"id":"341b2b54-3261-4147-8e1a-0f5c46f4d61d","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"SSL/TLS 配置","description":"ssl-tls-configuration","prompt":"创建 SSL/TLS 配置文档。详细说明 SSL 证书的申请流程,包括 Let's Encrypt 免费证书和商业证书的获取方法。提供 OpenSSL 命令生成自签名证书的步骤和注意事项。解释证书格式转换,包括 PEM、DER 和 PKCS#12 格式的相互转换。详细说明 HTTPS 服务器配置,包括 TLS 版本选择、加密套件配置和证书链验证。提供证书自动续期方案,包括 acme.sh 工具使用和定时任务设置。包含安全最佳实践,如 HSTS 头部设置、OCSP Stapling 和前向保密配置。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","order":3,"progress_status":"completed","dependent_files":"server.cert,package.json","gmt_create":"2026-05-16T12:31:50.8657899+08:00","gmt_modified":"2026-05-16T12:56:50.3164864+08:00","raw_data":"WikiEncrypted:mn97d5PlYkt5p4NuEBGlkEIoNXZmfVfgSGyclVKc4S5V5k970qBwyfP8NTnfRNqCaSrKltOgZZTUWo5Te0sPyrA/SAqaDwBYx/UfnX+bVySHsdbF+rSGCwkCZqr5X3nMbfHmCR9d3T9x5wk33zb6hYQSrrr0v/IMEappOq7j4rKJK0bPKPhElF4mLQgyF36oLeLeo8yG2tVO33u31GMIMcZmQU8v1OTsi24rTyiJl64AX7Rj5sD4YMBfl2yDBpU8rK5KcRbfm3jKLEgWcIBtHbxxl54N50G/yZpdzFnegppdq3rQn/kZWF+CDMbVFqVPCUwPSt7jdY/lv4yeuO18j8psj3jBlz1wKI/eldAeOBlPH2z6teFIB7QXVILvIwsHW7fSqRs3E/u9OHDjILl2wACP99g7sr6OWvgm06bV0CM7EObDTII2Z7M48LGbfv011dlIaPQ/NZuBW6sWpo4FX5v4hWlkUw7otzNcfKYEVXnTwvOIvKuJY1i4Ys5X1Zb5CWoOljaTkPJz9NUbMbFp5XKZ1e3aFLfNbxlyBPX/JX6v0QKZjqkms0ni+eROp0q5wFv/r34Lrn+KxWZdNlXrz0oNnxhY2IupwJnFxA7JO6+ufFK08sZ3KN1qm7lM+RyhQcCeqfWJNFBp+bZBC/h3rhPDuXeKp7BINtYtOZsrMZbWCSGEiGWUO9VyiYpA3IrXqjiu1aIPggm5ildB+jj0C9ucQ4590cbuRSjDGq9PtXnDbxo+9BmCGdLMiuRmpZlcFJS4p/LXDW1xrcJqrDCCXbmDtZ+H4aassCdxcAU6XPPuI4UqEBmjtKK/P4czom4D3EV2HI94YpvoKvpsDgMtJ7PcN0yX02zUp+CXCsjd/GRC8zigFwszV1zEG/WtsdBSAJjWv+fWoteOt7qWjja0agaZ/0ThMI68GRM7e2bAseGe2vA7Vo94NBs4W+2o566LQVMfHUMGmSvRNxM4lomM+WIgNR9o7u7xhTzpN5cmNdHRZ2iaC1BDbKL5FHLlgJYTAvSeRDqcFHNXqYjBDEtOc3O8/1uI5jqlUkNYYGoqALlu2Q+rB4Me/oFqlycWZEvOz0/0cWxxrVBJDSf4bT2h1Zv1SbunD3+zQnL2CdCBgbzSPyLs6K/5ESNSNZ3x4N72C+nXyMjq44hWkxkM0y9Pj8Ziq9RWJIzbr+sC0CvrBSg=","layer_level":1},{"id":"4079958b-e9eb-4610-9a7a-8fdec4af747d","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"信令客户端","description":"signaling-client","prompt":"创建信令客户端模块的详细技术文档。深入解释信令通信的实现机制,包括与服务器的连接建立、消息发送和接收处理。详细说明信令协议的设计,包括消息格式、事件类型和状态同步机制。解释 WebSocket 和 HTTP 轮询两种信令模式的实现差异和使用场景。文档化信令客户端的状态管理,包括连接状态监控、重连机制和错误处理策略。提供具体的代码示例展示如何处理信令消息、实现消息队列和调试信令通信问题。","parent_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","order":3,"progress_status":"completed","dependent_files":"client/src/signaling.js","gmt_create":"2026-05-16T12:31:51.4456638+08:00","gmt_modified":"2026-05-16T12:58:11.4562432+08:00","raw_data":"WikiEncrypted:wLjCSFFOERUBp4iTLnCPtkt0lpS0ciKJ3wJy3q7JojvLNYr76zSUqn1jhUYPoi404QbghX4rEOua+iafsvTjfO2lxRDwmLFUXe7GNRNMOmi5xDYLJpX4/xoYgP8vO93j9hlXaopv21OWu8FYuBjziS1ZCnILZkCzLblxOUedfqpQakyS0EezPcHQwOI6r5BRZaXE8iime+rG6mI4jVLp0KkddlELFNZZr7tkxcHAPkk33nuXPuYHcrPsDqaBL953U+0ajhX3mWSInK3KMHAzd645CnarGyPBBpbtdAYLRc4vQR0Ir2IJOEZV53pHVPMY/PhmesZZ/MWuXDVk4s7j+SVqh8JeEt6dB0d2MXmpwexs0lW++g/q9Nng2YDkgNJgEPMl4tMrHEGuSYD+BQecf/hIhqvrBN8Qn/6ycGydYBUwuTOs67l6JyPO7fDNR88eNtRDkMNfghaPFLwvAEUD/Lcxgqr8LTHs4tndAHoZCAUyqg7zmrRS7CUE1yzzwcPkeBo/wg5GeRSCZW+ZY3eoqKG0Jih3qBfSFOvydk0h7QefJZk/WN0xbAzn3xdK5cPHK9zKxivVlXaTJsGBPHNQojL0nguoa/J5bAjAXOSU8fAKDji3v0PR2p+KBffCaL8QrHroyS+2167Ioqtat9EthEQPVqVYHP5xADCATIDJubjPOW9XaAPPBgGvjDRn39jUj5G6w/8ruBldcSg8wRNQXdBIzNRtEgtwQR7C3M6lRRWYwaAnD2Kfjpo54vefvUkVXId1Ecvrg04seLjIfxiHQb0gY77nxTVMYm5/jp4iMrpvErzAZqfFLl47KKJbBVeALHoMP8gihABog4inuMYotTgiCZFw5O3ASDrvkNmcgVllJMy3TxUMfqwnPTtT3QdToWnnqrFzG9gDkhCOKYPPirJ60gHGuZaYcz3bUS4uZaXGP2QfZvABw6xP0aDm7g2pdt9BE/CWaLSxCFbOOOvA3Tki0+Pnp405yy8GCEZYg2h1vBoOK9kUTipfUZokHTOdU6YuMzSC4WvcNshaKaE32nAG5ZFfF0zja2wWHDy2rfyNcugNmDzEwTOkn4raNFxGVPRM8o7o7BVOIvBvepJhU8BXVN0tWyeJEOrJqIrqRZUgSVP3zVVeqwxm7JymS3hAqVaCbn8XB1Z4Ifx0VKZf4IB/JvaAJuLutiIuUNfi3jQ=","layer_level":1},{"id":"7735317a-b747-4d88-9f5f-869465bfb4c0","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"扩展开发","description":"extension-development","prompt":"创建扩展开发指南。详细说明如何添加新的信令消息类型,包括 Offer、Answer、Candidate 类的扩展方法。解释 WebSocketHandler 和 HttpHandler 的扩展机制,包括新消息类型的处理逻辑。提供自定义信令处理器的开发指南,包括消息路由和处理流程。详细说明如何扩展客户端功能,包括新的 WebRTC 功能和用户界面组件。解释插件系统的使用方法和扩展点的设计原则。包含实际的扩展示例和最佳实践。提供版本兼容性和向后兼容性的考虑因素。","parent_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","order":3,"progress_status":"completed","dependent_files":"src/class/websockethandler.ts,src/class/httphandler.ts,src/class/offer.ts,src/class/answer.ts,src/class/candidate.ts","gmt_create":"2026-05-16T12:31:56.6832964+08:00","gmt_modified":"2026-05-16T12:58:26.7949904+08:00","raw_data":"WikiEncrypted:9tFZPEMPWdLFkkE2XbXYMu38+LmF7cxBGtahEOMSIojOTMoaE/0vg7rsG3K5L5EQwVbodPm3HXNNwKwrYurfvJ+Whdjs1TFmLdMTqJ13iAq6M794cXQGGyI7eDk9fbdkBdabDuRWHS25AQgY1VdmuE3VIMhMXkh+S0uFYhuV1CZUgVdOl13cpb4d1RTqJTiRNvrQStAMmnZaoqGgwzJp/CQFyWXf/Kg3SlOyQBuYxUuzamgVcb6SugcuKMfpwUmQ1U9OG8slGEXe0OZRGif7sX/bxZTGBCTwruIjOstvjw/BOMuC3LC2/Xa9iMVE0SUJggA38DanV+Ut5qW7Rx+eemibDl4dwYqjGzHPHu+Ct7LSpwTU32NJW7bNik5lQxD6pr1fyv5OOjyx3swevK2KsG/I+c4C0WYvUH52F8YICYXQiMZQId5xPLw6z8Fu530BM6lzdtwZ+VlUXofN751o8fRW2bXrKUWuw6m0pjagUVvcCkuEpaRUQSrwhCyIPW4/D/GHpoeZIN6zWC3LIvEVIy7MBnfWt5D3e+py5UT04L8bgIbHNqAwtTpSC//d2h0i6c8bciQGcsncX+XNUkHlky2zy9qIx6hUOyJzrjDh1mieQNP5LrOUvyH9FZUrNJrc01dndLTpIbE3hckd11NkxizTzGBPhFeZldJ+YjoFVRegOObgvz+BUxRd0RGudk7ZLx38MVsXhh745riFtELBrbPb5lX+BcaeCLhgkw6C+Ebf+kJu5jCcD/0A29OUpWdhs00NMNBxgI0tpbn9pEl9jIduZ0HqtFZd9UQgIqMJR/swkPjTV0G+ff6zfv80wwZFrK0c2vb6ANhZrNeHct90VDIcPHuJb30p3T55kPFTHyDxpO4HYsoZS2LBJNwam3RPl+bNRZaqbrS34p2fwAsFq/Z3CcIoA8VInQlLna+sVrRBb616AIkOyb+npddsod5fZOLLAtZA/sXlJEgR5DzfCOS4aTcGdu1lNQtyzSzmZprE81mNuLQ1Fe6WIt9tHg4QbhmX7oJ/im2YeMzG+wkNFKRoY3tUhiCObBrRW8GJSdnBlV3JNPILKCyQPK/ODOJb+Nkkfx5HYA+YwvGfjrSeenpXkVCIPjAEh/FQJ4pw7oa06jH+A/51/DIhNG95qRRrJBZQTDZAVsVRM/8Hc9X++5Hnp3xn7QGfiD51A8+CQi7yE0rMauWjynYpVt4f4TPWA8bO+wmexLdUDvmeu4UdcHHAuqhZrQwuFyL4Q+P/bDceC+/T/+iywEN0nnKvFBrc","layer_level":1},{"id":"20b00f21-82ae-4386-a080-a9b41d723288","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"游戏手柄输入处理","description":"gamepad-input-handling","prompt":"创建游戏手柄输入处理的详细技术文档。深入解释游戏手柄事件的处理机制,包括摇杆值、按钮状态和触发器事件的捕获与转发。详细说明游戏手柄识别、设备枚举和状态同步。文档化手柄输入的校准机制、死区处理和输入平滑算法。提供具体的代码示例展示如何处理不同厂商的游戏手柄差异、手柄连接状态监控和输入延迟优化策略。","parent_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","order":3,"progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/gamepadbutton.js,client/src/gamepadhandler.js,client/src/inputdevice.js","gmt_create":"2026-05-16T12:32:15.7277745+08:00","gmt_modified":"2026-05-16T13:26:53.678071+08:00","raw_data":"WikiEncrypted:H1/m9OMG7+2SmVxBZUCnp0NNfrlAKBIDDZwD5OxBvNJc+4zfbGQm9MnykwIpMhoCX/AQVyBiOH4yfE4d9GhqenuAsgjxZxvL9QY+QEJ6H59t74vimBVF/4wHKusFNNIEbZL2TarXeJGCH7nEP34/HemQbXiYgfhPP9zutjo47EcwWLjHS3sAlnz5wyXWtlxxrZN2Yevq+nWuR5SlnH5iOTqiHF6s1NXRr66GU59a71FEGEbeJSgDnLsSkW9p5q7idAi/hA/eqdQPNWcs7PV5MDLGvkZ3XxaoNmVb6/cHXsXNYW9UK7DODeXgwQopDZG5adCGDBqdGnrG55cJCMlnqZzvQOpauZQnslIkts+XJm7+BJ+IE565Zm5i+Jby+7/HnaEf1FJCoCH7LB3OygXKuqOiU08Jxl+BF8iAJl90d1kGujT4f4kJ8VHvXn7Qqet8RHWeq0wz8AoCe7my/xLPq0p0+hZ+flZFEJxaQMGRGsXFtBsCHeKQNTACDFpLfy761iF+kRUkcrWSz1ohoBLloeL15Gw73v44ARyuvpVA5kLxsyX96RcpITzy9i/GVei5QIvWC54ogMcFulM2xPxfEVcGRsszJAr0F3FwhqWslm7VXRp1K5pSWV9SKAvyPt7Y4zSYiX+86F38Ff0/P5pekidlQEb4mvDeVbh5d1ThnPaGwwHNUSYeHqYz7ZUN+1F37vl0a9SMkzCKN+fTj6WcT7Aa7FEK+yTo+ZVsacQju/Ft6PV2jH2kCSjHvhkWa3sFfTB/nhRO8TtIRyy03DtPeMVfNQRRp3IXLSWKuO0wD3OkrkOCLB8+O83DXuYSPOrRjox7ewl6M/1ur3T9Lr+xK0OxpvkcPcxXhyaHoMSa7HLK9zoyNqKSgKIJT7RZ+s0WhjppjqAwGPNmzn+2rs9khQ/CcutGaGjt4p7N9C0CyyWJ1SvyVrZVSo//dXoa/7Qr6fpUNNtlw+mGkmr8QftzkK6j6MNGx+ssjd1Rir681WSo50CIr+yzqs3nHhAZ1K6KxVjYUu/BxutNYp5fgTE26aU0IHORyeb46v5mt9wmxkXaPeSAkrHfQqF2cDWjWA9Vy8pu8nsbJPeEHlDfSAOZx1vQxkue6NbF+m4ZqM41uwKTdmKUN1atJ6BPnzNZ+Lj+","layer_level":2},{"id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"客户端示例","description":"client-examples","prompt":"为客户端示例系统创建全面的使用和开发指南。详细介绍每个示例应用的功能特点和使用场景,包括双向视频通信、单向视频接收、多客户端播放和视频播放器控制。解释每个示例的实现架构和关键技术点,包括 WebRTC 连接建立、媒体流处理和用户界面设计。提供详细的集成指南,说明如何将示例代码作为参考集成到自己的项目中。包含自定义开发的最佳实践和常见问题解决方案。提供实际的使用示例和效果展示。","order":4,"progress_status":"completed","dependent_files":"client/public/index.html,client/public/bidirectional/,client/public/receiver/,client/public/multiplay/,client/public/videoplayer/","gmt_create":"2026-05-16T12:31:02.6510634+08:00","gmt_modified":"2026-05-16T12:43:51.0011753+08:00","raw_data":"WikiEncrypted:kSMJmF88qRkP2ukfVdKPFLqvHzwW0mwq1G+7q2rEMCHZz8OaKjsBrRXYcn9wlh+1ji55PE2jKeRiombDtTIHsF7J1dWbwFRLNGZ+7XZPCs53jcZZY1vrR7NEAlL8erAzga0Ld/jnm1nxHCVI1PTaJtFWG7kp2ur/vJVMjcEz/o7m9UCgmcAabdiPAFuuUyTEg9T8CY1gItf5I621ktg3OEPZq5fEae5SFu4yqcs6o0KR1qy5YaNddlmziZC2VL7v1V6sZeRLt0SMJO9GLydAbh+iQJ4NjijyGU+gwhmHsVsxhPAHru9vu0WDkElCgIVT7WL1zyjmRyt0F2BLRBz9nOf6V7eaXRfs0aKkm5hHNg/E9GbnRsJfqJ+gpto/arjK7yGeubuz+psVUqqzTlRBgUyk3lghJJKPjHR9Gm/KeniZ3rDTVzEcsPHNaoMxYQcIjhCb2CWePMcyz8yrZ9Uq2q+nPyumDkEGrJgvqF6Rl7DskpSJaTzutksMrPe3unMDWLvL2GochpxnfAfiH0bgmB7KPTTMioexaTs+E8c1daR4qnIG31RMl3XldZaD1y5LRWgnnaNStVvRyG51wkc9ZsaaZv/J+pYVGO1E7ZXzpd4d4KsHWVZrKlXJDCXmmvttEk5xpgL4cavRh0r3qsDIxFGoZ5HvBeZ12SBTvgh0quqsEmLB3YBVA7GRpZn23hbueSpCbh4FwjMlN1lMru5ywvZT8fZkB0um3zsJN2o/CM/0JPK99wfjO+yUOTV3fZR0QNEuF9oLuUn2/Urw2uJ8sqhdT6NUGO6DAgQEk8GYAaKuA32Esn2nUJL6XC/Be5pbIHll8Kwrbjm8pqlNjDlYH59n/VoWBlVkGRl+vrfDU8oYze8SB6czojRPZBW+NRL8Lk4I9TJPQzZwm08ddO+yVVo1J/2YafVEDaZvhLk5XufLpMugjdA2krt053ndiQY5SoBM8uPJiQ4NRb0HhEPITNIf6aKFejee6p4NAxkoGo9QFvwHw5JERfTcrTPW/Zj8EHrrRaBRv4ZFZstDsvcILSDODeULFQunQvjAPLyq86GEviUYvSL0LIiNWQ56HEqWJQ6V8D7KQvRdz3Jk7iOgZ4Ck6HQ4LRtLJtg2/E+0wF3ZO+PFFxUWlFqrc1wFtpnSyIgLtzTUmxpo5vXG6eR98uQo+qXJeF+S4e6IXyC39HIGBmBd2KMDjy4xyxWybVF7QIbNmZ3F8QsKkHHirs1wBpenoggBTNfAYqCAjRNV3l+LtPzJ7aNFfRCab1sICVcG/GskbeRe5rL5hNRsdzIvxVWeFrzwT9yLjshxoM4ydGbK6uMU/6f+2HZ1zyJMoMViDGycvJucTHQnhsY5R4cul2BhoJJtc5xv3zh87L4gdYEL6MHF288KsMZIXjU4JgOP"},{"id":"8bc8b2c5-bd3b-470e-8ce3-76f9eda2aef6","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"日志系统","description":"logging-system","prompt":"为日志系统模块创建详细的技术文档。深入解释日志系统的实现和配置,包括日志级别管理、输出格式控制和日志轮转机制。详细说明 LogLevel 枚举的使用,包括 info、warn、error 等级别的区别和应用场景。解释日志输出的目标配置,包括控制台输出、文件记录和远程日志服务。提供日志性能优化建议和调试技巧。包含日志分析工具集成和监控告警的配置方法。","parent_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","order":4,"progress_status":"completed","dependent_files":"src/log.ts","gmt_create":"2026-05-16T12:31:19.7752554+08:00","gmt_modified":"2026-05-16T12:58:50.3583724+08:00","raw_data":"WikiEncrypted:U7R4DE1TfAUvjZuFqogRLnOghdG8YONf1+EXGFfCCKN64XPQEDdUeRHtBVRbgq1RTfu+PHdhhtH3Ub4edjV7OdtoYbLYQJCyNitSWTFM0fdEUd+mw7zMJBnHRCga8f49Wa7p6S5sx/cD/xjLKuHw/MMEsend1r9F91CNPjkZXRSqtapF7L21QSEj6eRJCKf/DqaxF24dZ2wHvsgL/dS05QCsiW05E8zScbzWsNDn2SURhlWnDf1aZEdqxy1NyPRoHKp0sj7PXiKsT8Pa6Gir2zPRsmorI191+17M5F2Vjjqb80WsOTZoIWIPvyYn5vsn5K7CKdbqNeQbQ5b4FkAXO56vgdA9kvhIM451iK1oUFthaJHcDqtOVyyHIs/zhf60O1dN+JFUsy2jlRPfV7DR0MsMZ77lfyVekntxhk+AtAoIcgQhO/zbbiZgjr9CBTsqGYf5asrpARfbOvCaHmA8VpV7HTbQCTme8jWPJ88xrGA4FBQdFCyvVVUELOTsingNBKeizfi+SEX1d8rNDeOYyhhE3Sdq2ZHQjhnWNghrd20gUIPL4KE95lXf3kSR9HCD/Zkr4uCiyv2XkarTVyTzaukfOSUNHFJ3D6AnIuw15PUUwp2pjYz6fJr+DLuggqYC4LPd8sW+xBP5BPlnyVXAsa9PnCCDjb/+HbxafvQXvip1/sJ9WXBPWs2HSQqGRkshZE2ofQnl1LHqIoAPAZj6Hc53lfSy6ilmuVWf73WNDiGevfW+rXZkpu50oobUlf0BdO1sR99LvMgs6yYrfdA+Qfe/wcd2rzJzyI5YY4pz6w08jwJfc3yjHuEZ9+u7Y/Cmlv3qPc7TKkQPusVNPBpDtIvs9/SpALuRrOo9eZg7TPqQIZ98CFIohCjps6W43PPA6yaKLrbWjGjSI9qwJ8yeC/jiC2iZSWoVAJ932dJ5O8HUp/3EXt8eZ8uNB2yWYE+GStkKHmpow2s0i5iq7Lz6AA==","layer_level":1},{"id":"eda098b0-7acb-4d00-9252-973100c3a66b","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"一对一通信示例","description":"onebyone-sample","prompt":"为一对一通信示例创建详细的技术文档。深入解释该示例如何实现点对点的视频通话功能,包括连接建立、媒体协商和通话管理。详细说明整个代码架构,包括 models.js 中的数据模型定义、store.js 中的状态管理和 renderer.js 中的视图渲染逻辑。解释 connect.js 中的连接建立流程和 endcall.js 中的通话结束处理。详细说明聊天消息功能的实现和用户界面的设计。提供完整的开发指南,包括如何扩展功能、自定义界面和集成其他服务。包含代码结构分析、设计模式说明和最佳实践建议。","parent_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","order":4,"progress_status":"completed","dependent_files":"client/public/onebyone/index.html,client/public/onebyone/main.js,client/public/onebyone/connect/connect.js,client/public/onebyone/endcall/endcall.js,client/public/onebyone/chatmessage.js,client/public/onebyone/models.js,client/public/onebyone/renderer.js,client/public/onebyone/store.js,client/public/onebyone/utils.js,client/public/onebyone/knowledge-graph.md,client/public/onebyone/code-structure.md","gmt_create":"2026-05-16T12:31:24.8945342+08:00","gmt_modified":"2026-05-16T13:00:43.7062627+08:00","raw_data":"WikiEncrypted:CLfY7+EUJ9/MJWFLVE2DgNPyLZPK8ABVykd6XvsDXPHI++NznpLVWQM7RG6VxNRfClPD2TLbvvRyzc3iJbbt7MesB76h30TAwnjGM9iK2DaGykrWuxwlKTfdvOOY/oQSj8U6U8vXoa+K/MNIBbvpktRuqC6W9wjK1zrEuv7RZZ7hcm192cU/pqd9MvJaM07QjypazN1IdoXuicQk5XKx1w9om5J3cgv2JvvZbKtnb/vsfE+YXesEOWcoeiEcWbggcj0hf+bvUeD/UK2a/b6Wb/YGG+v/GfMkmwvICjFe3AhBQLmySTjjctkrVzLdPbkWB2+DRkryuwe3GpooQ6aj5ebhuXOMpu18xjRCt4eN4JQzf9VBA5qnWhXPVXzE0QAcftQ8zzffL4Ubh8AhcpkJxTkX0TcFum4dpA7ht41EztFbQr0+fqf0iE9H9Pv1N4qSoevxH2ak87EJ9mQZPfv+HgGOvSwe4wjCoKxVLkQ3P5zkdtc+DIbH4ZNZ5Zl7Ee2xouD9E42ojHUC45M6Uer/W5xJMlF6sTRyUzrSCCzqBqFLLaMlRF9WoWnvh0+ywuXLz0/21JE+7GHEG18EOl2Wndv8Mq3yALJmP1aloAO24KP3cUeNnIdBbNqzAaVOd2ErilqIjjn8sHq3l6MMrAfPrhysAcGkxtY8TjAN4IfCYU34GHuX4Djcz8xDtG0JSOD/wT6hY34MWpSx2pjaKJd5ZaKLihEkMTQUtlORUusLZiMlBwM0gkT/qCCox1URNYsbGmMOg5kTE7v9pjVVwGregwTf8e8DMxFQLO8EgERAf9K1x48plLhEQqHdmkJY8lELbaRaqSpYeVArpfMxYkr4Y7X1YRdvPTb5HJyGecTx7kF7xtTF++hEI+mrP0niJwMLqkzFsk65WegcNjzwR6k4skz8vOKg1BmMffzsmk9vAaCJdCUD+sX2917fznckCbYhjydaEES45nQ7p+//Kln7KGQxg+srx+8iDKhVDdpObCvYtTZoCny19BdSPMKV1YkVB52RKlWtwi7Fw21gbyZ7NrQNOdo8e0aRJg9yiw/5WZsZBBZ6DDHnHvSSMiQjwOIQLn0UULPKm/JmH7Wz9KXOuceseTR8GUlFkCHIYtsDNri8rVSJUUOqT4IqXDftfC7H6y/Qr0VcPlaGm3yanvjMlYaNbcF7T9hGDDiFa+M0gzb8FZTM6j9ZVdZ3lSkbcNDUjl9PCRT1IXVYsKu9zd+DI/SBYcd3u81p4qfm7hd4LBhQ3LcItOr+tIXtFVekRrZDPEUgBZSRtxFMpUP0fzeciS+laqBr4pp6nvJqVF/VPLb0rNksAOBK0KIY2/JxaOO0hUlu7OlMPrptbSJbBfqrgWTQI1jpUfgH0fplLHt1UO5rLB499SRsm4h8U0DBvoRZL91CZ6b0/DvwEvtL6YrzwnUbazhy5RZgpPFTCtuL32TsPTLoivxeAJFwWM6YdduZ563vZ/vKZfsqinT2x3xkHlBSsst/v9TiI9CdZDcMAy9EBZWIXtDduAIM0LsG2VOgp9BvnIi+Ed4qLyX1Sef/c0c0U+GQbwRCb76z/zazaqr+IInIaTztbsP2hdieXo75Pzicwu5w2euuaj9AOoztpAQsy9qlKF2/D+uQPjPw6W4ezB9ER67XrbNLfXr11XFE4nSHs4i6vMAFTw8WeVmB2W8y+58D62Dm3bNA7yfasr95y9f37OEVy9Vy9lSapG+q0x5VVhUhT/DM+c8H/BtPwbBdWv3dPTpYaFWsANU+P8lpgPpDA+TbXXSjRXVKGo6I3TnvVXPeg0Xq9jAEo3jgoh0eQXESJs1iLCd0Z3lvOWlybrfyRci5P4lYD4uS8Rt8","layer_level":1},{"id":"13019cef-b976-46c3-bd7f-63fdc6bbc074","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"性能优化","description":"performance-optimization","prompt":"创建性能优化指南。详细说明内存管理优化,包括垃圾回收调优、内存泄漏检测和进程监控。提供并发处理优化建议,包括连接池配置、线程数调整和异步处理优化。解释资源限制设置,包括文件描述符限制、网络连接限制和 CPU 使用率控制。提供 WebRTC 性能优化技巧,包括编码参数调整、带宽自适应和网络质量监控。包含缓存策略配置,包括静态资源缓存、API 响应缓存和浏览器缓存设置。提供性能监控指标和基准测试方法。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","order":4,"progress_status":"completed","dependent_files":"package.json,tsconfig.json","gmt_create":"2026-05-16T12:31:50.8664338+08:00","gmt_modified":"2026-05-16T13:00:02.448535+08:00","raw_data":"WikiEncrypted:9uOBpMbLX4DyZqW4us3Wm3Q7klXxmeD+JMMoGiSO2oNryWBo1gw9kLkawvxQIW9CASZSiyAjiA/zeT5DwD4S8BhyQl3i/2GHmPDKom0i7oiTbJa1LGjd8ldVICQ4t1T/Mk6wGtkVLp29IgGDGPhAnrF5cGTvJ/LavJoCRTrVRwLFDa2jYGC49sXTiII7TT9BN6BTJJE6eQ8S7M0dSGx7VHKRVvhfJN4G6H4b21o4wK54PqpJUXJPJqquMXbUSFB8t5p42rrAmU8R0tssT3eqxYmhtsLPmlGvHcCAp+yfyGCS6Fz/Iz1EL6qttfi8Rir46RLdA0RixTOTQrXAdGl7Y4ngG2ux1ejyun6bwfS78PuX7psfJfWC4NNINbn5hTzORxy7iwmWZA7PSH6QzF9DEZhNK8twZLegMquOIB8uiGNFIjqDi3NsVemDJeihgYPLxKhdUpUU8RQs0xeRVuOMyWtOHtA8edt/XveDnHiQNSUtxZgMJ+chWrs2lYV1CdyMA7nlt/5X6clQuta5oaoTKttV0kZANylF2M3ZZWXNBvg5tI9BLYMteIEToKpqeAo93ZJguDZHFHKxU5fuqzuY/bhi8n3O5MYbhuDDtHJUUdeVGtXc5+wJGWtfg/rNVHbDHi6EhaPWWgJmCUI/CjIqD6jE0W4ZlwDYMeT/CJ8/iBa9lFNpvjKVE6n9dxAJ2VVZXyPQB2IPCH49p16hmUIm/GRSmN596y//cus38lHDrx5aJ+5ya5OApqIod0qb01EhaRjjVj9/oMEwKyVhm1ilFcjwvphq1gXwSmYAwehaPDSdpWOb+Y50zEzsNICwylTUxDt05Y9iHs8XBCjLAo2vFmOBgqsn9kp5fi84gFWzUktHPZ5QMt2JPNDfa0Drbz25Sq0dp7oCtToJvMV84jU0uStIpED/UHw6G3hnP6XZAn6ObW5TErDCbG0EEo5shkiYNIrGNH3s2OSKfRzQD5UaSUaBwsu/eWOCkFHsYmHdH5GYcaeDPT9naUM9ea9meXUtLhUpa9DW31v+Ikx1aaCY2IiXX0UrimRHQApCF19XBRkdSBUnMRN4QNl2i3WOoboq9kLsVbIKzvPCWrjnlobbGBAf1Dsi4xn0aPIyVzjqU3w0rs5xbhwgN4Yqv5rkrWFMY99ti32vcxDqOFf/R1E++w==","layer_level":1},{"id":"869dd14b-54e9-4010-b1e0-746a3e176bd4","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"实用工具模块","description":"utility-modules","prompt":"创建实用工具模块的详细技术文档。深入解释日志系统的实现,包括日志级别管理、输出格式控制和调试信息记录。详细说明内存辅助工具的功能,包括内存使用监控、垃圾回收优化和内存泄漏检测。解释字符数字转换工具的实现,包括字符编码处理、数字格式化和文本处理功能。文档化指针校正工具的作用,包括坐标变换、屏幕适配和输入精度优化。提供具体的代码示例展示如何使用这些工具模块和集成到实际应用中。","parent_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","order":4,"progress_status":"completed","dependent_files":"client/src/logger.js,client/src/memoryhelper.js,client/src/charnumber.js,client/src/pointercorrect.js","gmt_create":"2026-05-16T12:31:51.4456638+08:00","gmt_modified":"2026-05-16T13:00:05.549879+08:00","raw_data":"WikiEncrypted:SvMc2PRoWqDcMfdzcPf97CpdPzSdkCpiF+wx2oAYPxySiKK4bgyE+H+pWVyMoMy3oTP4JzTIBMfQVWI3Rty0VE2B9lW1WT7fb80Q8GEj73nrjOyGY6tmL6GyS8LS3ty15QLMHh12jQ4tCc/oWj7hN24FVIaAY4jwI336Ee27mZ01fXgofjbc32x7Ya+MnylwMxLE6jBnoHgHD+p3j78aEstA/ZDzmtkdVJlI9Wg08MjviBN1Qou5UWxjSNmJLZk5fWMzzTtBibQmBpoTM41bhRBs8Pl4S+gGkVbU97Yby4lOS854lFkDkM61PGpnF0sf2KeHbUTo3wsuUMN9RJ9gE5j3JIfmXBHTlHet2tGdRFSph2aUmmvV6pOEXgZ+ZW7bYPGS1536vCHLwzmk4qx280rv4PP9tCfPzW9rh1K+kiuPi1agF6YlB3CB/0xYXOLUU26dVkUJJRA12swAc9GYfigqkDIO16prE8Ok5MWNpDG90YZ9F+wsn9quiHEOHVVY9cT4VAymrNzz82ZMCq1aKC42URupAol/8gqkpPu/ujOm5NDZavtu5hrSw5gyv68ko2ypGAdM/bmi5e1snSC4k69nskKqmpHpxR/1Tgq4Sqnw0shJaxp4t7Fk3dXR9JFuXcZhbHhX6a+PBlPB3WE7W9i4rnbGbrls06fueHWmOeH76pkR724+b77pix3T4oETPzwobYw8EoiLooB3ScBmd6yZ8ipS6qEfVxfh04T3hzDL8PKdHsi1jzSfLVrgWzz9solYtlxWT0GcuchMG2uoR6EmSS5tpVZ6XfLQpVaH9ZdBPq/e42oe9j2I2poUh1ErDvNQ9d5gicvlBNZ6lEbDzTLocORduAK29e0Fre57zCPovtnu0Q1pTotY2lEzCb2SB2evoydqmX4CCjTuhcC+jXTft4/QcCP+2uNDOJJo2YhL8l3EPnCiSzthdr5X6XSpSHyVo9rAUczo7hTmLwMHqdLnlDTG9pIBWCgyFLhN7Gq3tnLd/V5Xv3zNxFAV4doOZfkQl0z0EdXdsxdiy0kM/698lnBr8/Iyfk57LDquXbu3OiCs5OAd7H2apwv+hWAQyfyOlUiM4GAQEd7E5/vW0/J8j9ArSeJ2bF4TnUs721aaeNMQTB6uEQ8DPCrxgm85dV2Crn1n5hsR40G6AKtlaYLrOCzT+pnT64ThphW32NWkwyUcFzvno40PfQEWWCkq3ki7QeuQEkMz7bRqv3lpzCAl6ljoKQQppksESPz8nOJBCp9k0xAwY4+OGqJOekq+nIJ2HDk46YeviOLd7FqvMYadmuIVxgMb7IccUZyMa+U=","layer_level":1},{"id":"bd459b28-50c4-4796-8528-69834467fbf7","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"贡献指南","description":"contribution-guidelines","prompt":"创建贡献指南文档。详细说明代码贡献的流程,包括 Fork、Clone、Branch 创建和 Pull Request 提交的步骤。解释分支命名规范和提交信息格式要求。提供代码审查的标准和流程,包括审查清单和反馈处理。详细说明 Issue 的提交规范,包括 Bug 报告和功能请求的模板。解释版本发布流程和变更日志的维护。包含社区行为准则和协作规范。提供新贡献者的入门指导和资源链接。","parent_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","order":4,"progress_status":"completed","dependent_files":"package.json,.gitignore,run.bat","gmt_create":"2026-05-16T12:31:56.6832964+08:00","gmt_modified":"2026-05-16T13:01:26.052069+08:00","raw_data":"WikiEncrypted:BxDZrTl5aGXx1MaECOB3NfFszs6m92oa31EoKqbbUdYxQGfxBZTaO1R6NbCUcPV90mgYYTSi6LqXW9gfQ4sJPh8UNrr5WAuBos0vfA5wRG9w03YlnzX6UWnJ+HjrHH+1sTwmrNaPJAyA7zSxjDqdfLfSITmckq8mKaQXBAcWV2pu3ayhUekqsuCO53G+DdTaazwjDPOdyRm/7p13fQbYVY91PyW7TUUwFRJqnluv+Vj8ZoFcExATF7RIUpn3b49nocYW8CxS76NHDvg1o/xSmBeYPEipKM1h3IG4E+Ja23/M3u2a9wX+qCPzjI2XJwygfGethvlRsb6NdEyw64pDPtn2OGeqDdhx1kGmiNdLZCJn2ritLY288dYXizYJTcLBwMMBH5KIsurRjmAGTm7PfofnduK/i6XmvfCgg7Puu4erDCC2eoxjxO/3Ku1I6sBhsEC57Q9cVn3Fq1fuvtGSTZZczmZjyQd4w5CjrBwl5eF/hMUdM6WL/rTOljO0l6tWbp5l2z+zVgEVxTC6ODScGBmMsO3KEcEqciSlzNEAVdw/uY3RFOQxVFcFPW1m5eCYdG/OANrOgJigerUCboA5avcRoUa6s1/+QRetOVIu0d5f4kHvkQ/YcRpgGIVrDfja+qsNdYzywPKeO64RKop4Q+PW+osN5RxzQrzYkJb64tM03YQYH+7ib0IK7Sd6YGjO6MW6TyyEM6+Z2FrruW/jN84B6YfNv4UPkdMNqCAqs/UNpEo+V4mCLzl6AovUUKiQ9iwz4s+x9gdTdoEeYLcVd7KA8jOVBm88YJyl2rzsBTyF/MM0PcUyUPco3SaEu/p3tJmHnXJfUrG7XB7rXkXLKrHaXXa7Lc/p56RYlyJnNxBHb7fnkUdveyDi25zmPQQdpc/n07TrTGZZOI8JRKd4Ob0eV1OJD4Yu00I/9RoNgkFjkzuu4O1et0xzc6kUhUOfIQDPI/Y3e1lz/9nvAwczz59bhkYHThHRWkI/St/j618=","layer_level":1},{"id":"d80bb134-cf37-44ba-a780-c48b0df202a7","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"输入事件同步","description":"input-event-synchronization","prompt":"创建输入事件同步机制的详细技术文档。深入解释输入事件的时间同步、延迟补偿和状态一致性保证机制。详细说明事件队列管理、时间戳处理和网络传输优化。文档化输入事件的缓冲策略、丢包处理和重排序机制。提供具体的代码示例展示如何实现高精度的时间同步、事件去抖动和跨设备的输入一致性保证。","parent_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","order":4,"progress_status":"completed","dependent_files":"client/src/inputremoting.js,client/src/memoryhelper.js,client/src/inputdevice.js","gmt_create":"2026-05-16T12:32:15.7277745+08:00","gmt_modified":"2026-05-16T13:27:06.2633367+08:00","raw_data":"WikiEncrypted:yvmiCbNZO/j/crebb6wVoysGCnjbAJCqMVyW3FLaQ4q7YGVekx9xEv4+gchGvt8J9bq98fdMmIk6gPkHcweUJWdFa2zVCpYhjUlBPmnikqBR0aVnBVYc50jwUE5XjeajQ5skf2Zmh1iHwE8w9rC5HnJ51J1ecvb6AprhUDBGIg24Sr8le55lMG0Zske2bEWuI5J4I22Idj727LO/Lx27A/OogkVq6G/Je0z7ph08LBxVZ8xZH/CrnHejPVemFRVtpi9mXBsHuOrkX2lx/jayjTfNFNdpG5m1ieEYh3AvI+219Gy6JaVxiFCUst7PjXbCOWUBngNVzTYzAot0RviNiEF2IXquRV33XGS9Usmw+/MMcOFvOul2jgLfa7SoXNy+mgzUiBRcD3/hHCPVLbp5CvKTh2XDErEr7AIIYRtAkcbLkyGQsurG/n0HqEw+rHwmO0sBOJZbxA29rAwTuGJU+HFrhKHSIAUvZzT2asnvi51H2IBUOgc3JopDixpr5T4LsUw4l7M/kNhINaT5QHU9mhlVg4/D/p/2vfD1EHDPZV5nZtUEtDnez2dwEPLiZiszSByT2wrNz9llTjIhThoPB+N5ZOfq3Ah7L3KsIbY18mVzxSbWn+sNnLHbfBeXOGtXOQsx7j6SpCCsnvpAOQMO7xgJtGetkh8ehuS7JvaBSYke1FbhOSln0R4bKQWDQl+TE1UqIOSU5L63hIz8vPbd02Il4C2TpudL4RUcIy3F6Nt/6vqqdNBKopgVsAAYwuy8LxgUIyVk4DNKa6rseoOvQpCLg6oWMFKufwW3YGivT2DV7s3ea7PaKDmapTSN9i5kZ//I+VLjs939S9bkdifQxAk8WHs4ZSXtulYmaFkPXkVjyFdb5peQBTRXRN02C3q9Dol0wCKk6Mig6ngKf1bnV9gKr9TgckmBvlZ1xyvJAb8T8nrW5Q6JCNMZO++VsmbjjVzccolo2rthjb1Fts7VR7vn213T8e4mcDrEzqGvJjTJPLiL7V2WLrxLj1lbN1Gy4y4XNvX9vgnGsQgbrRFAtQ==","layer_level":2},{"id":"85699f5e-ca94-4146-b489-1bd32e25bf31","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"WebRTC 实现","description":"webrtc-implementation","prompt":"创建 WebRTC 实现的详细技术文档。深入解释 PeerConnection 的管理和控制,包括连接建立、媒体协商和连接状态监控。详细说明输入设备远程控制的实现,包括鼠标、键盘和触摸事件的转发机制。解释渲染流处理的工作原理,包括媒体流的接收、解码和显示过程。文档化信令客户端的实现,包括与服务器的通信协议和消息处理。提供性能优化建议和最佳实践。包含具体的代码示例和调试技巧。","order":5,"progress_status":"completed","dependent_files":"client/src/peer.js,client/src/sender.js,client/src/renderstreaming.js,client/src/signaling.js,client/src/inputremoting.js","gmt_create":"2026-05-16T12:31:02.6517011+08:00","gmt_modified":"2026-05-16T13:25:36.8620792+08:00","raw_data":"WikiEncrypted:724B5pLpQC0DQiM7hKx4GcumGzr5QI6DT+VrEHAutsrbZq/9xrLnVRS93YYw7cZ8RvUz4M6eGoplzkU8VxTAnh0Dx4cl1+snh0isRd+8P/Tcek69BG6jkQ6z01wwVA5UYx7wb4utiGDqxWTOS0O9Gr2JLYTjbhlTcV6kavgHnWXdVMTuQd/vHjynJssespzmcdTrrfHuOqIGZLyVDNPpygwVleLXy+GjRKy+hEmKzdz+EA5r0rM9gAFKrDQ2KXRQlxZIxYj2LUchWoeHifblbfgJT8XXiRU+/DuEMV64eBwpyoG8Wh9vWN9w776pHsSnf6Y5CF/jcdYg1xJ46nR63TRPlixn5+mi6iKzPpbCxGgtrHcNeMY5m8vPxBDw8rBDcwLVz0FN+hotMXjVSmK3KzEpuafVzHS39NzwrXGnAt8UVzXJGbUy4Cc6uU9NoR/I6zYlrgHesLKJEtP8tY8FkMyg6bVzxpz/WWvugrx0S+aVSioPYie0iCPR2MYVp0bDi1qBplG0BNo/sPp5/zxIyXrm+yHnlHrTSS4fd77E/sOusBmAk36WwnyLv2RA87hC3rEx/b/aOLMR8Gq592kJBCRGL2LX2WMlOCOJ1LnOZ8gwbGf8eVOSKq2J41eNejYWICVcFqabBmZxuzQLJw/p+MsyQodZKoqRODtt8kvvsspFCSSIpsSFI6VQUGiyD/6mdMEfDlQwVyCHuFYEXvgwDDPSCAQB6I7FKse8xxHk7ViUGtefrkm/+cbsweo97FtpUTKDpphQjV19gl2R6I8ANBTB/DclC+aaFh3Td42bkgi1PLlK9Tdhosfjg5PPft3GGgtNAGMhlt7Sry72oGb/DRJnYawjU7pXaFYw2KivdNgDLfgM8vdBR1rYe1jwuqA9rJr5nHaB4hZzYdDhxtcJvBq2UNLrOT48k0EbpoT8lO4kbY4PrD6zkZUWl1GX9BZ7MKQWlzccxhZYtFY1x5tDBuvp8QgKwpMqT9vMxji7xW7Ug4ktV8MuAA54MtQMcrqZGP9q5omN02JoMORPZyDVoaCZFeVdZaeI0w1S24vNrdz0fOCCJMp6bWSFsH/YR6n/XdxE6e4Ww3KFcd915MoYOrO0lKQKePDSq3rrGFeIWbbirjMpr+wy4YuoUZkVjB7RXpQsknH4xOTLAQMZIIsxIAQVOzzc6VS7ikCFI7raLlHI9iHSS1aRHpqV184UTlWLeWrvP8AT9l1jFgmVmvBUkd/Vj6jZdcWI+ExvesLUB4eHwUgWqZlR98Thf2NEJaMcfmtHfEFp8x07FiNMi1ztwc2F3fJGWeSFUiierQdqa6JT+5mVuvgq1SWlBc5diU3nV+Yvvxj8GvV8n8MBkN2tgg=="},{"id":"a6f74331-cf80-4cd5-81ac-001111c93597","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"监控与日志","description":"monitoring-logging","prompt":"创建监控与日志配置指南。详细说明日志系统的配置,包括日志级别设置、输出格式和轮转策略。提供性能监控指标定义,包括连接数统计、内存使用情况、请求响应时间和错误率监控。解释分布式追踪配置,包括请求链路跟踪和性能瓶颈定位。提供告警规则设置,包括阈值配置、通知渠道和故障恢复机制。详细说明监控工具集成,包括 Prometheus、Grafana 和 ELK Stack 的配置。包含日志分析和故障诊断方法,提供常见问题的监控解决方案。","parent_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","order":5,"progress_status":"completed","dependent_files":"package.json,src/log.ts","gmt_create":"2026-05-16T12:31:50.8664338+08:00","gmt_modified":"2026-05-16T13:01:48.8163447+08:00","raw_data":"WikiEncrypted:HL3VqGjXq8A3aGeLxAjVPg+lnGgkT5PNghnzp51sgLDjuJwvzPZp6KDp64sXTqk/5Kv+l8CP0s93FbLMTArkben8wsJNnypQ0lBY5p+a1+mhy5V5Zg7ghkR+YHd2K8eNa3VSKiYk2M9/2t+isdMarHg6jD6LtoIFW43prXRaJTS2zLbBEM/bwmuv8CHGWgF2akmTQOIWWbWbax5caFTKffvOaRtoz+lbzeo49ZFBsz4V2LfK8WG6fZgnbOO3QrQdHJGII8mWB244e62hD9qgrorNANTEpEXcJf4R+18neVFMLbYR/BXM31YkrArQ55t8y/2g3uMrOrrDCx3Zp4KScP1zepFaze6BEA3A5Ge6xO4Edy+rmRHQ1l48xwk0cf+ygK5109xZ2Kz2/pbRkyYxp3oephMXUSEoexKx1Qcl/3Uu7SLGvX21etSEGwjZcJxP0vkxkavjxJBvU10PlZQZ3vYbBxYn2+gtLwPGhzqIv5r8bFfnE6E5on4vICrK6nWgg6B5B41AwdDl5RqZdpDIU3QmkwwT7ulGC6Cqhk3RQSahKZTHjpP/crO4tuitBbY1RbWBI5N5HrPckh3SdQYTd/E6tF0otIu/UVONRU+QlR1t90kwwE8zMemeqavb0oZ5n8bkZx6Umlu0NfmPx0rqOKES+Q5rrB4d+Jv/gAcGgfaa1xBaS1QIgT+s2UZ9Hpbjcs3X+ixhB81AKaWqqTWrkZfS6RwAbrXmaxtJhgoDuZ/ZJd4yFE8Kc5Bpzrs+ekiaSEeZSBmQqQZS4BfAUAxBYzYstUbbTxdmbp332mMY7O0VjYAyBjDzAeyW6ZRZ80sC/AEv33B18VqJkOYP1rZVUku66FED398I8Y9ys9UzdNAX8rWd+QQ394vs9QrVtRiUPfXY5fofzokF7jmojX4E1dA7WVve71JqqizamxDm2WymQadfUHDCZrCxo9s/uPfitvae4VsvPLt2HqsS8t0YUU8quynKq4NrcTeqD7Phc9d76ELCwioxDM8xiPkZ2dIxcP2dCenNCjMaldNOcnXJHGwEl9pZ/6TJrto/rFGYSCUO1mPD5ex0DdPpX9kYnUD3FOg69ueIuB+7CsouTr9lVK9RCT3bXPWMUuujUqBsG9v0uCKDgLfOsdW/5lJylDBZ/crvNOTM9LZB3WvkMjr6tL15BRBXxp90Zhqyf5KGxrvFC//3V3cF/ZxcZrndGGV5kgo/x/5pJNrtszp4aa62eOkhePgLl4lO5u3UjNByUNY=","layer_level":1},{"id":"1b647b21-5a93-48a7-8c85-e3bbc4fbab14","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"API 参考","description":"api-reference","prompt":"创建完整的 API 参考文档。详细记录 WebSocket API 接口规范,包括连接建立、消息格式、事件类型和实时交互模式。文档化 HTTP 轮询 API 的端点规范,包括请求/响应格式、状态码和错误处理。提供 Swagger 自动生成的 API 文档链接和使用说明。详细说明信令消息的数据结构,包括 Offer、Answer、Candidate 等消息类型的字段定义和使用场景。包含完整的错误代码列表和处理指南。提供 API 使用示例和集成代码模板。","order":6,"progress_status":"completed","dependent_files":"src/class/websockethandler.ts,src/class/httphandler.ts,src/swagger.ts,src/服务端接口与WebSocket消息类型.md","gmt_create":"2026-05-16T12:31:02.6517011+08:00","gmt_modified":"2026-05-16T12:43:54.6959309+08:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg+WPNa2UHH7yP2PPjE4/OPk+72w1ikmb9n8XHEjg7JgRB04jwHzq1JJdEIKGb9MUa5iAiLpvmvefUPAejNoq6E038vrKSFkfqb4ggKpSJ6UoHrxWGDmLCGRCc8SwTFRjLHUBtrcF+yb+5uMtGW2TuOSPnlw7/8kM8JaE3k1fah4MMpinLARGZDSIjU0fDn+7GrILvHH6yXkXYl4zvHmaqr2leZ4rD7MkzL4e52xbmJLmeg96+GTdX2DHmT+ghOI2nRbrLxtAZteztaw45bNesJb99DQ4P4355cfapswgf+EtG1n3yol2bqpORXXSEIChIaRiAQjFKLTY2cJB6Lrc9Bqj5ENuAGc256MRMM6oAilETokoW3/ixNRkHPHK67ecG44JFkIpvSx6ayAkylG5dELeLFY28kPygnMykmg8DBjl6W12ws7OXnvD5gp6wLJGDnI1jW6ebba2kz+bkP+gddRFv50ACoq/kSsUYfwv+rAV65EQjIAiO9KG57v8feRS5qHyyamflAJfPwbg1sqsI0gS2dHav7PBr8to2AvIEQ/6ZsnCUFwoMXE7PCKpM54XVowdNgCvFN/5Xt4sSZ7pBC/JS6BYIRv5DAGwr59xOjzeE8g0QzLkQUffJ1GMqlfOW5SkVk52KEfjwTN9LVl6AnToQL+/Va/JdU0nFTXhr/fPyyw432m7dQR0e5LUnQ6F7Q2NRM1DooCOU/OlYDXwbHTL0XcOO8tEaupMbHLDauLrWmYiofuaBsFHlG5rm7tVx13PkeAmk+8DiSb8ydPUp/22R6NpcL5wFH4gfgTDxy+n+FX+3sbqZrVdJQcq7j+GqvVIT2+zZFLA0RMjN3fx+ReBECDEeu9EeUBS6p7936KkjNcF0fd05eRYQVsMtw4+j9kjm+XL91wU5sUt9m9NkqIbccNSaW6YBgvrW+Y3kzaAHUDIE1BmuCE8VGkX3Nm4C/qVbJqkRRHnwnFzLo8PCCOhpslEq7HfcydjS1xOFxT1cxPcehTA0q70oYtHN73LZIZCDEBiSkFeiiRPk/VlnynayZ1FKw+P9RtJ1dTT0bSWmk4JSp9K8aiWwM9JqqIb+lZLA8GogpjaMp26A7qJhH/5CeP775UbTwgYzgGdzQm3gkyVsoIkiuuqk7ZgrXnwTijI3lW4aOf56ev+sDNT5Lo="},{"id":"409a593a-5e33-4a86-b7c9-73ed92e79e8d","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"测试框架","description":"testing-framework","prompt":"创建测试框架的详细使用指南。解释项目的测试策略和架构,包括单元测试、集成测试和端到端测试的组织结构。详细说明 Jest 测试框架的配置和使用方法,包括测试环境设置和模拟对象的创建。提供客户端测试和服务器端测试的具体示例,包括 WebRTC 功能测试和信令处理测试。解释测试覆盖率的要求和报告生成。包含测试最佳实践和调试技巧。提供测试用例编写指南和代码示例。","order":7,"progress_status":"completed","dependent_files":"client/test/,test/,jest.config.js,client/jest.setup.js","gmt_create":"2026-05-16T12:31:02.6517011+08:00","gmt_modified":"2026-05-16T12:44:55.5671034+08:00","raw_data":"WikiEncrypted:a51tw9+B5Xez88YuZqi4cFcpX65Vd5rNV40o5oWZUs7Uec+vke5jBxcenYNTAliPZ4or3HDEuuvC5uVQBD6NfEz01mopjXI9TDQk2Hy3lR2OD7lKT9BMdQyhQRLTlkhRpPb7eH5HoiSesGvqTE8CLxh5FnCJQEGOI8oC7vBmVeo1PzmcuGaTUwXoZQQrrUOcdaplqN2RQY5v/5HSEU/328MmhelT+GbT4vEeYtbfd1Kt8Vfcn2tflc9vJPb7yy82uGHflWnnLK2t9oPrILRdTk2ukiBS5KtASLF/Jz0ZK0VcvGh+th2cFVixxy3BPHyxOs313Zt6Ly84o0aeqp64FHc79XgLCuph+qj8F8KnVSPlEXKE3OgD+dfHK87LyOAgMNhTMav8YG79VM6KKo4xSUoq6Uyf+e1+xgDu0iHHglWYXWgiS8mbOZ/CJD24ypn98z/i7ytO0HOCGqUh+CsDUnbV7lY0iSbJTCaFXgh8W53PpjA/37eAHj8jmORMTMc+9UGfrXa2LspKUJvx+dRR/9J/0WpiigJTFns5KDvfmRXKGOlR0F/87PCCx8YzO8HltS0+rVlAlbs2GSEpHcVWnYhrkjlH6qepKq7z/VwXwA28UWPiBMr0KnSNv+O8z27Y4GKfwp9KFkrJQ6Iwb4l+FpOW5aq/RRhdMZklpsWWWhKMrf7L5+7yMW338YZQGOPNwQkXpjFWFdgXQOdt4YEIieGea01v0fAVteC4wc1RFolHFPNKgtCbtsTlgip5eUbqlQRZm0d+cjtoQIiJJahxCaLPgbXv7Jdc/5TI5tv2rIlubpNeDfPqkTuX9V0h3mRoib95w8H3Ll8t2j7yP3KRYaj9AlLEV0NOM2HhPr1UE9ydpf4ejzLEEY7LcJxrFbPLcolZP8uihhKREOM3i8fKzguvZRLSxnPQQy7oxU19HLBfQfF57DGHP0AZzjNq0nb3oxX3IJv6VHHNtA4xw2xPwfX92chmymAKcGzFUZgShyWBNJuzK/WmZexdHaICYqqahnNzSMsiA/jFg3dtgQsfXjy931ffhMmJOwYCeK6/OwzDDE8CbWdafIaWzujKPqgHKv9OHg9Ae5DRp/ElftTBMIDxJtV7AgP54mcwNgcihgA="},{"id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"部署指南","description":"deployment-guide","prompt":"创建全面的部署指南。详细说明生产环境的配置要求,包括 Node.js 版本、系统资源和网络配置。提供 Docker 容器化部署方案和 Kubernetes 部署配置。解释反向代理的设置,包括 Nginx 和 Apache 的配置示例。详细说明 SSL/TLS 证书的申请和配置流程。提供性能优化建议,包括内存管理、并发处理和资源限制。包含监控和日志配置指南,以及故障排除和维护操作。提供自动化部署脚本和 CI/CD 集成方案。","order":8,"progress_status":"completed","dependent_files":"package.json,run.bat,.eslintrc.cjs,tsconfig.json","gmt_create":"2026-05-16T12:31:02.6517011+08:00","gmt_modified":"2026-05-16T12:45:05.4964458+08:00","raw_data":"WikiEncrypted:0IKfLNOWe9mZfG1jVts3wxq1Ie83+Lf6EMuycQSN7s3NFV5ooa3Scq2B9C67gTKq2J61WmIo8uwzopEI3o+rx08GVbGNcRuSVbTF7Ivc0QkpRO98cA0m2Tj2unPHoGDrHAOphV1rOGnXW9WU+C/Ijm9/APC3fcJOXQrIomhJ4Bv5vEMx08MhtLC0GYk5jaksVtAzpo1nxoHeh6XvfA/3tTeTMvh1bGDrzpZrJd7HYSw03I3DyHmm2Ybjt/CCOvqrvBXqrEEEjzmbCRJzfN4sBTeEqtGcZh4MMGdj6ph0EV/N+0ZsClk3ur0F7d2vTSQ4617E+5XEEon0MkqFmYR9RQF83hM2dIg+2K/RJM+4w/xxsa+Lfq/9Sf6V/8sNoW/PtkQvgbpXozACOjmKIx5zTvK42KM+KMnCT8+X2vLQhMQ5GI7YuthP4fS+V3fCS2ueQmootoZfzM03/SQ3FjIIHOzchDlZYbPt+6JZAVY7JH2/D3w1qLQ7cSK76AMpXy4wXj9BYQ70SpY1d/EU5FrxlJMPkfLlwComDTIV1WU15hlEBj4/cctH9FnIcupLViZi67fsu/lSiPcdNMVDnCZrqlzooy2EtLcmJ9XNTEhXUlwtwoMgMEKD5mN7+3nEmJvfe1x/Ay5Lhk/9AEa9sPB8VjQ9ylNyJurPOngECozRs51m9MOf+/6/FHjOFgPOx1M439ZBFmSxHEzBBR3xhPCKTNfuq2rNblEYAOuVD+gNXW9v/QSrYWpPonpNd6W1Y/z6NrXcbVb7LODADfDKfWDrM5N8U8UJs2paSxR38yMV/yIn1wthTNk5dzKZcG+UMdDQbEARqQ9GyKeoBBYSAqwrGIBO2PDlPkjlNqXSiiDsM2zEdii7Bqxv8Jlxu01BgzbGOsJcFZq6WmS//2YeOXIPWzGNAqKWky14pX6lUmzMpIaYF8tF6tAn9Qonknd1LBZtl9VKFMGIGR6viHFykUdlV5IptUp0VWXIRDhrhAaapLyNyV6vfemMsVjEEWH4RddCsu8J3cD+LB9JfL/5ivke+2/VT/5Ebgs8RErWB2xChDRy+uWpGmD4XnjiPNpD9oZGRsv+hSED21TUthmJsj48C+evRLHoVCmdZcu5GySoGUCJzs/2FXI4kPvzKarUIwPbRQTCN2F81zUwZl3/Ql8njw=="},{"id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"开发指南","description":"development-guide","prompt":"创建开发指南文档。详细说明开发环境的搭建步骤,包括 Node.js、TypeScript 和相关工具的安装配置。解释项目的代码规范和编码标准,包括 ESLint 配置和代码风格要求。提供调试技巧和开发工具的使用方法。详细说明扩展开发的机制,包括新功能模块的添加和现有功能的修改。包含版本管理、分支策略和发布流程的说明。提供贡献指南和代码审查标准。包含常见开发问题的解决方案和最佳实践。","order":9,"progress_status":"completed","dependent_files":"package.json,.eslintrc.cjs,tsconfig.json,client/.eslintrc.json","gmt_create":"2026-05-16T12:31:02.6517011+08:00","gmt_modified":"2026-05-16T12:44:50.9401085+08:00","raw_data":"WikiEncrypted:F3QgleoEfoy16cQggYe9C/ucQxiwh0okVA48AmODs5RKNS8ZgNngqmnHSFcG/1UaJxx+3dUn+EkMTpYUsOg40meGzJJt+1pqaKGkjKwpY9nep5VJX+SDuGY1/hSgRvDtqXHA0uQYww7cu5egOEOd5rPrcHxcVZP5YPUiuh7Jt5OqF8LxXqnRjscgzf8EaTfv5lnlYzabZtYO2f0OQRRRSmAT8238c4azzKfnPfTkEegoCJLryB8nbeN36998riCB5h32Q8xNubpZU0PBBn66ahGYB0Gnjh73Yii8XfjmQQVdAR8qmIUTavNopBn8DpK3jlddaq7xrCxs2X2e7rgOsbGGOWCA+BsTRYBkSisKceMglNQIArcohEJLPndeqjTj5NxWVnB5uCPkXaz+lb7iJ7qy3ze+sUbkceiRDC1SVi7i7Gd7XxhRTXkZ9UJHPqGDj8FOumBP3uyjglCPLJvrG2t8dE0kBO4C0dG+gKogHcXcBPBMn7NrZ7dpPZMM0c6uGUVAZbTPRDXzZg4GeH27NoRDmRx1pKtsCOoPsF7w4XENprdxrsmaRgOH5omQoQ98dKM//4jGz4iryP4ozoltYgbKkyek0BjArqlYR3SemZq8T5QniHw1H2vBO8UbMUmLAJ4KIgQ+AhW4WmssnggOG8ik8MzV1ukwRruSBOdATK7053uawi5SgF+07FDa/wnU8nbp+PBMQ4YFnTc8+GnDTfoy1ikCgNCyCXt3YOb9bH0qmGgJsksMzWvl89ehb43fAXNoMTpaUIB5zSonFZBAJV9CpN7yqdwQDffmYRvhe/63vgmzsYHJpRijagRl+0PPgVciz0Demf3tmwL4I14xvRfyYvwnmMnphXZr9xery8Uic8D2w0l6oxZphNYLC4Ra+gCpFRsQiCL2XGKYexNYEpa76PwQwikPwaETQJhM+eP4UxDB68kbQqZlTOWx5V+7F8opDl5M3yKOHKDfqnJS5G5Pt6o9omWovile/KI8rDOhdovk9kYnn6g4F8f4aGesOpAvCj6hUzXwWhLlXCXeP+EilC9tYo47nehZx2v3NfuNWhyRqHAdDdT7TRXrZ8Y+zdysipiuWnqZnPmssv0SFPpQQWDC1hkqk7chzCYt0mbuGNb4TLBXqnUAq7IQt32OdG3VqWYLAIZq4rZAYErDVLeuYw7QUbcmhng4iU63I2s="}],"wiki_items":[{"catalog_id":"ab3ffc79-b32f-4ce9-9e92-122cae33eaae","title":"快速开始","description":"getting-started","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"06bed196-5cca-45ae-9359-45acf127aed1","gmt_create":"2026-05-16T12:33:44.260369+08:00","gmt_modified":"2026-05-16T12:33:44.2661749+08:00"},{"catalog_id":"a9dcd690-f864-48f3-8b00-ab83d8beef13","title":"项目概述","description":"project-overview","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"ca3cbda1-a534-44c2-a8c3-89d6ee536e3f","gmt_create":"2026-05-16T12:34:31.670873+08:00","gmt_modified":"2026-05-16T12:34:31.6762069+08:00"},{"catalog_id":"14e70c29-58bc-4fa6-9655-abd66f3b0fbb","title":"服务器核心","description":"server-core","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"61d25281-9508-46b0-b5f5-e98340a424b2","gmt_create":"2026-05-16T12:34:45.9352915+08:00","gmt_modified":"2026-05-16T12:34:45.9414399+08:00"},{"catalog_id":"ca381b87-b639-48b1-b436-cf9ebe93ba21","title":"客户端示例","description":"client-examples","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d33fe06c-8396-47dc-90b3-e6799315126d","gmt_create":"2026-05-16T12:43:50.9953118+08:00","gmt_modified":"2026-05-16T12:43:51.0011753+08:00"},{"catalog_id":"1b647b21-5a93-48a7-8c85-e3bbc4fbab14","title":"API 参考","description":"api-reference","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"39c95779-0da7-42c5-b88c-30ef91e0a14d","gmt_create":"2026-05-16T12:43:54.690081+08:00","gmt_modified":"2026-05-16T12:43:54.6959309+08:00"},{"catalog_id":"f36932c0-be78-46a7-bfd3-b0b5350b47cd","title":"开发指南","description":"development-guide","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d4d5d7d1-e282-4f68-ae3f-fb6945f659eb","gmt_create":"2026-05-16T12:44:50.9366144+08:00","gmt_modified":"2026-05-16T12:44:50.9401085+08:00"},{"catalog_id":"409a593a-5e33-4a86-b7c9-73ed92e79e8d","title":"测试框架","description":"testing-framework","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"9c1de659-6b46-40e3-8f35-9d5dc36a1571","gmt_create":"2026-05-16T12:44:55.562807+08:00","gmt_modified":"2026-05-16T12:44:55.5671034+08:00"},{"catalog_id":"f3b1757a-3db0-4f32-aad5-c7e969de4ac8","title":"部署指南","description":"deployment-guide","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"8f2b9df1-403e-4f2c-8a40-75a3a24f6fd0","gmt_create":"2026-05-16T12:45:05.4926356+08:00","gmt_modified":"2026-05-16T12:45:05.4964458+08:00"},{"catalog_id":"5d349e63-8143-47c8-a4d8-9abf775836a0","title":"服务器入口点","description":"server-entrypoint","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"a18fb879-c53d-45f7-a0e6-65518ead784f","gmt_create":"2026-05-16T12:46:18.1791845+08:00","gmt_modified":"2026-05-16T12:46:18.1852693+08:00"},{"catalog_id":"a4cc8c7f-7b51-446f-a7e8-f4c4cbca61af","title":"双向通信示例","description":"bidirectional-sample","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"4cea0b6d-9c76-4625-9ecf-a7e8ab8514a8","gmt_create":"2026-05-16T12:46:36.1646167+08:00","gmt_modified":"2026-05-16T12:46:36.1702033+08:00"},{"catalog_id":"0b227205-af0d-4e95-a18b-9d354af01ac1","title":"WebSocket 信令处理器","description":"websocket-handler","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"0128328c-d6c1-447d-aeaf-99be20c6fbe1","gmt_create":"2026-05-16T12:47:17.6544436+08:00","gmt_modified":"2026-05-16T12:47:17.6601811+08:00"},{"catalog_id":"5ef4dc8a-3a84-4e7e-a5f7-40db73889380","title":"环境配置","description":"environment-setup","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"7de21301-1800-46c4-9e90-252230ab0880","gmt_create":"2026-05-16T12:47:18.3417045+08:00","gmt_modified":"2026-05-16T12:47:18.3467186+08:00"},{"catalog_id":"20805460-563b-4af7-8279-1cf55b0c7a90","title":"PeerConnection 管理","description":"peer-connection-management","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"411dc0f6-de65-4195-be76-dc48174538e0","gmt_create":"2026-05-16T12:48:19.7383099+08:00","gmt_modified":"2026-05-16T12:48:19.7440884+08:00"},{"catalog_id":"73389b15-3341-4577-a7f8-93a58709c76f","title":"开发环境搭建","description":"environment-setup","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"8a8dc12e-8f1a-43db-b330-96dd3f8c56b3","gmt_create":"2026-05-16T12:48:27.5086668+08:00","gmt_modified":"2026-05-16T12:48:27.5144309+08:00"},{"catalog_id":"eca2b26d-d22e-43d2-8e65-b238a269789d","title":"HTTP 服务器配置","description":"http-server","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"1b4157ca-4c87-461f-bb56-051340bbca1e","gmt_create":"2026-05-16T12:48:31.5510132+08:00","gmt_modified":"2026-05-16T12:48:31.5551909+08:00"},{"catalog_id":"482a84ec-9e84-4271-ac38-8ea5dfe61e9e","title":"HTTP 信令处理器","description":"http-handler","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"e99c777e-850d-4ada-88c6-72e6585c5be2","gmt_create":"2026-05-16T12:50:09.5817719+08:00","gmt_modified":"2026-05-16T12:50:09.5864059+08:00"},{"catalog_id":"68e75bda-0f61-404b-8038-89345a43e067","title":"接收端示例","description":"receiver-sample","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"848b8177-5da0-4c80-b1b2-0dfadad67e2e","gmt_create":"2026-05-16T12:50:18.4475878+08:00","gmt_modified":"2026-05-16T12:50:18.4512043+08:00"},{"catalog_id":"bffb854e-14ea-4aa3-8c58-bbb08bef5c9f","title":"容器化部署","description":"containerization","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"656adbc4-c074-411d-8c5e-ba6611bf599d","gmt_create":"2026-05-16T12:50:20.865896+08:00","gmt_modified":"2026-05-16T12:50:20.8690039+08:00"},{"catalog_id":"d532c7ba-1b0c-43f0-8f5b-1741ca9f7b91","title":"代码规范与质量","description":"code-standards","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"2c75e3e7-eeb6-4356-9355-00277b33c568","gmt_create":"2026-05-16T12:51:21.1510072+08:00","gmt_modified":"2026-05-16T12:51:21.1562654+08:00"},{"catalog_id":"3ad75da2-7ef6-4c9c-90ef-4b9b5adb9d39","title":"WebSocket 服务器","description":"websocket-server","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"87689515-cccf-4c24-9817-beb105a160ad","gmt_create":"2026-05-16T12:51:39.8628595+08:00","gmt_modified":"2026-05-16T12:51:39.8700061+08:00"},{"catalog_id":"b255a63b-cf59-411c-ba5e-f4f6c9a94848","title":"输入设备控制","description":"input-device-control","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"7ff7c770-eec8-49dd-afda-7dc0b0e25487","gmt_create":"2026-05-16T12:52:41.7301828+08:00","gmt_modified":"2026-05-16T12:52:41.7386979+08:00"},{"catalog_id":"16e0345a-01a0-42ac-9d58-6acd773ccd7a","title":"多播放示例","description":"multiplay-sample","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"53d99faa-d1e3-42be-8474-c977db3da42c","gmt_create":"2026-05-16T12:52:56.4834411+08:00","gmt_modified":"2026-05-16T12:52:56.4881619+08:00"},{"catalog_id":"bca5c096-0c2c-4f80-a594-4e3b0a2e1a51","title":"信令消息对象","description":"signaling-messages","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"96a1ec75-8efd-4372-9986-cc7310e56c8b","gmt_create":"2026-05-16T12:53:29.6045337+08:00","gmt_modified":"2026-05-16T12:53:29.6108452+08:00"},{"catalog_id":"b26e6ce5-8068-45e0-afad-aa894dff7bff","title":"反向代理配置","description":"reverse-proxy","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d4fd3a89-ae04-4f08-95e7-4ed903b28c49","gmt_create":"2026-05-16T12:54:12.2843439+08:00","gmt_modified":"2026-05-16T12:54:12.2895983+08:00"},{"catalog_id":"fb0e54f9-8ba9-427a-a51d-0e20ee6d7fd6","title":"渲染流处理","description":"render-streaming","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"df958a5a-4c42-4aa4-99df-36618e31f4de","gmt_create":"2026-05-16T12:54:20.8591772+08:00","gmt_modified":"2026-05-16T12:54:20.8643932+08:00"},{"catalog_id":"f4c8bc1c-7182-4212-a6f0-5ce1ce114cc4","title":"调试与测试","description":"debugging-testing","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"bd5891a7-c453-4ada-b8ea-30fb4aaf7a1a","gmt_create":"2026-05-16T12:55:22.1415062+08:00","gmt_modified":"2026-05-16T12:55:22.146713+08:00"},{"catalog_id":"c225ba69-033c-432b-88e0-c96cafc612d5","title":"视频播放器示例","description":"videoplayer-sample","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"f908d033-1e13-451d-be55-93fb9a9f181c","gmt_create":"2026-05-16T12:55:54.7874524+08:00","gmt_modified":"2026-05-16T12:55:54.7950583+08:00"},{"catalog_id":"939c76fd-c27f-41fc-aa05-687375faa473","title":"信令路由系统","description":"signaling-routing","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d1dc2fd0-8acc-483b-8b48-a631b00b3db7","gmt_create":"2026-05-16T12:56:42.4199472+08:00","gmt_modified":"2026-05-16T12:56:42.4264457+08:00"},{"catalog_id":"341b2b54-3261-4147-8e1a-0f5c46f4d61d","title":"SSL/TLS 配置","description":"ssl-tls-configuration","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"f51cc9c8-b978-40a2-bb68-b06fd46df9aa","gmt_create":"2026-05-16T12:56:50.3117019+08:00","gmt_modified":"2026-05-16T12:56:50.3164864+08:00"},{"catalog_id":"38f69d88-cf29-4ea2-8c51-f18ed2a172e6","title":"信令路由配置","description":"signaling-routing","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"c6634f0f-1c55-410d-89b9-815a3c153c46","gmt_create":"2026-05-16T12:57:25.6495247+08:00","gmt_modified":"2026-05-16T12:57:25.6553355+08:00"},{"catalog_id":"4079958b-e9eb-4610-9a7a-8fdec4af747d","title":"信令客户端","description":"signaling-client","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"bba374a4-6375-4f0a-a3bd-415caec58122","gmt_create":"2026-05-16T12:58:11.452073+08:00","gmt_modified":"2026-05-16T12:58:11.4562432+08:00"},{"catalog_id":"7735317a-b747-4d88-9f5f-869465bfb4c0","title":"扩展开发","description":"extension-development","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"f7e1d371-a005-48ff-9493-574ea74c9bc7","gmt_create":"2026-05-16T12:58:26.7885231+08:00","gmt_modified":"2026-05-16T12:58:26.7949904+08:00"},{"catalog_id":"8bc8b2c5-bd3b-470e-8ce3-76f9eda2aef6","title":"日志系统","description":"logging-system","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"019782c6-56d6-47da-8dc9-90dd3c5cc78b","gmt_create":"2026-05-16T12:58:50.3502325+08:00","gmt_modified":"2026-05-16T12:58:50.3589906+08:00"},{"catalog_id":"13019cef-b976-46c3-bd7f-63fdc6bbc074","title":"性能优化","description":"performance-optimization","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"53ee4d63-72a8-4732-bc7d-00eda6d8d780","gmt_create":"2026-05-16T13:00:02.4435898+08:00","gmt_modified":"2026-05-16T13:00:02.4492052+08:00"},{"catalog_id":"869dd14b-54e9-4010-b1e0-746a3e176bd4","title":"实用工具模块","description":"utility-modules","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"ca90a370-9cb9-4fa2-8568-3a333f897a33","gmt_create":"2026-05-16T13:00:05.5461445+08:00","gmt_modified":"2026-05-16T13:00:05.5504002+08:00"},{"catalog_id":"eda098b0-7acb-4d00-9252-973100c3a66b","title":"一对一通信示例","description":"onebyone-sample","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"f11438e7-f21b-467b-9011-af1c2e3881aa","gmt_create":"2026-05-16T13:00:43.7024944+08:00","gmt_modified":"2026-05-16T13:00:43.7062627+08:00"},{"catalog_id":"bd459b28-50c4-4796-8528-69834467fbf7","title":"贡献指南","description":"contribution-guidelines","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"b5178261-7194-4e7b-8332-d9bffdd37e23","gmt_create":"2026-05-16T13:01:26.0473835+08:00","gmt_modified":"2026-05-16T13:01:26.052069+08:00"},{"catalog_id":"a6f74331-cf80-4cd5-81ac-001111c93597","title":"监控与日志","description":"monitoring-logging","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d95a5269-84e0-4428-b367-dcbe5fcdf516","gmt_create":"2026-05-16T13:01:48.8121265+08:00","gmt_modified":"2026-05-16T13:01:48.8168658+08:00"},{"catalog_id":"a34e1301-4130-410e-b147-4698c45c23ae","title":"键盘输入处理","description":"keyboard-input-handling","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"97215c0a-a8fa-4946-8d6f-ffdc1d5f09d2","gmt_create":"2026-05-16T13:03:09.101606+08:00","gmt_modified":"2026-05-16T13:03:10.0551537+08:00"},{"catalog_id":"0bfb7aaa-5a8f-42c6-a9d6-60845e7015f4","title":"触摸输入处理","description":"touch-input-handling","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"8bac35a5-6784-4e7b-b543-e1cbbf86f0d0","gmt_create":"2026-05-16T13:03:24.3158482+08:00","gmt_modified":"2026-05-16T13:03:24.3223653+08:00"},{"catalog_id":"008e823f-93b2-403a-9d60-08e7cd494f18","title":"鼠标输入处理","description":"mouse-input-handling","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"dc16bcd8-f8ab-45ac-abb6-e2504c0649e7","gmt_create":"2026-05-16T13:25:10.7866384+08:00","gmt_modified":"2026-05-16T13:25:10.7948339+08:00"},{"catalog_id":"85699f5e-ca94-4146-b489-1bd32e25bf31","title":"WebRTC 实现","description":"webrtc-implementation","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"aa9487e8-dfb6-443c-8c01-e38b8a827588","gmt_create":"2026-05-16T13:25:36.8545072+08:00","gmt_modified":"2026-05-16T13:25:36.8627066+08:00"},{"catalog_id":"1e326ae6-1e03-4dcb-979d-90e1865f0bf0","title":"信令系统","description":"signaling-system","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"08905c93-7af2-46ac-ba40-88f5ec13480f","gmt_create":"2026-05-16T13:25:49.0546594+08:00","gmt_modified":"2026-05-16T13:25:49.0614137+08:00"},{"catalog_id":"20b00f21-82ae-4386-a080-a9b41d723288","title":"游戏手柄输入处理","description":"gamepad-input-handling","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"749e6888-72ea-4280-929d-fe0950645f77","gmt_create":"2026-05-16T13:26:53.671762+08:00","gmt_modified":"2026-05-16T13:26:53.678071+08:00"},{"catalog_id":"d80bb134-cf37-44ba-a780-c48b0df202a7","title":"输入事件同步","description":"input-event-synchronization","extend":"{}","progress_status":"completed","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","reference_count":0,"id":"d948e21d-0204-40e8-8c99-b48ea367aa57","gmt_create":"2026-05-16T13:27:06.2564041+08:00","gmt_modified":"2026-05-16T13:27:06.2633367+08:00"}],"wiki_overview":{"content":"基于我对项目的深入分析,现在我可以生成一个全面的项目概述:\n\n\u003cblog\u003e\n\n# Video Socket Server 项目架构分析\n\n## 1. 项目介绍\n\n### 项目目的\nVideo Socket Server 是一个基于 WebRTC 的实时视频传输服务器,专门为 Unity Render Streaming 提供双向视频通信解决方案。该项目实现了高效的信令传输、媒体流管理和多客户端连接支持。\n\n### 核心目标\n- 提供低延迟的双向视频传输\n- 支持多种通信模式(公共/私有)\n- 实现 WebRTC 信令协议的完整支持\n- 提供丰富的客户端示例和工具\n\n### 目标用户\n- Unity 开发者\n- 实时通信应用开发者\n- 远程协作平台构建者\n\n## 2. 技术架构\n\n### 整体架构图\n\n```mermaid\ngraph TD\n A[客户端浏览器] --\u003e B[Express HTTP服务器]\n B --\u003e C[WebSocket信令服务器]\n B --\u003e D[HTTP轮询信令]\n C --\u003e E[WebRTC Peer Connection]\n D --\u003e E\n E --\u003e F[媒体流传输]\n F --\u003e G[远端客户端]\n \n H[静态资源] --\u003e B\n I[配置文件] --\u003e B\n J[日志系统] --\u003e B\n```\n\n### 核心组件关系\n\n```mermaid\nclassDiagram\n class RenderStreaming {\n +run(argv: string[])\n +app: express.Application\n +server: Server\n +options: Options\n }\n \n class WSSignaling {\n +server: Server\n +wss: WebSocket.Server\n +constructor(server: Server, mode: string)\n }\n \n class WebSocketHandler {\n +reset(mode: string)\n +add(ws: WebSocket)\n +remove(ws: WebSocket)\n +onConnect(ws: WebSocket, connectionId: string)\n +onOffer(ws: WebSocket, message: any)\n +onAnswer(ws: WebSocket, message: any)\n +onCandidate(ws: WebSocket, message: any)\n }\n \n class HTTPSignaling {\n +router: express.Router\n +checkSessionId(req, res, next)\n +getConnection(req, res)\n +postOffer(req, res)\n }\n \n RenderStreaming --\u003e WSSignaling\n RenderStreaming --\u003e HTTPSignaling\n WSSignaling --\u003e WebSocketHandler\n HTTPSignaling --\u003e WebSocketHandler\n```\n\n### 数据流架构\n\n```mermaid\nsequenceDiagram\n participant Client as 客户端\n participant WS as WebSocket服务器\n participant Handler as 信令处理器\n participant Peer as WebRTC对等连接\n \n Client-\u003e\u003e+WS: 建立WebSocket连接\n WS-\u003e\u003e+Handler: onConnect(connectionId)\n Handler--\u003e\u003e-WS: 确认连接\n WS--\u003e\u003e-Client: 连接确认\n \n Client-\u003e\u003e+WS: 发送offer\n WS-\u003e\u003e+Handler: onOffer(message)\n Handler-\u003e\u003e+Peer: 处理offer\n Peer--\u003e\u003e-Handler: 生成answer\n Handler--\u003e\u003e-WS: 广播answer\n WS--\u003e\u003e-Client: answer消息\n```\n\n## 3. 关键实现\n\n### 主入口点\n- **服务器启动**: `src/index.ts` - 应用程序入口,配置命令行参数和服务器启动\n- **HTTP服务器**: `src/server.ts` - Express 服务器配置,静态资源托管和API路由\n- **WebSocket信令**: `src/websocket.ts` - WebSocket 信令服务器实现\n\n### 核心模块\n\n#### 信令处理模块\n- **WebSocket处理器**: `src/class/websockethandler.ts` - 实现完整的信令消息处理逻辑\n- **HTTP信令处理器**: `src/class/httphandler.ts` - HTTP 轮询信令实现\n- **信令路由**: `src/signaling.ts` - Express 路由配置\n\n#### WebRTC 实现\n- **Peer连接管理**: `client/src/peer.js` - WebRTC PeerConnection 管理\n- **输入设备处理**: `client/src/sender.js` - 输入设备远程控制\n- **渲染流处理**: `client/src/renderstreaming.js` - 媒体流渲染管理\n\n### 配置管理\n- **项目配置**: `package.json` - 依赖管理和脚本配置\n- **TypeScript配置**: `tsconfig.json` - 编译配置\n- **客户端配置**: `client/package.json` - 前端依赖管理\n\n### 外部依赖\n- **核心依赖**: Express.js, WebSocket, WebRTC\n- **开发依赖**: TypeScript, Jest, ESLint\n- **工具依赖**: Swagger 文档生成\n\n### 集成点\n- **静态资源集成**: `client/public/` - HTML/CSS/JS 客户端资源\n- **模块化导入**: `client/src/` - JavaScript 模块化代码\n- **测试集成**: `test/` - 单元测试和集成测试\n\n## 4. 关键特性\n\n### 功能概览\n\n#### 1. 多模式通信支持\n```mermaid\nstateDiagram-v2\n [*] --\u003e Public: 公共模式\n [*] --\u003e Private: 私有模式\n \n Public --\u003e Broadcast: 广播消息\n Public --\u003e MultiClient: 多客户端连接\n \n Private --\u003e Host: 主机角色\n Private --\u003e Participant: 参与者角色\n Private --\u003e OneToOne: 一对一通信\n```\n\n#### 2. WebRTC 信令协议\n- **Offer/Answer 模型**: 完整的 SDP 交换流程\n- **ICE 候选者**: STUN/TURN 服务器支持\n- **媒体流管理**: 视频/音频轨道处理\n\n#### 3. 客户端示例\n- **双向通信**: `client/public/bidirectional/` - 双向视频通话\n- **接收端**: `client/public/receiver/` - 单向视频接收\n- **多播放**: `client/public/multiplay/` - 多客户端播放\n- **视频播放器**: `client/public/videoplayer/` - 视频播放控制\n\n### 实现亮点\n\n#### 1. 连接管理\n```mermaid\nflowchart TD\n A[客户端连接] --\u003e B{连接模式}\n B --\u003e|Public| C[全局广播]\n B --\u003e|Private| D[连接组管理]\n \n D --\u003e E[主机角色]\n D --\u003e F[参与者角色]\n \n E --\u003e G[多参与者管理]\n F --\u003e H[单向通信]\n```\n\n#### 2. 信令消息类型\n- **连接管理**: connect, disconnect\n- **媒体协商**: offer, answer, candidate\n- **应用层消息**: broadcast, on-message\n- **控制消息**: ping, pong\n\n#### 3. 媒体流处理\n- **输入设备远程**: 鼠标、键盘、触摸、手柄\n- **媒体轨道**: 视频/音频轨道添加和管理\n- **编解码器偏好**: 浏览器编解码器支持\n\n## 5. 结论与建议\n\n### 项目架构优势\n1. **模块化设计**: 清晰的前后端分离和模块化组织\n2. **双信令支持**: WebSocket 和 HTTP 轮询两种信令模式\n3. **多模式通信**: 支持公共和私有通信场景\n4. **完整的 WebRTC 实现**: 从信令到媒体流的全流程支持\n\n### 潜在改进点\n1. **性能优化**: 可考虑引入连接池和负载均衡\n2. **安全性增强**: 添加认证和授权机制\n3. **监控完善**: 增加更详细的性能指标和错误追踪\n4. **文档扩展**: 完善 API 文档和部署指南\n\n### 推荐的下一步\n1. **部署优化**: 配置生产环境的 SSL 证书和反向代理\n2. **监控集成**: 添加 Prometheus/Grafana 性能监控\n3. **扩展功能**: 支持更多媒体格式和编解码器\n4. **测试覆盖**: 增加端到端测试和压力测试\n\nSources:\n- [package.json](package.json)\n- [src/index.ts](src/index.ts)\n- [src/server.ts](src/server.ts)\n- [src/websocket.ts](src/websocket.ts)\n- [src/class/websockethandler.ts](src/class/websockethandler.ts)\n- [src/class/httphandler.ts](src/class/httphandler.ts)\n- [src/signaling.ts](src/signaling.ts)\n- [client/src/sender.js](client/src/sender.js)\n- [client/src/peer.js](client/src/peer.js)\n- [client/public/index.html](client/public/index.html)\n- [client/public/bidirectional/js/main.js](client/public/bidirectional/js/main.js)\n\n\u003c/blog\u003e","gmt_create":"2026-05-16T12:28:32.9307707+08:00","gmt_modified":"2026-05-16T12:28:32.9307707+08:00","id":"930ea563-b716-47e6-b61a-05af6df0f600","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7"},"wiki_readme":{"content":"No readme file","gmt_create":"2026-05-16T12:27:20.7130973+08:00","gmt_modified":"2026-05-16T12:27:20.7130973+08:00","id":"1a80f275-5eb3-45da-8160-daca4ece7288","repo_id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7"},"wiki_repo":{"id":"4226e74d-2759-41d5-9170-ce61a2ed9ce7","name":"video_socket-server","progress_status":"completed","wiki_present_status":"COMPLETED","optimized_catalog":"\".\\n├── client\\\\\\n│ ├── public\\\\\\n│ │ ├── bidirectional\\\\\\n│ │ │ ├── css\\\\\\n│ │ │ │ └── style.css\\n│ │ │ ├── js\\\\\\n│ │ │ │ ├── main.js\\n│ │ │ │ └── sendvideo.js\\n│ │ │ └── index.html\\n│ │ ├── css\\\\\\n│ │ │ └── main.css\\n│ │ ├── images\\\\\\n│ │ ├── js\\\\\\n│ │ │ ├── config.js\\n│ │ │ ├── icesettings.js\\n│ │ │ ├── main.js\\n│ │ │ ├── stats.js\\n│ │ │ └── videoplayer.js\\n│ │ ├── multiplay\\\\\\n│ │ │ ├── css\\\\\\n│ │ │ │ └── style.css\\n│ │ │ ├── js\\\\\\n│ │ │ │ └── main.js\\n│ │ │ └── index.html\\n│ │ ├── onebyone\\\\\\n│ │ │ ├── connect\\\\\\n│ │ │ │ ├── connect.html\\n│ │ │ │ └── connect.js\\n│ │ │ ├── css\\\\\\n│ │ │ │ └── style.css\\n│ │ │ ├── endcall\\\\\\n│ │ │ │ ├── endcall.html\\n│ │ │ │ └── endcall.js\\n│ │ │ ├── README.md\\n│ │ │ ├── chatmessage.js\\n│ │ │ ├── code-structure.md\\n│ │ │ ├── index.html\\n│ │ │ ├── knowledge-graph.md\\n│ │ │ ├── main.js\\n│ │ │ ├── models.js\\n│ │ │ ├── renderer.js\\n│ │ │ ├── store.js\\n│ │ │ └── utils.js\\n│ │ ├── receiver\\\\\\n│ │ │ ├── css\\\\\\n│ │ │ │ └── style.css\\n│ │ │ ├── js\\\\\\n│ │ │ │ └── main.js\\n│ │ │ └── index.html\\n│ │ ├── uploads\\\\avatars\\\\\\n│ │ ├── videoplayer\\\\\\n│ │ │ ├── css\\\\\\n│ │ │ │ └── style.css\\n│ │ │ ├── images\\\\\\n│ │ │ ├── js\\\\\\n│ │ │ │ ├── gamepadEvents.js\\n│ │ │ │ ├── main.js\\n│ │ │ │ ├── register-events.js\\n│ │ │ │ └── video-player.js\\n│ │ │ └── index.html\\n│ │ └── index.html\\n│ ├── src\\\\\\n│ │ ├── charnumber.js\\n│ │ ├── gamepadbutton.js\\n│ │ ├── gamepadhandler.js\\n│ │ ├── inputdevice.js\\n│ │ ├── inputremoting.js\\n│ │ ├── keymap.js\\n│ │ ├── logger.js\\n│ │ ├── memoryhelper.js\\n│ │ ├── mousebutton.js\\n│ │ ├── peer.js\\n│ │ ├── pointercorrect.js\\n│ │ ├── renderstreaming.js\\n│ │ ├── sender.js\\n│ │ ├── signaling.js\\n│ │ ├── touchflags.js\\n│ │ └── touchphase.js\\n│ ├── test\\\\\\n│ │ ├── domrect.js\\n│ │ ├── domvideoelement.js\\n│ │ ├── inputdevice.test.js\\n│ │ ├── inputremoting.test.js\\n│ │ ├── memoryhelper.test.js\\n│ │ ├── mocksignaling.js\\n│ │ ├── peerconnection.test.js\\n│ │ ├── peerconnectionmock.js\\n│ │ ├── pointercorrect.test.js\\n│ │ ├── renderstreaming.test.js\\n│ │ ├── resizeobservermock.js\\n│ │ ├── sender.test.js\\n│ │ ├── signaling.test.js\\n│ │ └── testutils.js\\n│ ├── .eslintrc.json\\n│ ├── jest.config.js\\n│ ├── jest.setup.js\\n│ ├── package-lock.json\\n│ └── package.json\\n├── src\\\\\\n│ ├── class\\\\\\n│ │ ├── answer.ts\\n│ │ ├── candidate.ts\\n│ │ ├── httphandler.ts\\n│ │ ├── offer.ts\\n│ │ ├── options.ts\\n│ │ └── websockethandler.ts\\n│ ├── index.ts\\n│ ├── log.ts\\n│ ├── server.ts\\n│ ├── signaling.ts\\n│ ├── swagger.ts\\n│ ├── websocket.ts\\n│ └── 服务端接口与WebSocket消息类型.md\\n├── test\\\\\\n│ ├── env_macos.postman_environment.json\\n│ ├── httphandler.test.ts\\n│ ├── renderstreaming.postman_collection.json\\n│ └── websockethandler.test.ts\\n├── .editorconfig\\n├── .eslintrc.cjs\\n├── .gitignore\\n├── jest.config.js\\n├── package-lock.json\\n├── package.json\\n├── run.bat\\n├── server.cert\\n├── tsconfig.build.json\\n├── tsconfig.json\\n├── tsconfig.lint.json\\n└── 管理模块报价.md\\n\"","current_document_structure":"WikiEncrypted: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","catalogue_think_content":"WikiEncrypted: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","recovery_checkpoint":"wiki_generation_completed","last_commit_id":"6c138175278a404efa135c10a3a3553979ed48a6","last_commit_update":"2026-05-16T13:27:06.4689716+08:00","gmt_create":"2026-05-13T14:56:11.4554036+08:00","gmt_modified":"2026-05-16T13:27:06.4689716+08:00","extend_info":"{\"language\":\"zh\",\"active\":true,\"branch\":\"master\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"1.0.1\"}"}}