Author: demensdeum

  • рдбреЗрдореЗрдВрд╕рдбреЗрдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓: рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рдЧреЗрдореНрд╕ рдФрд░ рд╡рд╛рдЗрдмрдХреЛрдбрд┐рдВрдЧ

    рдмреНрд▓реЙрдЧ рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдиреЛрдЯреНрд╕ рдФрд░ рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рддреБрд░рдВрдд рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ: рдирдП рдкреЛрд╕реНрдЯ, рд░рд┐рд▓реАрдЬрд╝ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдЖрдк рд╕реАрдзреЗ рдЪреИрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рднреА рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддреАрди рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рд╣реИред рдЗрд╕ рдиреЛрдЯ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХрд╣рд╛рдВ рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд╣рд╛рдВ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред

    DemensDeum – рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рдЧреЗрдореНрд╕

    рдпрд╣ рдореБрдЦреНрдп рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЪреИрдирд▓ рд╣реИред рдпрд╣рд╛рдВ рдирдП рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рд┐рд▓реАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рд╣реИрдВ: рд╕реНрдерд╛рдиреАрдп рдЫрд╡рд┐, рд╡реАрдбрд┐рдпреЛ рдФрд░ рд╕рдВрдЧреАрдд рдЬрдирд░реЗрдЯрд░, рд╡реАрдбрд┐рдпреЛ рдФрд░ рд╕рдВрдЧреАрдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг, рдлрд╝реНрд▓рдЯрд░ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╕рд╛рде рд╣реА рдбреЛрдирдХреА рд╣рд┐рд▓реНрд╕ рдФрд░ рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓ рдЬреИрд╕реЗ рдЧреЗрдо рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ред рдпрджрд┐ рдЖрдк рд░реВрд╕реА рдореЗрдВ рдХреЛрдИ рдмреНрд▓реЙрдЧ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рднреА рди рдЪреВрдХреЗрдВред

    https://t.me/demensdeum_channel

    DemensDeum – рд╕реЙрдлреНрдЯ рдФрд░ рдЧреЗрдореНрд╕

    рдпрд╣ рдореБрдЦреНрдп рдЪреИрдирд▓ рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ. рд╡рд╣реА рдШреЛрд╖рдгрд╛рдПрдБ рдпрд╣рд╛рдБ рджреЛрд╣рд░рд╛рдИ рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓реЗрдЦреЛрдВ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рдЪреИрдирд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред

    https://t.me/demensdeum_channel_en

    рд╡рд╛рдЗрдмрдХреЛрдбрд┐рдВрдЧ рдЪреИрдЯ

    рдПрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдордВрдЪред рдпрд╣рд╛рдВ рдЖрдк рд╕реНрдерд╛рдиреАрдп рдореЙрдбрд▓реЛрдВ рдФрд░ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдУрдкрдирдХреЛрдб, рдХреНрд▓рд╛рдЙрдб рдХреЛрдб, рдбреАрдкрд╕реАрдХ рдФрд░ рдЕрдиреНрдп рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рдЗрдмрдХреЛрдбрд┐рдВрдЧ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рдВрдХреЗрддреЛрдВ рдФрд░ рдиреБрдХрд╕рд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдШреЛрд╖рдгрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдЪреИрдирд▓ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЪреИрдЯ рд╣реИ: рд╕рдВрдЪрд╛рд░, рдкреНрд░рд╢реНрди рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рдиред

    https://t.me/justvibecode

    рдХреНрдпрд╛ рдЪреБрдиреЗрдВ

    рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд░реВрд╕реА рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдЪрд╛рд╣рд┐рдП, рддреЛ рдореБрдЦреНрдп рдЪреИрдирд▓ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред рдпрджрд┐ рдЖрдк рдПрдЖрдИ рд╡рд┐рдХрд╛рд╕ рдХреА рд▓рд╛рдЗрд╡ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ, рддреЛ рд╡рд╛рдЗрдмреНрд░реЗрд╢рди рдХреЛрдбрд░реНрд╕ рдЪреИрдЯ рдкрд░ рдЬрд╛рдПрдВред рдЪреИрдирд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрднрд╡ рдореБрдЦреНрдп рдЪреИрдирд▓ рдкреНрд▓рд╕ рдЪреИрдЯ рд╣реИред

    рд▓рд┐рдВрдХ

    https://t.me/demensdeum_channel
    https://t.me/demensdeum_channel_en
    https://t.me/justvibecode
    https://demensdeum.com/

  • рдбреАрдкрд╕реАрдХ рдкрд░ рдУрдкрдирдХреЛрдб рдореЗрдВ рдПрдорд╕реАрдкреА: рдмрд╛рд╣рд░реА рдЯреВрд▓ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

    рдПрдорд╕реАрдкреА (рдореЙрдбрд▓ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдЯреВрд▓ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП: рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдХрд╛рд░реНрдп рдЯреНрд░реИрдХрд░, рдмрдЧ рдЯреНрд░реИрдХрд░ рдпрд╛ рдЖрдкрдХреА рдЕрдкрдиреА рд╕реЗрд╡рд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЯреВрд▓ рдХреЛ рдПрдЬреЗрдВрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдПрдорд╕реАрдкреА рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдЬреЗрдВрдЯ рдорд╛рдирдХ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред

    рдУрдкрдирдХреЛрдб рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдПрдорд╕реАрдкреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рджреЛрдиреЛрдВ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░, рдЬреЛ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд░рд┐рдореЛрдЯ рд╡рд╛рд▓реЗ, HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг MCP рдкрд░рдд OpenCode рдХреА рдУрд░ рд╕реЗ рд╣реА рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдореЙрдбрд▓ рдкреНрд░рджрд╛рддрд╛ рдХреА рдУрд░ рд╕реЗред рдЗрд╕рд▓рд┐рдП, рдбреАрдкрд╕реАрдХ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдорд╕реАрдкреА рдЙрдкрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдФрд░ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ, рдЕрдзрд┐рдХреГрдд рдХреИрд╕реЗ рд╣реЛрдВ, рдЯреЛрдХрди рдореЗрдВ рдХреИрд╕реЗ рди рдбреВрдмреЗрдВ рдФрд░ рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рддреАрди рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

    • рдУрдкрдирдХреЛрдб рд╕реНрдерд╛рдкрд┐рддред рдпрджрд┐ рдПрдЬреЗрдВрдЯ рдЕрднреА рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдиреЛрдЯ рдореЗрдВ рдбреАрдкрд╕реАрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред
    • Node.js рдФрд░ npxред рд╕реНрдерд╛рдиреАрдп MCP рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ npm рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬрд┐рдпрд╛рдБред рдХреЗрд╡рд▓ рдЙрди рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред Context7 рдЬреИрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрд╡рд░ рдмрд┐рдирд╛ рдЪрд╛рдмреА рдХреЗ, рд▓реЗрдХрд┐рди рдХрдо рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

    рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

    рд╕рд░реНрд╡рд░ рдХреЛ mcp рдмреНрд▓реЙрдХ рдореЗрдВ OpenCode рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдЙрдкрдХрд░рдг рдЗрд╕ рдирд╛рдо рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

    рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, MCP рдЯреВрд▓ рдмрд┐рд▓реНрдЯ-рдЗрди рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ: рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝рдирд╛, рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ред рдбреАрдкрд╕реАрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдПрдЬреЗрдВрдЯ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ – рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдмрдВрдбрд▓ рдореЙрдбрд▓ рдПрдкреАрдЖрдИ рдкрдХреНрд╖ рдкрд░ рдХрд┐рд╕реА рднреА рдПрдорд╕реАрдкреА рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

    рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░

    рддрдВрддреНрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ @modelcontextprotocol/server-everything рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ opencode.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "mcp_everything": {
          "type": "local",
          "command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
        }
      }
    }
    

    рдХрдорд╛рдВрдб рдлрд╝реАрд▓реНрдб рд╕рд░реНрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрдорд╛рдВрдб рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рддрд░реНрдХ рд╣реИрдВред рдУрдкрдирдХреЛрдб рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдХрд░рдг рд╕рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдВрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

    ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╣ ╨╕╨╜╤Б╤В╤А╤Г╨╝╨╡╨╜╤В mcp_everything, ╤З╤В╨╛╨▒╤Л ╤Б╨╗╨╛╨╢╨╕╤В╤М 3 ╨╕ 4
    

    рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрдИ рдФрд░ рдЙрдкрдпреЛрдЧреА рдлрд╝реАрд▓реНрдб рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, cwd – рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдЯрд╛рдЗрдордЖрдЙрдЯ – рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдХреНрд╖рдо рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╣рдЯрд╛рдП рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░

    рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддреЗ рд╣реИрдВ: рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг Context7 рд╣реИ, рдЬреЛ рдЕрджреНрдпрддрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд┐рдирд╛ рдЪрд╛рдмреА рдХреЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "context7": {
          "type": "remote",
          "url": "https://mcp.context7.com/mcp"
        }
      }
    }
    

    рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдГрд╢реБрд▓реНрдХ Context7 рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реАрдорд╛рдПрдБ рдмрдврд╝рд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╣реЗрдбрд░ рд╣реЗрдбрд░ рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдВрдЬреА рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд░рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "context7": {
          "type": "remote",
          "url": "https://mcp.context7.com/mcp",
          "headers": {
            "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
          }
        }
      }
    }
    

    {env:NAME} рдирд┐рд░реНрдорд╛рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдВрдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдПрдЬреЗрдВрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрд╡рд░ рдЧреНрд░реЗрдк рдмрд╛рдп рд╡рд░реНрд╕реЗрд▓ рд╣реИ, GitHub рдкрд░ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреЗрдВ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "gh_grep": {
          "type": "remote",
          "url": "https://mcp.grep.app"
        }
      }
    }
    

    OAuth рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг

    рдХреБрдЫ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ OAuth рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдУрдкрдирдХреЛрдб рд╕реНрд╡рдпрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рд╕реЗ рдЧреБрдЬрд░ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ 401 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рдмрдЪрд╛рддрд╛ рд╣реИред рд╕рдВрддрд░реА рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "sentry": {
          "type": "remote",
          "url": "https://mcp.sentry.dev/mcp",
          "oauth": {}
        }
      }
    }
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ – рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛:

    opencode mcp auth sentry
    

    рд╕рд░реНрд╡рд┐рд╕ рдХрдорд╛рдВрдб рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред рдУрдкрдирдХреЛрдб рдПрдорд╕реАрдкреА рд╕реВрдЪреА рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддреА рд╣реИ, рдУрдкрдирдХреЛрдб рдПрдорд╕реАрдкреА рд▓реЙрдЧрдЖрдЙрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдЯреЛрдХрди рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдУрдкрдирдХреЛрдб рдПрдорд╕реАрдкреА рдбрд┐рдмрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдФрд░ OAuth рдЦреЛрдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЯреЛрдХрди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ ~/.local/share/opencode/mcp-auth.json рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

    рдпрджрд┐ рд╕рд░реНрд╡рд░ OAuth рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдорд┐рдд API рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ OpenCode OAuth рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "my-api-key-server": {
          "type": "remote",
          "url": "https://mcp.example.com/mcp",
          "oauth": false,
          "headers": {
            "Authorization": "Bearer {env:MY_API_KEY}"
          }
        }
      }
    }
    

    рдЙрдкрдХрд░рдг рдкреНрд░рдмрдВрдзрди

    рдПрдорд╕реАрдкреА рдЙрдкрдХрд░рдг рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрд┐рди рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЯреВрд▓реНрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "my-mcp-foo": {
          "type": "local",
          "command": ["npx", "-y", "my-mcp-command-foo"]
        },
        "my-mcp-bar": {
          "type": "local",
          "command": ["npx", "-y", "my-mcp-command-bar"]
        }
      },
      "tools": {
        "my-mcp*": false
      }
    }
    

    my-mcp* рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЙрди рд╕рднреА рдЯреВрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдирд╛рдо рдЗрд╕ рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдХрдИ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "my-mcp": {
          "type": "local",
          "command": ["npx", "-y", "my-mcp-command"],
          "enabled": true
        }
      },
      "tools": {
        "my-mcp*": false
      },
      "agent": {
        "my-agent": {
          "tools": {
            "my-mcp*": true
          }
        }
      }
    }
    

    рдбреАрдкрд╕реАрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    рдбреАрдкрд╕реАрдХ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбрд▓ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдорд╕реАрдкреА рдЙрдкрдХрд░рдг рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред рдбреАрдкрд╕реАрдХ рд╕реНрд╡рдпрдВ рдПрдорд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдХрдиреЗрдХреНрд╢рди рдХреЛ рдУрдкрдирдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдЖрдкрдХреЛ рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:

    • рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ред рдирд┐рдпрдорд┐рдд рдФрд░ рдЫреЛрдЯреЗ рд╕рдВрдкрд╛рджрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдбреАрдкрд╕реАрдХ-рдлреНрд▓реИрд╢ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрджрд░реНрдн рд░рдЦрдиреЗ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдПрдХ рдЯреВрд▓ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдбреАрдкрд╕реАрдХ-v4-рдкреНрд░реЛ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
    • рд╕рдВрджрд░реНрдн рдЖрдХрд╛рд░ред GitHub MCP рдЬреИрд╕реЗ рднрд╛рд░реА рд╕рд░реНрд╡рд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреЛрдХрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░, рдПрдХ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде, рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓реВ рдХрд░реЗрдВред
    • рд▓рд╛рдЧрдд рдЯреВрд▓реАрдВрдЧ рд╕реНрдХреАрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЙрддрдиреА рд╣реА рдорд╣рдВрдЧреА рд╣реЛрдЧреАред рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕реАрдзреЗ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░реНрд╡рд░ рдЖрдкрдХреЗ рдмрд┐рд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
    • рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддред рдореЙрдбрд▓ рдХреА рд╕рд░рд▓рддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рди рдХрд░рдирд╛, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╛рдо рджреЗрдирд╛ рдпрд╛ AGENTS.md рдореЗрдВ рдПрдХ рдирд┐рдпрдо рд▓рд┐рдЦрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

    AGENTS.md рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдХрд╛ рдЙрджрд╛рд╣рд░рдг, рддрд╛рдХрд┐ рдПрдЬреЗрдВрдЯ рд╕реНрд╡рдпрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрдд рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗ:

    ╨Ъ╨╛╨│╨┤╨░ ╨╜╤Г╨╢╨╜╨╛ ╨┐╨╛╤Б╨╝╨╛╤В╤А╨╡╤В╤М ╨┤╨╛╨║╤Г╨╝╨╡╨╜╤В╨░╤Ж╨╕╤О ╨▒╨╕╨▒╨╗╨╕╨╛╤В╨╡╨║╨╕, ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╣ ╨╕╨╜╤Б╤В╤А╤Г╨╝╨╡╨╜╤В╤Л context7.
    

    рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдиреБрд╕реНрдЦрд╛

    рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рджреЛ рд╕рд░реНрд╡рд░ рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ7 рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреАрд░реНрдг рд╕рд░реНрд╡рд░ – рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдВрдЯреНрд░реА рдпрд╛ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЧреНрд░реЗрдкред рдмрд╛рдХреА рдХреЛ рдмрдВрдж рд░рдЦрдирд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

    рдореЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдореИрдВ рд╕рд░реНрд╡рд░ рдХреЛ opencode.json рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, OpenCode рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВ, opencode mcp рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╢реНрди рдкреВрдЫрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЯреВрд▓ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдУрдкрдирдХреЛрдб рдПрдорд╕реАрдкреА рдбреАрдмрдЧ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдУрд░ рджреЗрдЦрддрд╛ рд╣реВрдВ – рдзреАрдореЗ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рдЖрд╡рдВрдЯрд┐рдд 30 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрд┐рдВрджреБ. рдПрдорд╕реАрдкреА рд╕рд░реНрд╡рд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЛрдб рд╣реИрдВ: рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдЖрдкрдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рдорд╛рди рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдЪрд╛рдмрд┐рдпрд╛рдБ рдФрд░ рдЯреЛрдХрди рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рди рд╣реЛрдВред рдУрдкрдирдХреЛрдб OAuth рдЯреЛрдХрди рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдЭрд╛ рдорд╢реАрди рдкрд░ рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ: рдУрдкрдирдХреЛрдб рдПрдорд╕реАрдкреА рд▓реЙрдЧрдЖрдЙрдЯ рдЬрдм рдПрдХреНрд╕реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд░рд╣ рдЬрд╛рддреА рд╣реИ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

    рдФрд░ рдПрдХ рдФрд░ рдмрд╛рдд: рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдЪрд╛рд▓реВ рди рдХрд░реЗрдВред рдПрдорд╕реАрдкреА рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрджрд░реНрдн рдкреИрд╕рд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╣реИред рджреЛ рдпрд╛ рддреАрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рд░реНрд╡рд░ рджрд╕ рдХрдиреЗрдХреНрдЯреЗрдб рд╕рд░реНрд╡рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

    рд▓рд┐рдВрдХ

    https://opencode.ai/docs/mcp-servers/
    https://opencode.ai/docs/config/
    https://modelcontextprotocol.io/
    https://github.com/upstash/context7
    https://mcp.sentry.dev
    https://mcp.grep.app
    https://github.com/anomalyco/opencode

    рд╕реНрд░реЛрдд

    https://opencode.ai/docs/mcp-servers/
    https://modelcontextprotocol.io/
    https://api-docs.deepseek.com/
    https://api-docs.deepseek.com/quick_start/agent_integrations/opencode

  • рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕: рд╕реНрдерд╛рдкрдирд╛, рдХреНрд╖рдорддрд╛рдПрдВ рдФрд░ рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ

    рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕, рдпрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдбреАрдПрд╕рдПрдЪ, рдбреАрдкрд╕реАрдХ рдПрдЖрдИ рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдПрдЖрдИ рдПрдЬреЗрдВрдЯ рд╣рд╛рд░реНрдиреЗрд╕ рд╣реИред рдпрджрд┐ рдореЙрдбрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рд╛рд░реНрдиреЗрд╕ рдЙрд╕реЗ рд╣рд╛рде рджреЗрддрд╛ рд╣реИ: рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ, рд╕рддреНрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рд╣реИ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рд╣реИред

    рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ “рд╕рдм рдХреБрдЫ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ” рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ – рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ “рд╕рдм рдХреБрдЫ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ”ред рд╕рдВрдкреВрд░реНрдг рдЙрддреНрдкрд╛рдж рдЗрд╕ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдореЙрдбрд▓ рдПрдбреЗрдкреНрдЯрд░, рдПрдХ рдЯреВрд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА, рдПрдХ рд╕рддреНрд░ рд▓реЙрдЧ, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдЬреЗрдВрдЯ рдЪрдХреНрд░ рднреАред рдпрд╣ рдХреЙрд░реНрдбрд┐рд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдбреЗрд╡рд▓рдкрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдЬреЗрдВрдЯ рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

    рдЖрдк рдбреАрдПрд╕рдПрдЪ рдХреЗ рд╕рд╛рде рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣реЗрдбрд▓реЗрд╕ рдореЛрдб рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ, рдпрд╛ рдкрд╛рдпрдерди рдПрд╕рдбреАрдХреЗ рд╕реЗред рдиреАрдЪреЗ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди, рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд▓рд┐рдП Node.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ:

    • Node.js 22.19.0 рдпрд╛ рдмрд╛рдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 22.x рд▓рд╛рдЗрди рдореЗрдВред
    • Node.js 24.0.0 рдпрд╛ рдмрд╛рдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 24.x рд▓рд╛рдЗрди рдореЗрдВред
    • Node.js 23.x рдХрд┐рд╕реА рднреА рдкреИрдЪ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ: рдпрд╣ рд▓рд╛рдЗрди LTS рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╣реА рдмрдВрдж рдХрд░ рджреА рдЧрдИ рд╣реИред

    Node.js рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ DeepSeek API рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВplatform.depseek.com рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ Node.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ – рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдЖрдк рдХрдорд╛рдВрдб рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    node -v
    

    рдПрдирдкреАрдПрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрдирд╛

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬрд╛рдирдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдХреБрдЫ рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╕рд┐рд░реНрдл рджреМрдбрд╝реЗрдВ:

    npx @deepseek-ai/dsh web
    

    рдХрдорд╛рдВрдб npm рд╕реЗ @depseek-ai/dsh рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛, рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрд▓реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдкрддреЗ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ:

    рдпрджрд┐ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░, рддреЛ –no-open рдзреНрд╡рдЬ рдЬреЛрдбрд╝реЗрдВ:

    npx @deepseek-ai/dsh web --no-open
    

    рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░, рдбреАрдПрд╕рдПрдЪ рдкрддрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рд╕реНрдерд╛рдиреАрдп рдкрддрд╛ рдПрд╕рдПрд╕рдПрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

    рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рдкрдирд╛

    рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд┐рд╕реА рдЯреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдкреИрдХреЗрдЬ dsh рдмрд╛рдЗрдирд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

    npm install -g @deepseek-ai/dsh
    dsh web
    

    рдЗрд╕рдХреЗ рдмрд╛рдж dsh рдХрдорд╛рдВрдб рдХрд┐рд╕реА рднреА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред рдЕрджреНрдпрддрди рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

    npm install -g @deepseek-ai/dsh@latest
    

    рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди

    рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЯрд░реНрдорд┐рдирд▓ рдФрд░ Node.js рдХреЛ рд╣реЛрд▓реНрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ, рдбреАрдкрд╕реАрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдмрд┐рд▓реНрдб рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдкреГрд╖реНрда рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

    • macOS – Apple рд╕рд┐рд▓рд┐рдХреЙрди, macOS 13 рдпрд╛ рдмрд╛рдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг, DMG рдкреНрд░рд╛рд░реВрдкред
    • рд╡рд┐рдВрдбреЛрдЬрд╝ – 64-рдмрд┐рдЯ рдЕрд╕реЗрдВрдмрд▓реА, EXE рдкреНрд░рд╛рд░реВрдкред

    рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдиреНрд╣реАрдВ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ рд╣реА рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрдм рдЖрдк рд╣рд░ рдмрд╛рд░ рд╕рд░реНрд╡рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдирд┐рд░реНрдорд╛рдг

    рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдб, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдЪ рдпрд╛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдкреАрдПрдирдкреАрдПрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреЛрд░рдкреИрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

    corepack enable
    git clone https://github.com/deepseek-ai/deepseek-harness.git
    cd deepseek-harness
    pnpm install
    pnpm run build
    pnpm dsh web
    

    pnpm run build рдХрдорд╛рдВрдб рдкреИрдХреЗрдЬ рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ pnpm dsh рд╡реЗрдм рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд┐рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЛрдб pnpm run dev:web рд╣реИ: рдпрд╣ рд╕рд░реНрд╡рд░ рдмрдирд╛рддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдмрджрд▓рдиреЗ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓реЛрдВ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред

    рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ

    рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ.

    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ тЖТ рдореЙрдбрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдбреАрдкрд╕реАрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рджрд░реНрдЬ рдХрд░реЗрдВред рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ $DSH_HOME/.credentials.yaml рдореЗрдВ рд╕рд╣реЗрдЬреА рдЧрдИ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд▓рд┐рдВрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рд░рд╣рд╕реНрдп рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХреБрдВрдЬреА рдХреЛ рд╡рд╛рдкрд╕ рдкрдврд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдореЙрдбрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ; рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ.

    рдлрд┐рд░ рдХрд╛рд░реНрдпрд╕реНрдерд╛рди рдЪреБрдиреЗрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдЪреБрдиреЗрдВред рдЬрдмрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реИ, рдХрд╛рд░реНрдп рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдзреВрд╕рд░ рдмрдиреА рд░рд╣рддреА рд╣реИред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдЬреЗрдВрдЯ рдХреЛ рдЙрди рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рднреАрддрд░ рдЙрд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

    рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдк рдкрд╣рд▓рд╛ рдЯрд╛рд╕реНрдХ рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

    Summarize this repository and identify its main packages.
    

    рдПрдЬреЗрдВрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрдврд╝реЗрдЧрд╛, рдПрдХ рдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛, рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рдмреБрд▓рд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛ред рдЙрди рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд░реНрддрдорд╛рди рдкрд╣реБрдВрдЪ рдиреАрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдбреАрдПрд╕рдПрдЪ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрдЫреЗрдЧрд╛ред

    рдореЙрдбрд▓ рдФрд░ рдкреНрд░рджрд╛рддрд╛

    рдбреАрдкрд╕реАрдХ рдПрдХ рдЪрд░рдг рдореЗрдВ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ: рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдХрд╛рд░реНрдб рдореЗрдВ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдПрдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд┐рдореА рдХреЗ рд▓рд┐рдП рдПрдВрдереНрд░реЛрдкрд┐рдХ, openai, moonshotai рдФрд░ GLM рдХреЗ рд▓рд┐рдП zai рдЬреИрд╕реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬрд╛рдирддреА рд╣реИред

    рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдЧреЗрдЯрд╡реЗ, рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреНрд░реЙрдХреНрд╕реА рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдПрдкреАрдЖрдИ рдореЛрдб рд╣реИред рдпрд╣ рдкреВрдЫрддрд╛ рд╣реИ:

    • рд╕реНрдерд╛рдпреА рдкреНрд░рджрд╛рддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛;
    • рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо;
    • рдПрдкреАрдЖрдИ рдЖрдзрд╛рд░ рдкрддрд╛;
    • рдкреНрд░реЛрдЯреЛрдХреЙрд▓: OpenAI рдЪреИрдЯ рдкреВрд░реНрдгрддрд╛рдПрдВ, OpenAI рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдпрд╛ рдорд╛рдирд╡реАрдп рд╕рдВрджреЗрд╢;
    • рдХреБрдВрдЬреА рдФрд░ рдореЙрдбрд▓реЛрдВ рдХреА рд╕реВрдЪреАред

    рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмреЛрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЧреЗрдЯрд╡реЗ рдУрдкрдирдПрдЖрдИ рдФрд░ рдПрдВрдереНрд░реЛрдкрд┐рдХ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рджреЛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рдВрджрд░реНрдн рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░, рдЖрдЙрдЯрдкреБрдЯ рдЯреЛрдХрди рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рд╕рд╣рд┐рдд рд╕рдорд░реНрдерд┐рдд рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рдореЗрдВ рдмрдВрдж, рдХрдо, рдЙрдЪреНрдЪ рдФрд░ рдЕрдзрд┐рдХрддрдо рддрд░реНрдХ рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдХреЗ рдЖрдЧреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдиреВ рдореЗрдВ рд╕реНрддрд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рддреЗрдЬрд╝ рдореЙрдбрд▓ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдмрдврд╝рд╛рдирд╛ рдпрд╛ рдЙрдЪреНрдЪ рд╢реНрд░реЗрдгреА рдХрд╛ рдореЙрдбрд▓ рд▓реЗрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

    рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдХреНрд░рд┐рдПрдЯрд░ рдореЛрдб

    рдкреНрд▓рдЧрдЗрдиреНрд╕ рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрдВред рдЗрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдХрд░рдг, рдХреМрд╢рд▓, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдФрд░ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓рдЧрдЗрди рдкреНрд░рдмрдВрдзрдХ рд╣реИ: рдПрдЬреЗрдВрдЯ рдХрдорд╛рдВрдб, рдСрдЯреЛ-рдкреБрд╖реНрдЯрд┐, рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп, рд╡реЙрдпрд╕ рдЗрдирдкреБрдЯ, рдЯрд░реНрдорд┐рдирд▓, рд╕рдмрдПрдЬреЗрдВрдЯред

    рдХреНрд░рд┐рдПрдЯрд░ рдореЛрдб рдЕрд▓рдЧ рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдЖрдк рдПрдЬреЗрдВрдЯ рд╕реЗ рд╕реАрдзреЗ рдЪреИрдЯ рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЙрд░реНрдбрд┐рд╕ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдХреМрд╢рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛, рдПрдХ рдкреИрдХреЗрдЬ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдЧрд╛, рдХреЛрдб рд▓рд┐рдЦреЗрдЧрд╛, рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЛрдореЛрдбреЛрд░реЛ рдЯрд╛рдЗрдорд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗрдм рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    dsh plugin --profile web add some-dsh-plugin
    

    рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ, рдЬреАрдердм:рдУрдирд░/рд░реЗрдкреЛ, рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдФрд░ рдЯреАрдЬреАрдЬреЗрдб рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдЬреИрд╕реЗ рд▓рд┐рдВрдХ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдкрд░рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:

    dsh --profile web --dump-config
    

    рдХрдорд╛рдВрдб рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрд╕реЗрдВрдмрд▓ рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧрдЗрди рдЯреНрд░реА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдирдИ рдкрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрдВрдбрд▓ рдиреЗ рд╕рдВрднрд╡рддрдГ dsh.bundle рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдкреНрд▓рдЧрдЗрди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

    рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдмрд╛рдЬрд╝рд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ JSON рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕, рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рдЖрдЗрдХрди рдФрд░ рд╕реНрд░реЛрддреЛрдВ рдХреА рд╕реВрдЪреА рд╣реИред рд╕реЗрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреЗрдЬ рдкрд░ рдПрдХ рдбрд┐рд╕реНрдХрд╡рд░ рдЯреИрдм рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдмрд╛рдЬрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓рддреА рд╣реИред рдХрд┐рд╕реА рднреА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕реНрд░реЛрдд рдХреА рддрд░рд╣, рдРрд╕реЗ рдмрд╛рдЬрд╝рд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рд╣реЛред

    рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдФрд░ рд▓реЗрдЦрд╛рдкрд░реАрдХреНрд╖рд╛

    рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП, рдбреАрдПрд╕рдПрдЪ рдПрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ-рдХреЗрд╡рд▓ рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рд▓рд┐рдЦрддрд╛ рд╣реИ – рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ, рддрд░реНрдХ, рдЯреВрд▓ рдХреЙрд▓ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдо, рд╕рдмрдПрдЬреЗрдВрдЯ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдФрд░ рд╕рдВрджрд░реНрдн рд╕рдореНрдорд┐рд▓рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЙрдЧ рдкрд░ рд╕рддреНрд░ рдкреБрдирдГ рдЖрд░рдВрдн, рдлрд╝реЛрд░реНрдХ, рдЦреЛрдЬ рдФрд░ рд░реАрдкреНрд▓реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

    рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рддрдЪреАрдд рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдмрдирдХрд░ рд░рд╣ рдЬрд╛рддреА рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдЖрдк рдкреНрд░рдХреНрд╖реЗрдк рдкрде рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЯреВрд▓ рдмреБрд▓рд╛рдП рдЧрдП рдереЗ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛, рдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрджрд▓реА рдЧрдИрдВ, рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдХрд┐рддрдиреЗ рдЯреЛрдХрди рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдПред рдпрджрд┐ рдХреЛрдИ рдПрдЬреЗрдВрдЯ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЖрдорддреМрд░ рдкрд░ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдЪреИрдЯ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдореЗрдВред

    рд╕рддреНрд░ JSONL рд▓реЙрдЧ рдХреЗ рд░реВрдк рдореЗрдВ ~/.dsh/sessions рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЙрди рдЦрд░реНрдЪреЛрдВ рдФрд░ рдХреИрд╢ рд╣рд┐рдЯреНрд╕ рдХреА рд╕рдЯреАрдХ рдЧрдгрдирд╛ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдорд┐рдд рдПрдкреАрдЖрдИ рдмрд┐рд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред

    рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдФрд░ рд╢реЗрдбреНрдпреВрд▓

    рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕ рди рдХреЗрд╡рд▓ “рдкреВрдЫреЗрдВ рдФрд░ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ” рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд▓реЙрдиреНрдЪ рдФрд░ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЬреЗрдВрдЯ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ 17:00 рдмрдЬреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЛрдЯреНрд╕ рд╕реЗ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдРрд╕реЗ рдХрд╛рд░реНрдп рдЕрд▓рдЧ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ: рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рд╡рд░рдг рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред

    рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЗрдбрд▓реЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИред рдпрд╣ рдПрдХ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ:

    dsh --profile headless "run the tests"
    

    рдпрд╣ рдореЛрдб рд╕реАрдЖрдИ, рдХреНрд░реЙрди рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрд╣рд╛рдВ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣реЗрдбрд▓реЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, sdk рдФрд░ acp рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: рдкрд╣рд▓рд╛ JSON-RPC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SDK рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ ACP stdio рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдЯреЛрдореЗрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

    рд╕рдмрдПрдЬреЗрдВрдЯ, рдПрдорд╕реАрдкреА рдФрд░ рдХреМрд╢рд▓

    рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рдХреЛ рдЙрдк-рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдПрдЬреЗрдВрдЯ рдХрд╛рд░реНрдп рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдк-рдПрдЬреЗрдВрдЯ рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдирд╣реАрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИред

    рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдПрдорд╕реАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдореЗрдореЛрд░реА рдПрдорд╕реАрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЧрд╛рдЗрдб, рд╕рд╛рде рд╣реА GitHub рд╕рдореАрдХреНрд╖рд╛ рд╕рддреНрд░ рдЬреИрд╕реЗ рдПрдХреАрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреМрд╢рд▓ рджреЛрд╣рд░рд╛рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдЬреЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╣рд░ рд╕рдордп рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

    рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓, рдмрдВрдбрд▓ рдФрд░ рдкреИрдЪ

    Dsh рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рддреАрди рдкрд░рддреЛрдВ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрдВрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдпрд╛рдиреА, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рддреИрдпрд╛рд░ рдЯреБрдХрдбрд╝рд╛ред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдВрдбрд▓реЛрдВ рдХреА рдПрдХ рдирд╛рдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬреЛ $DSH_HOME/profiles/ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдкреИрдЪ рдПрдХ YAML рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрджрд▓рддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИ, рдпрд╛ рдирдИ рдЬреЛрдбрд╝рддреА рд╣реИред

    рдЖрд╡реЗрджрди рдХрд╛ рдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдкрд╣рд▓реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреНрд░рдо рдореЗрдВ рдмрдВрдбрд▓, рдлрд┐рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ, рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЪ $DSH_HOME/cordis.patch.yml рдФрд░ рдЕрдВрдд рдореЗрдВ рдУрд╡рд░рд▓реЗ –patch рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдмрдВрдбрд▓ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЫреБрдП рдмрд┐рдирд╛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ рдХреЛ рдХрдорд╛рдВрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

    dsh --profile web --dump-config
    

    рдПрдХ рдорд╛рдирдХ рд╡реЗрдм рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡реЗрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реЗрдбрд▓реЗрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХреА рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ $DSH_HOME/profiles/web/cordis.patch.yml рдФрд░ $DSH_HOME/profiles/headless/cordis.patch.yml рдореЗрдВ рд░рд╣рддреА рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдбреАрдПрд╕рдПрдЪ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИред

    рдкрд╛рдпрдерди рдПрд╕рдбреАрдХреЗ

    рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрд╕рдбреАрдХреЗ рд╣реИред рдпрд╣ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕рд╛рде рдПрдХ рдореВрд▓ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо Node.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

    python -m venv .venv
    .venv\Scripts\Activate.ps1
    python -m pip install deepseek-harness-sdk
    

    рдПрдХ рдиреНрдпреВрдирддрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    from pathlib import Path
    
    from deepseek_harness import DeepSeekHarness
    
    workspace = Path("C:/work/disposable-workspace").resolve()
    dsh_home = Path("C:/work/example-dsh-home").resolve()
    
    with DeepSeekHarness(
        provider="deepseek-official",
        model="deepseek-v4-flash",
        max_tokens=49_152,
        cwd=str(workspace),
        dsh_home=str(dsh_home),
        profile="sdk-minimal",
    ) as harness:
        result = harness.run(
            "Inspect the repository and fix the failing tests.",
            session_id="example-001",
        )
    
    print(result.final_response)
    

    рдПрд╕рдбреАрдХреЗ рдПрд╕рдбреАрдХреЗ-рдиреНрдпреВрдирддрдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдбреАрдПрд╕рдПрдЪ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдиреНрдпреВрдирддрдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реАрдорд┐рдд рд╣реИ: рдЗрд╕рдореЗрдВ рдмреИрд╢ рдпрд╛ pwsh, рдЗрдореЗрдЬ рд░реАрдбрд┐рдВрдЧ рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡реЗрдм рдЯреВрд▓, рд╕рдмрдПрдЬреЗрдВрдЯ рдпрд╛ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рдЯреВрд▓ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдкреНрд▓рд╕ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╕рддрд╣ рд╣реЛрддреА рд╣реИред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрд╕реНрдХрд░рдг 0.1.0-rc.x рд╣реИред README рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рддрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред рдкреНрд░рдпреЛрдЧреЛрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рдкреИрд╕рд╛ рдХрдорд╛рддреА рд╣реИ, рдЬреЛрдЦрд┐рдо рдХреЛ рддреМрд▓рдирд╛ рдФрд░ рдмреИрдХрдЕрдк рдпреЛрдЬрдирд╛ рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реИред

    рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ Node.js рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 22.18 рдпрд╛ 23.x рд╣реИ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдВрдЪреЗрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЛрдб: рдПрд╕рдХреНрд▓рд╛рдЗрдЯ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

    рддреАрд╕рд░рд╛ рдмрд┐рдВрджреБ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдФрд░ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдЬреЗрдВрдЯ рд╡рд░реНрдХрд╕реНрдкреЗрд╕-рд░рд╛рдЗрдЯ рдХреЗ рдХрд░реАрдм рдПрдХ рдиреАрддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЪрдпрдирд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЦрд╝рддрд░рд╛-рдкреВрд░реНрдг-рдкрд╣реБрдБрдЪ рдореЛрдб рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛрдЦрд┐рдо рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрдВрдбрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдпрд╛ рдмреИрдХрдЕрдк рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

    рдЪреМрдерд╛ рдмрд┐рдВрджреБ рд▓рд╛рдЧрдд рд╣реИред рдбреАрдПрд╕рдПрдЪ рд╕реНрд╡рдпрдВ рдореБрдлрд╝реНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЯреЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд▓рдВрдмреЗ рд╕рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдкрд╕рд░реНрдЧ рдХреИрд╢рд┐рдВрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдбреАрдПрд╕рдПрдЪ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЯреВрд▓ рд╕реНрдХреАрдорд╛ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдВред рдпрджрд┐ рд╕реНрдХреЛрд░ рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рди рдХреЗрд╡рд▓ рдкреНрд░рддрд┐ рдЯреЛрдХрди рдХреАрдордд рдХреЛ рджреЗрдЦреЗрдВ, рдмрд▓реНрдХрд┐ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдореЗрдВ рдирдХрдж рд╣рд┐рдЯ рдХреА рд╣рд┐рд╕реНрд╕реЗрджрд╛рд░реА рдХреЛ рднреА рджреЗрдЦреЗрдВред

    рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ

    рдбреАрдкрд╕реАрдХ рд╣рд╛рд░реНрдиреЗрд╕ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐рдХрд░ рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓ “рдПрдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЪреИрдЯ” рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░, рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдХрдорд╛рдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп, рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп, рдЙрдк-рдПрдЬреЗрдВрдЯ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд╣рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рдХрд┐рд╕реА рдПрдЬреЗрдВрдЯ рд▓реВрдк рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреБрд░реНрд▓рдн рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдФрд░ рдХрд╕реНрдЯрдо рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

    рдпрджрд┐ рдЖрдкрдХреЛ рджреИрдирд┐рдХ рднреБрдЧрддрд╛рди рд╡рд╛рд▓реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдЙрдкрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдм рдбреАрдПрд╕рдПрдЪ рдХреЛ рдореБрдЦреНрдп рдПрдЬреЗрдВрдЯ рдХреЗ рдмрд╛рдж рджреВрд╕рд░реЗ рдПрдЬреЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╕рдордЭрджрд╛рд░реА рд╣реИ: рдЗрд╕реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЖрдЬрд╝рдорд╛рдПрдВ, рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд▓рд╛рдЧрдд рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред

    рд▓рд┐рдВрдХ

    https://www.deepseek.com/harness/
    https://www.deepseek.com/download/
    https://github.com/deepseek-ai/deepseek-harness
    https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart
    https://deepseek-harness.github.io/deepseek-harness/en/guide/providers
    https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk
    https://platform.deepseek.com/

    рд╕реНрд░реЛрдд

    https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md
    https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md
    https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart
    https://deepseek-harness.github.io/deepseek-harness/en/guide/providers
    https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk
    https://deepseek-harness.github.io/deepseek-harness/en/guide/plugin-market
    https://dshdocs.com/getting-started/installation/
    https://dshdocs.com/concepts/profiles-bundles-patches/
    https://dshdocs.com/guides/dsh-vs-claude-code/

  • рдУрд▓рд╛рдорд╛ рдореЗрдВ рдЬреЗрдИрд╡реА рд╕рдорд╛рдзрд╛рди рдореЙрдбрд▓: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ /v1/systemone

    рд╕рдВрд╕реНрдХрд░рдг 0.35 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдУрд▓рд╛рдорд╛ рдЯрд╛рдЗрдкрд╕реЗрдл рд╕реЗ рдЬреЗрдИрд╡реА рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрдереЛрдВ рдореЗрдВ рдЪреИрдЯ рдореЙрдбрд▓ рдирд╣реАрдВ рд╣реИрдВ: рд╡реЗ рдкрд╛рда рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВред рд╡рд░реНрдЧреАрдХрд░рдг, рд░реВрдЯрд┐рдВрдЧ, рдореЙрдбрд░реЗрд╢рди рдФрд░ рдЯреНрд░рд╛рдЗрдПрдЬ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрд▓рдПрд▓рдПрдо рд╕реЗ JSON рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд╛рдмрд┐рдд рд╣реЛрддрд╛ рд╣реИред

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХреНрдпрд╛ рд╣реИрдВ, рд╡реЗ HTTP рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреМрди рд╕реЗ рдореЙрдбрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдирд┐рдпрдорд┐рдд рдЬреЗрдирд░реЗрдЯрд░ рдореЙрдбрд▓ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдирд┐рдпрдорд┐рдд рдореЙрдбрд▓ рд╕реЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рднрд┐рдиреНрди рд╣реИрдВ

    рдПрдХ рдирд┐рдпрдорд┐рдд рдПрд▓рдПрд▓рдПрдо рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЙрд╕рд╕реЗ рдПрдХ рд╢рдмреНрдж рдореЗрдВ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рддрдм рднреА рдкреАрдврд╝реА рдЕрдВрджрд░ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЙрддреНрддрд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдПрдХ рдЖрд░реЗрдЦ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рддреНрдпрд╛рдкрди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореЙрдбрд▓ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рдЪрдпрдирд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдирд┐рдГрд╢реБрд▓реНрдХ рдкрд╛рда рдирд╣реАрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХреЛрдИ JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд╣реАрдВред

    рдирдП рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ /v1/systemone рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ, рдЖрдк рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореЙрдбрд▓ рдЙрди рд╕рднреА рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛ред рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХрдИ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрдо рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг, рд╡рд╛рдкрд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдЯрд┐рдХрдЯ рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ред

    рдХреМрди рд╕реЗ рдореЙрдбрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ

    рдЕрдм рдЖрдк рдУрд▓рд╛рдорд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреАрди рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

    • рдлреБрд░реНрддреАрд▓рд╛ рдмреЗрд╕реНрдкреЛрдХ рд▓реИрдмреНрд╕ рдХреЗ 9 рдЕрд░рдм рдорд╛рдкрджрдВрдбреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдЦреБрд▓рд╛ рдореЙрдбрд▓ рд╣реИред рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рд╣реИред
    • tev1 рдПрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреБрдЧреЗрджрд░ рдПрдЖрдИ рд╕реЗ 4 рдмрд┐рд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред
    • tev1:0.8b рдЯреБрдЧреЗрджрд░ AI рдХреЗ 0.8 рдмрд┐рд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓рд╛ рдПрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдореЙрдбрд▓ рд╣реИред рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдФрд░ рдЖрд╕рд╛рди.

    рд╡реЗ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рднреБрдЧрддрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрддреЗ рд╣реИрдВред рдУрд▓рд╛рдорд╛ 0.35 рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

    рд╕реНрдерд╛рдкрдирд╛

    рдкрд╣рд▓реЗ рдУрд▓рд╛рдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

    ollama --version
    

    рдлрд┐рд░ рд╡рд╛рдВрдЫрд┐рдд рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ. рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХреЗ рд▓рд┐рдП:

    ollama pull tev1:0.8b
    

    Tev1 рдХреЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП:

    ollama pull tev1
    

    рдлреБрд░реНрддреАрд▓рд╛ рдХреЗ рд▓рд┐рдП:

    ollama pull nimble
    

    рдлреБрд░реНрддреАрд▓рд╛ рдореЙрдбрд▓ рд▓рдЧрднрдЧ 9.5 рдЬреАрдмреА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕реНрдерд╛рди рдЦрд╛рд▓реА рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред Tev1:0.8b рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рднреА рдХрдо рд╕рдордп рд▓реЗрддрд╛ рд╣реИред

    рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз

    рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЯреЗрдХреНрд╕реНрдЯ рдиреМрдХрд░реА рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╣реИ рдпрд╛ рдирд╣реАрдВ:

    curl http://localhost:11434/v1/systemone -d '{
      "model": "tev1:0.8b",
      "state": {
        "message": "Senior Swift developer, Berlin, remote friendly"
      },
      "questions": {
        "isJob": {
          "type": "noul",
          "instructions": "Does the message advertise a job posting that someone can apply to?"
        }
      }
    }'
    

    рдЙрддреНрддрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

    {
      "model": "tev1:0.8b",
      "answers": {
        "isJob": {
          "type": "noul",
          "noul": 0.921
        }
      },
      "usage": {
        "input_tokens": 42,
        "output_tokens": 0
      }
    }
    

    рдиреЙрд▓ рдлрд╝реАрд▓реНрдб 0 рд╕реЗ 1 рддрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдирд┐рд░реНрдгрдп рдЖрдорддреМрд░ рдкрд░ 0.5 рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдВрдЧрдиреЗ рдФрд░ рдлрд┐рд░ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдиреЗ рдЗрд╕реЗ рддреЛрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

    рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

    noul рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╢реНрди рд╣реИред рдХрд┐рд╕реА рдХрдерди рдХреЗ рд╕рддреНрдп рд╣реЛрдиреЗ рдХреА рдкреНрд░рд╛рдпрд┐рдХрддрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

    {
      "questions": {
        "refund": {
          "type": "noul",
          "instructions": "Does the customer explicitly ask for a refund?"
        }
      }
    }
    

    рд╡рд┐рдХрд▓реНрдк – рджрд┐рдП рдЧрдП рд╕реЗрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ред рдЪрдпрдирд┐рдд рд╡рд┐рдХрд▓реНрдк, рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

    {
      "questions": {
        "team": {
          "type": "choice",
          "instructions": "Which team should handle this ticket?",
          "criteria": {
            "billing": "Payments and refunds",
            "technical": "Bugs and integrations",
            "other": "None of the above"
          }
        }
      }
    }
    

    рд╕реНрдХреЛрд░ – рдкреИрдорд╛рдиреЗ рдкрд░ рд░реЗрдЯрд┐рдВрдЧред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреЗрд▓ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛, рдХрд┐рдВрд╡рджрдВрддреА рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

    {
      "questions": {
        "urgency": {
          "type": "score",
          "instructions": "How urgent is this ticket?",
          "criteria": ["Routine", "Soon", "Urgent"]
        }
      }
    }
    

    рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХреЛ рдЯреНрд░рд╛рдЗрдПрдЬ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ: рдПрдХ рдСрдкрд░реЗрд╢рди, рдПрдХ рд░рд╛рдЬреНрдп, рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдирд┐рд░реНрдгрдпред

    рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рдпрдерди

    рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ urllib рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ; рдПрдХ рдЕрд▓рдЧ SDK рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

    import json
    from urllib.request import Request, urlopen
    
    OLLAMA_DECISION_URL = "http://localhost:11434/v1/systemone"
    
    def ask_decision(state, questions, model="tev1:0.8b"):
        payload = {
            "model": model,
            "state": state,
            "questions": questions,
        }
        request = Request(
            OLLAMA_DECISION_URL,
            data=json.dumps(payload).encode(),
            headers={"Content-Type": "application/json"},
            method="POST",
        )
        with urlopen(request, timeout=3600) as response:
            return json.loads(response.read().decode())["answers"]
    

    рдЙрдкрдпреЛрдЧ:

    answers = ask_decision(
        {"message": "Senior Swift developer, Berlin, remote friendly"},
        {
            "isJob": {
                "type": "noul",
                "instructions": "Does the message advertise a job posting that someone can apply to?"
            }
        },
    )
    
    probability = answers["isJob"]["noul"]
    is_job = probability >= 0.5
    

    рдпрджрд┐ рдЖрдкрдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рдПрд╕рдбреАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реЗрдлрд╝-рдПрд╕рдбреАрдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ TYPESAFE_BASE_URL, TYPESAFE_API_KEY рдФрд░ TYPESAFE_DEFAULT_MODEL рдХреЗ рд╕рд╛рде рдУрд▓рд╛рдорд╛ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реАрдзрд╛ HTTP рдЕрдиреБрд░реЛрдз рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

    рдХреИрд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдПрдХ рдореЙрдбрд▓ рдирд┐рд░реНрдгрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ /api/generate рдпрд╛ /api/chat рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдУрд▓рд╛рдорд╛ рдЗрд╕ рдкрд╛рда рдХреЗ рд╕рд╛рде 400 рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛:

    "tev1:0.8b" does not support generate
    

    рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рд╣реИ рдЬреЛ /api/generate рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдорд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдХреЛ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред /api/show рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЙрдЪрд┐рдд рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:

    import json
    from urllib.request import Request, urlopen
    
    OLLAMA_SHOW_URL = "http://localhost:11434/api/show"
    
    def supports_decision(model):
        request = Request(
            OLLAMA_SHOW_URL,
            data=json.dumps({"model": model}).encode(),
            headers={"Content-Type": "application/json"},
            method="POST",
        )
        try:
            with urlopen(request, timeout=30) as response:
                capabilities = json.loads(response.read().decode()).get("capabilities", [])
        except (OSError, TypeError, ValueError):
            return False
        return "decision" in capabilities
    

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдореЗрдВ рдЙрдирдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрдгрдп рд╣реЛрдЧрд╛ред рдирд┐рдпрдорд┐рдд рдореЙрдбрд▓ рдореЗрдВ рдкреВрд░реНрдгрддрд╛, рдЙрдкрдХрд░рдг рдпрд╛ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдпрджрд┐ рдУрд▓рд╛рдорд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдореЙрдбрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдирд╛ тАЛтАЛрдФрд░ рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

    рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ

    рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рджреЛ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЬреЗрдирд░реЗрдЯрд┐рд╡ рд░рдгрдиреАрддрд┐ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ: рдпрд╣ рдкреНрд░реЙрдореНрдкреНрдЯ рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ /api/generate рдкрд░ рднреЗрдЬрддреА рд╣реИ рдФрд░ JSON рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреА рд╣реИред рдирд┐рд░реНрдгрдп рд░рдгрдиреАрддрд┐ рд░рд╛рдЬреНрдп рдФрд░ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдкреНрд░рд╢реНрди рдХреЛ /v1/systemone рдкрд░ рднреЗрдЬрддреА рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рддреБрд▓рдирд╛ рд╕реАрдорд╛ рд╕реЗ рдХрд░рддреА рд╣реИред

    рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░ рдмрдирд╛рддреЗ рд╕рдордп рд░рдгрдиреАрддрд┐ рдХрд╛ рдЪреБрдирд╛рд╡ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрддрд╛ рд╣реИ:

    def create_classifier(model):
        if supports_decision(model):
            return DecisionClassifier(model)
        return GenerativeClassifier(model)
    

    рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ. рдЬрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЪрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВред рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХреЛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдмрджрд▓рдХрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдкреВрд░рд╛ рдЕрдВрддрд░ рджреЛ рдЫреЛрдЯреЗ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдФрд░ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИред

    рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдгрдп рд░рдгрдиреАрддрд┐ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

    async def classify(text):
        answers = await ask_decision(
            {"message": text},
            {
                "isJob": {
                    "type": "noul",
                    "instructions": instructions,
                }
            },
            model,
        )
        probability = answers["isJob"]["noul"]
        return probability >= 0.5, probability
    

    рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЛрдИ рдХрд╛рд░рдг рдлрд╝реАрд▓реНрдб рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдпрд╛ “рдореЙрдбрд▓ рдиреЗ рд░рд┐рдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ 0.935 рдкрд░ рд░реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ” рдЬреИрд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдпрд╣ рдЙрд╕ рдХрд╛рд░рдг рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдИрдорд╛рдирджрд╛рд░ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдиреЗ рдирд╣реАрдВ рджрд┐рдпрд╛ред

    рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

    рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИ. рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ “рдЖрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╣реА рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ…, рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд” рдХреА рд╢реИрд▓реА рдореЗрдВ рд▓рдВрдмреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВред рд╡реЗ рдПрдХ рдЫреЛрдЯрд╛, рд╕реАрдзрд╛ рдкреНрд░рд╢реНрди рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    рд░рд┐рдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд╕реА рд╕рдВрджреЗрд╢ рдкрд░, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИрдВ:

    • рд╕реАрдзрд╛ рдкреНрд░рд╢реНрди “рдХреНрдпрд╛ рдпрд╣ рд╕рдВрджреЗрд╢ рдиреМрдХрд░реА рдкреЛрд╕реНрдЯрд┐рдВрдЧ рд╣реИ?” тАФ 0.921.
    • рд░рд┐рдХреНрдд рдХрд┐рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓рдВрдмреЗ рдирд┐рд░реНрджреЗрд╢ – 0.026ред
    • рдЕрдВрдд рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рдирд┐рд░реНрджреЗрд╢ – 0.391.

    рдЕрдВрддрд░ рд▓рдЧрднрдЧ рддреАрд╕ рдЧреБрдирд╛ рд╣реИ. рд╡рд░реНрдЧреАрдХрд░рдг рдореЗрдВ рдореЙрдбрд▓ рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЬрдм рдкреНрд░рд╢реНрди рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╡реЗ рдЙрд╕рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЫреЛрдЯреЗ рдирд┐рд░реНрджреЗрд╢ рд░рдЦрдирд╛ рдФрд░ рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдВрдХреЗрдд рдЫреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

    рдПрдХ рдЕрд▓рдЧ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:

    OLLAMA_JOB_CLASSIFIER_DECISION_INSTRUCTIONS=Does the message advertise a job posting that someone can apply to?
    

    рдФрд░ рдХреЗрд╡рд▓ рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдкрде рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдкреНрд░реЙрдореНрдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

    рд╕реАрдорд╛ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ

    0.5 рдХреА рд╕реАрдорд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд▓рд╛рдЧрдд рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИред рд╕рдВрдпрдо рдХреЗ рд▓рд┐рдП, рд╕реАрдорд╛ рдмрдврд╝рд╛рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ; рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧреА рд╕рдВрджреЗрд╢ рди рдЫреВрдЯреЗрдВред

    рдпрд╣ рд╕реНрд╡рдпрдВ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореА рдмреВрд▓рд┐рдпрди рдХреЛред рдЬрдм рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЖрд╢реНрд╡рд╕реНрдд рдЙрддреНрддрд░ рдерд╛ рдпрд╛ рд╕реАрдорд╛ рдкрд░ рдирд┐рд░реНрдгрдп рдерд╛ред рдкрд╕рдВрдж рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЙрдЪрд┐рдд рд╣реИ: рд╡реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдореЙрдбрд▓ рдореЗрдВ рдХрд┐рддрдирд╛ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред

    рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдореГрддрд┐

    рдЧрддрд┐ рдХрд╛рдлреА рд╣рдж рддрдХ рдореЙрдбрд▓ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реАрдкреАрдпреВ рдкрд░ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдВрдмрд░ рдорд┐рд▓реЗ:

    • tev1:0.8b – рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдб рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ, рдЖрд╕рд╛рдиреА рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
    • tev1 – 4рдмреА, рдХрд╛рдлрд╝реА рдзреАрдорд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрддред
    • рдлреБрд░реНрддреАрд▓рд╛ – Q8_0 рдореЗрдВ 9рдмреА, рд▓рдЧрднрдЧ 10 рдЬреАрдмреА рдореЗрдореЛрд░реАред рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╕рд╣рд┐рдд рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд▓рдЧрднрдЧ 137 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛, рдмрд╛рдж рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реАрдкреАрдпреВ рдкрд░ 12 рд╕реЗ 32 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛ред

    рдирд┐рдВрдмрд▓реЗ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реИрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред 16 рдЬреАрдмреА рд╡рд╛рд▓реА рдорд╢реАрди рдФрд░ рд▓рдЧрднрдЧ 8 рдЬреАрдмреА рдХреА рд╕реАрдорд╛ рд╡рд╛рд▓реА рдбреЙрдХрд░/рдбрдмреНрд▓реВрдПрд╕рдПрд▓ рдкрд░, рдореЙрдбрд▓ рдлрд┐рдЯ рдирд╣реАрдВ рдмреИрдарддрд╛: рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡реИрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред .wslconfig рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ WSL рд╕реАрдорд╛ рдХреЛ 12 рдЬреАрдмреА рддрдХ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓реА:

    [wsl2]
    memory=12GB
    swap=8GB
    

    рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ wsl –shutdown рдФрд░ рдбреЙрдХрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди 12 рдЬреАрдмреА рдХреЗ рд╕рд╛рде рднреА, рд░рд┐рдЬрд╝рд░реНрд╡ рдЫреЛрдЯрд╛ рд░рд╣рддрд╛ рд╣реИ: рдореЙрдбрд▓ рд▓рдЧрднрдЧ 10 рдЬреАрдмреА рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред

    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдУрд▓рд╛рдорд╛ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдХреА рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореЗрдореЛрд░реА рдЦрд╛рд▓реА рдХрд░рддреЗ рд╣реБрдП рдореЙрдбрд▓ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдлреБрд░реНрддреАрд▓рд╛ рд╣рд░ рд╕рдордп 10 рдЬреАрдмреА рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдирдП рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдПрдХ рдард╣рд░рд╛рд╡ рдХреЗ рдмрд╛рдж рдореЙрдбрд▓ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░реЗрдВ

    рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреНрд░рд╢реНрди рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рд╕реНрддреЗ рдЙрддреНрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

    • рд╕рдВрджреЗрд╢реЛрдВ, рдЯрд┐рдХрдЯреЛрдВ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдгред
    • рдЖрджреЗрд╢реЛрдВ рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд░реВрдЯрд┐рдВрдЧред
    • рд╕рд╛рдордЧреНрд░реА рдореЙрдбрд░реЗрд╢рди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪред
    • рдЧреЗрдорд┐рдВрдЧ рдпрд╛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рддреЗрдЬрд╝ рдмрд╛рдЗрдирд░реА рдФрд░ рдмрд╣реБрднрд┐рдиреНрдирд░реВрдкреА рд╕рдорд╛рдзрд╛рдиред

    рд╡реЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡рд┐рд╕реНрддреГрдд рдкрд╛рда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг, рдлрд╝реАрд▓реНрдб рдирд┐рд╖реНрдХрд░реНрд╖рдг, рд╕рд╛рд░рд╛рдВрд╢, рдЙрддреНрддрд░ рд╕реГрдЬрдиред рдЗрд╕ рдкреНрд░рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдЬрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред рд╕рдВрдпреБрдХреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ: рдПрдХ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдПрдХ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдЗрд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реИ рдпрд╛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

    рдХреБрд▓

    рдУрд▓рд╛рдорд╛ рдореЗрдВ рдирд┐рд░реНрдгрдп рдореЙрдбрд▓ рдирд┐рдпрдорд┐рдд рдПрд▓рдПрд▓рдПрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ, рд╕рдВрдХреАрд░реНрдг рдЙрдкрдХрд░рдг рд╣реИрдВред рд╡реЗ рдЬреЗрдирд░реЗрдЯрд┐рд╡ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХрд╛рдо рдХреЗ рдирд┐рдпрдорд┐рдд рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ: рдЯрд╛рдЗрдк рдХреА рдЧрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ, рдЯреЗрдХреНрд╕реНрдЯ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ, рдФрд░ рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдкреНрд░рд╛рд░реВрдкред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд░реНрдЧреАрдХрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реИ, рддреЛ рд╕рдВрдХреНрд░рдордг рдореЙрдбрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ, рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рд░реНрджреЗрд╢рд╛рддреНрдордХ рдкреНрд░рд╢реНрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред

    рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
    https://ollama.com/blog/ollama-now-supports-jev-style-decision-models
    https://ollama.com/library/nimble
    https://ollama.com/library/tev1
    https://typesafe.ai

  • FreeLLMAPI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ OpenCode рдХреЗ рд▓рд┐рдП рдирд┐рдГрд╢реБрд▓реНрдХ рдореЙрдбрд▓

    рдУрдкрдирдХреЛрдб рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рдПрдХ рдореЙрдбрд▓ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА OpenAI-рд╕рдВрдЧрдд рд╕реЗрд╡рд╛ рдХреЛ рдЗрд╕рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    FreeLLMAPI рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб рд░рд╛рдЙрдЯрд░ рд╣реИ рдЬреЛ рдПрдХ OpenAI-рд╕рдВрдЧрдд /v1 рдкрддреЗ рдХреЗ рддрд╣рдд рджрд░реНрдЬрдиреЛрдВ AI рдкреНрд░рджрд╛рддрд╛рдУрдВ рд╕реЗ рдореБрдлреНрдд рдпреЛрдЬрдирд╛рдПрдВ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рддреАрд╕ рдХреБрдВрдЬрд┐рдпреЛрдВ, рддреАрд╕ рд╕реАрдорд╛рдУрдВ рдФрд░ рддреАрд╕ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЧреЗрдЯрд╡реЗ рдФрд░ рдПрдХ рдПрдХреАрдХреГрдд рдХреБрдВрдЬреА рд╣реИред рд░рд╛рдЙрдЯрд░ рд╕реНрд╡рдпрдВ рдПрдХ рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ 429 рдпрд╛ 5xx рд╣реЛрдиреЗ рдкрд░ рдЕрдЧрд▓реЗ рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдореБрдлреНрдд рдЯреИрд░рд┐рдл рдХреЗ рдХреЛрдЯрд╛ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛрдВред

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдлреНрд░реАрдПрд▓рдПрд▓рдПрдордПрдкреАрдЖрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЧреЗрдЯрд╡реЗ рдХреЛ рдУрдкрдирдХреЛрдб рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд░ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

    • OpenCode рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдПрдЬреЗрдВрдЯ рдЕрднреА рддрдХ рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рдореИрдВрдиреЗ OpenCode рдФрд░ DeepSeek рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдиреЛрдЯ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред
    • FreeLLMAPI рдЪрд▓ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред
    • Node.js 20.18 рдпрд╛ рдмрд╛рдж рдХрд╛ред рдпрд╣ CLI рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ OpenCode рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдУрдкрдирдХреЛрдб рд╕реНрд╡рдпрдВ рдиреЛрдб рдХреЗ рдмрд┐рдирд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
    • рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХреА рдХреБрдВрдЬреАред рдХреИрдЯрд▓реЙрдЧ рд╕реЗ Google AI рд╕реНрдЯреВрдбрд┐рдпреЛ, рдЧреНрд░реЛрдХ, рд╕реЗрд░реЗрдмреНрд░рд╕, рдорд┐рд╕реНрдЯреНрд░рд▓, рдУрдкрдирд░рд╛рдЙрдЯрд░, NVIDIA, рд╣рдЧрд┐рдВрдЧрдлреЗрд╕ рдФрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреА рдореБрдлреНрдд рдпреЛрдЬрдирд╛рдПрдВ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред

    FreeLLMAPI рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкрде рд╣реИрдВред рд╡рд╣ рдЪреБрдиреЗрдВ рдЬреЛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛред

    рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рдореИрдХрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд░рд┐рд▓реАрдЬрд╝ рдкреЗрдЬ рд╕реЗ рддреИрдпрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдпрд╣ .exe рд╣реИ, MacOS рдкрд░ рдпрд╣ Apple рд╕рд┐рд▓рд┐рдХреЙрди рдпрд╛ Intel рдХреЗ рд▓рд┐рдП .dmg рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреНрд░реЗ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд░рд╛рдЙрдЯрд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЙрдард╛рддрд╛ рд╣реИред

    рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдкреИрдирд▓ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рд╕реНрдерд╛рдиреАрдп рдЦрд╛рддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдпрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЬрд┐рд╕ рдПрдХрдорд╛рддреНрд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд╡рд╣ рдЯреНрд░реЗ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рд╕реЗ рдпрд╛ рдХреБрдВрдЬреА рдкреЗрдЬ рд╣реЗрдбрд░ рд╕реЗ рдПрдХреАрдХреГрдд рдХреБрдВрдЬреА рд╣реИред

    рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ:

    • Windows тАФ %APPDATA%\FreeLLMAPI\
    • macOS тАФ ~/Library/Application Support/FreeLLMAPI/
    • Linux тАФ ~/.config/FreeLLMAPI/

    Docker

    рдпрджрд┐ рдбреЙрдХрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдКрдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ ~/freellmapi рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреА рд╣реИ, рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреА рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ:

    curl -fsSL https://freellmapi.co/install.sh | bash
    

    рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ: .env рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░, рдпрд╣ рд╡рд┐рдзрд┐ WSL рдпрд╛ рдХрд┐рд╕реА рдмреИрд╢ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИред

    рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдкреИрдирд▓ рдпрд╣рд╛рдВ рдЦреБрд▓рддрд╛ рд╣реИ:

    http://localhost:3001
    

    рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдИрдореЗрд▓ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдкрд╛рд╕рд╡рд░реНрдб рднреВрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рд░реАрд╕реЗрдЯ рдХреЛрдб рдХрдВрдЯреЗрдирд░ рд▓реЙрдЧ рдореЗрдВ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

    docker compose logs -f freellmapi
    

    Docker Compose

    рдпрджрд┐ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЧрд┐рдЯ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд▓реЙрдиреНрдЪ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдпрдорд┐рдд рдХрдВрдкреЛрдЬрд╝ рдХрд░реЗрдЧрд╛ред MacOS рдФрд░ Linux рдкрд░:

    git clone https://github.com/tashfeenahmed/freellmapi.git
    cd freellmapi
    ENCRYPTION_KEY="$(openssl rand -hex 32)"
    printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
    docker compose up -d
    

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ:

    git clone https://github.com/tashfeenahmed/freellmapi.git
    cd freellmapi
    $Bytes = New-Object Byte[] 32
    [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($Bytes)
    $ENCRYPTION_KEY = -join ($Bytes | ForEach-Object { "{0:x2}" -f $_ })
    "ENCRYPTION_KEY=$ENCRYPTION_KEY`nPORT=3001" | Out-File -Encoding utf8 .env
    docker compose up -d
    

    ENCRYPTION_KEY рдХреБрдВрдЬреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рддреБрд░рдВрдд рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ – рдкреБрд░рд╛рдиреЗ рд░рд╣рд╕реНрдп рдЕрдм рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрдорд╛рдВрдб рд░реЛрдЯреЗрдЯ-рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди-рдХреА рд╣реИред

    рд╕реНрд░реЛрдд рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

    рд╡рд┐рдХрд╛рд╕ рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ Node.js рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

    git clone https://github.com/tashfeenahmed/freellmapi.git
    cd freellmapi
    npm install
    ENCRYPTION_KEY="$(node -e 'console.log(require("crypto").randomBytes(32).toString("hex"))')"
    printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
    npm run dev
    

    рдЗрд╕ рдореЛрдб рдореЗрдВ, рдПрдкреАрдЖрдИ рдФрд░ рдкреИрдирд▓ рдХреЛ рдкреЛрд░реНрдЯ 3001 рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдЗрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ 5173 рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдкреНрд░рдердо рд▓реЙрдиреНрдЪ рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХреБрдВрдЬреА

    рдкреИрдирд▓ рдЦреЛрд▓реЗрдВ, рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдФрд░ рдХреБрдВрдЬреА рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рд╕рдВрдХреЗрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдпрд╛ рджреЛ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google AI рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдЧреНрд░реЛрдХред

    рдПрдХ рдмрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдВрдЬреА рдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдкреНрд░рджрд╛рддрд╛ рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреБрдВрдЬреА рд╕реВрдЪреА рдореЗрдВ рд░рд╣реЗрдЧреА, рд▓реЗрдХрд┐рди рдЕрд╕реНрд╡рд╕реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХреА рдЬрд╛рдПрдЧреА – рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕реЗ рдореЙрдбрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╡рд╣рд╛рдВ рдЖрдк рд░реВрдЯрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рдФрд░ рдлреЙрд▓рдмреИрдХ рдЪреЗрди рдХреЗ рдХреНрд░рдо рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ – рд╡рд╣ рдЪреЗрди рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд░рд╛рдЙрдЯрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдСрдЯреЛ рдореЙрдбрд▓ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЪреБрдирд╛рд╡ рд░рд╛рдЙрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, auto:fast, auto:smart рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

    рдпрд╣ рднреА рдЬрд╛рдВрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдРрд╕реЗ рдореЙрдбрд▓ рд╣реИрдВ рдЬреЛ рдЯреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдУрдкрдирдХреЛрдб рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЯреВрд▓ рдХреЙрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдореЙрдбрд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

    рдПрдХреАрдХреГрдд рдХреБрдВрдЬреА рд╡рд╣рд╛рдВ, рдХреБрдВрдЬреА рдкреГрд╖реНрда рдкрд░, рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЯреНрд░реЗ рдореЗрдВ рд▓реА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

    freellmapi-...
    

    рдпрд╣ рдХреБрдВрдЬреА рд╣реИ, рди рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рдХреБрдВрдЬреА, рдЬрд┐рд╕реЗ рдУрдкрдирдХреЛрдб рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

    OpenCode рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

    FreeLLMAPI рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрдирд░реЗрдЯрд░ рд╣реИ рдЬреЛ рд╕реНрд╡рдпрдВ рдЪрд▓ рд░рд╣реЗ рдЧреЗрдЯрд╡реЗ рд╕реЗ рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдореМрдЬреВрджрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдмреИрдХрдЕрдк рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдПрдХреАрдХреГрдд рдХреБрдВрдЬреА рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЬрдирд░реЗрдЯрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдзреНрд╡рдЬ рдХреЗ рдмрдЬрд╛рдп рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд╣рд╕реНрдп рдХрдорд╛рдВрдб рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

    MacOS рдФрд░ Linux рдкрд░:

    export FREELLMAPI_API_KEY=freellmapi-YOUR_KEY
    

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ:

    $env:FREELLMAPI_API_KEY="freellmapi-YOUR_KEY"
    

    рдЕрдм рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

    npx freellmapi setup-opencode --url http://localhost:3001 --dry-run
    

    рдпрджрд┐ рдЕрдВрддрд░ рд╕рдВрддреЛрд╖рдЬрдирдХ рд╣реИ, рддреЛ рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛ рдЖрджреЗрд╢ рджреЛрд╣рд░рд╛рдПрдВ:

    npx freellmapi setup-opencode --url http://localhost:3001
    

    рдЬрдирд░реЗрдЯрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдУрдкрдирдХреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд┐рдЦрддрд╛ рд╣реИ:

    ~/.config/opencode/opencode.json
    

    рдлреНрд░реАрд▓рдореИрдкреА рдкреНрд░рджрд╛рддрд╛ рдЗрд╕рдореЗрдВ @ai-sdk/openai-compatible рдкреИрдХреЗрдЬ, рдЖрдзрд╛рд░ рдкрддрд╛ http://localhost:3001/v1 рдФрд░ рд▓рд╛рдЗрд╡ рдХреИрдЯрд▓реЙрдЧ рд╕реЗ рдореЙрдбрд▓реЛрдВ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЙрдбрд▓ рдлреНрд░реАрд▓рдореИрдкреА/рдСрдЯреЛ рдмрди рдЬрд╛рддрд╛ рд╣реИред

    рдХреБрдВрдЬреА рд╕реНрд╡рдпрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди {env:FREELLMAPI_API_KEY} рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдЬреЗрдВрдЯ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП:

    opencode
    

    рдпрд╣ рд╡рд┐рдзрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд╣рд╕реНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реАрдЖрдИ рдФрд░ рд╡рди-рдЯрд╛рдЗрдо рд░рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреБрдВрдЬреА рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИред

    рдореИрдиреНрдпреБрдЕрд▓ рд╕реЗрдЯрд┐рдВрдЧ

    рдпрджрд┐ рдЖрдк рдЬрдирд░реЗрдЯрд░ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ opencode.json рдореЗрдВ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреНрдпреВрдирддрдо рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "model": "freellmapi/auto",
      "provider": {
        "freellmapi": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "FreeLLMAPI",
          "options": {
            "baseURL": "http://localhost:3001/v1",
            "apiKey": "{env:FREELLMAPI_API_KEY}"
          },
          "models": {
            "auto": {
              "name": "FreeLLMAPI Auto Router",
              "limit": { "context": 1048576, "output": 65536 }
            }
          }
        }
      }
    }
    

    рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдореЙрдбрд▓ рдлрд╝реАрд▓реНрдб рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдУрдкрдирдХреЛрдб рдкрд┐рдЫрд▓реЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪреБрди рд╕рдХрддрд╛ рд╣реИред рдЧреЗрдЯрд╡реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рдВрджрд░реНрдн рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдорд╛рдПрдВ рд▓реЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдмрдЬрд╛рдп рдЙрдирдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ:

    curl http://localhost:3001/v1/models
    

    рдпрджрд┐ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдк рдореЙрдбрд▓ рд╕реВрдЪреА рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдСрдЯреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рд░рд╛рдЙрдЯрд░ рд╕реНрд╡рдпрдВ рдПрдХ рд▓рд╛рдЗрд╡ рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдЧрд╛ред

    рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

    рдУрдкрдирдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЙрдбрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЦреБрд▓рддреА рд╣реИ:

    /models
    

    рдЗрд╕рдореЗрдВ рдПрдХ FreeLLMAPI рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдПрдХ рдСрдЯреЛ рдореЙрдбрд▓ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдХрд╛рд░реНрдп рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ: рд╣рдо рдХрд╛рд░реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, @ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЯреИрдм рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдпреЛрдЬрдирд╛ рдореЛрдб рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, /рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрди рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ AGENTS.md рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП /init рдЪрд▓рд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

    рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡:

    • рд░реВрдЯрд┐рдВрдЧред рд░реВрдЯреАрди рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдСрдЯреЛ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЧрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдСрдЯреЛ: рдлрд╛рд╕реНрдЯ рдЖрдЬрд╝рдорд╛рдПрдВ, рдпрджрд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдСрдЯреЛ: рд╕реНрдорд╛рд░реНрдЯ рд╣реИ рдпрд╛ рдХреИрдЯрд▓реЙрдЧ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордЬрдмреВрдд рдореЙрдбрд▓ рд╣реИред
    • рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЧреЗрдЯрд╡реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдореЙрдбрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХреНрд╕-рд░реВрдЯреЗрдб-рд╡рд╛рдпрд╛ рд╣реЗрдбрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдиреЗ рдХрд╛рд░реНрдп рдХрд╣рд╛рдВ рднреЗрдЬрд╛ рд╣реИред
    • рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ред рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдкреЗрдЬ рдкрд░, рдкреИрдирд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдорд╛рддреНрд░рд╛, рд╕рдлрд▓рддрд╛, p50/p95 рджреЗрд░реА рдФрд░ рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЯреЛрдХрди рдЦрдкрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИред
    • рд╕рдВрд╡рд╛рдж рдХреА рдирд┐рд░рдВрддрд░рддрд╛ред рдмрд╛рддрдЪреАрдд рдХреЗ рдмреАрдЪ рдореЗрдВ рдореЙрдбрд▓ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдЧреЗрдЯрд╡реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдиреЛрдЯ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рд╡реЗрд░рд┐рдПрдмрд▓ FREELLMAPI_CONTEXT_HANDOFF=on_model_switch рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдоред

    рдпрджрд┐ OpenCode рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ FreeLLMAPI рдПрдХ рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣реА рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ Host.docker.internal рдпрд╛ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдХрд┐рд╕реА рдЕрдиреНрдп рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    FreeLLMAPI рд╕рд╢реБрд▓реНрдХ рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА SLA рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рд╣реИред рдпрд╣ рдореБрдлрд╝реНрдд рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░реЗ рдЧреЗрдЯрд╡реЗ рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ:

    • рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред рдореБрдлреНрдд рдЯреИрд░рд┐рдл рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреЗрд░ рд╢рд╛рдо, рджреИрдирд┐рдХ рдХреЛрдЯрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм, рд░рд╛рдЙрдЯрд░ рдХрдордЬреЛрд░ рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдЯрд╛ рдЖрдорддреМрд░ рдкрд░ рдЖрдзреА рд░рд╛рдд рдпреВрдЯреАрд╕реА рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
    • рд╡рд┐рд▓рдВрдмрддрд╛рдПрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реЛрддреА рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рджрд╛рддрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдмреИрдХрдЕрдк рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
    • рдХреЛрдИ рдлреНрд▓реИрдЧрд╢рд┐рдк рдореЙрдбрд▓ рдирд╣реАрдВ рд╣реИрдВред рдЕрдЪреНрдЫреЗ, рд▓реЗрдХрд┐рди рдЯреЙрдк-рдПрдВрдб рдирд╣реАрдВ, рдореЙрдбрд▓ рдореБрдлреНрдд рдкреНрд▓рд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЬрдЯрд┐рд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
    • рдЧреЗрдЯрд╡реЗ рдЪрд╛рд▓реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдХрдВрдЯреЗрдирд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ OpenCode рдХреЛ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред рдЯреНрд░реЗ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдд: рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдпрд╛ рдХрдВрдЯреЗрдирд░ рдиреАрддрд┐ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
    • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рджрд╛рддрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЭрд╛ рдкреИрдирд▓ рдЗрд╕ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдПрдХреАрдХреГрдд рдХреБрдВрдЬреА рдФрд░ .env рдХреЛ рдирд┐рдпрдорд┐рдд рд░рд╣рд╕реНрдп рдХреА рддрд░рд╣ рд╣реА рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдФрд░ рдПрдХ рдФрд░ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ: рдореЙрдбрд▓ рдХреИрдЯрд▓реЙрдЧ рдЦреБрдж рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдлреНрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рд▓рдЧрднрдЧ рддреАрд╕ рджрд┐рдиреЛрдВ рдХреА рджреЗрд░реА рд╕реЗ рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдкреНрд░реАрдорд┐рдпрдо рднреБрдЧрддрд╛рди рдпреЛрдЬрдирд╛ рдЕрджреНрдпрддрди рдХреЛ рдЧрддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ – рд░рд╛рдЙрдЯрд░ рд╕реНрд╡рдпрдВ рдореБрдлрд╝реНрдд рдФрд░ рдЦреБрд▓рд╛ рд░рд╣рддрд╛ рд╣реИред

    рд▓рд┐рдВрдХ

    https://github.com/tashfeenahmed/freellmapi
    https://freellmapi.co/
    https://freellmapi.co/models
    https://github.com/tashfeenahmed/freellmapi/releases/latest
    https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
    https://opencode.ai/
    https://opencode.ai/docs/
    https://opencode.ai/docs/providers/

    рд╕реНрд░реЛрдд

    https://github.com/tashfeenahmed/freellmapi
    https://github.com/tashfeenahmed/freellmapi/blob/main/README.ru.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/install/01-install.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/01-agent-clients.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/docs/en/clients/02-supported-agents.md
    https://github.com/tashfeenahmed/freellmapi/blob/main/cli/README.md
    https://opencode.ai/docs/providers/

  • рдУрдкрдирдХреЛрдб рдХреЗ рд▓рд┐рдП рд░реВрд╕реА рдПрдЖрдИ рдкреНрд░рджрд╛рддрд╛

    рдУрдкрдирдХреЛрдб рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рддрд╛рдХрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореЙрдбрд▓ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рджрд░реНрдЬрдиреЛрдВ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

    рдЧреАрдЧрд╛рдЪреИрдЯ Sber рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рд╣реИред рдпрд╣ рдУрдкрдирдХреЛрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рддреИрдпрд╛рд░ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рдУрдкрдирдХреЛрдб рд╡рд░реНрд╕реЗрд▓ рдПрдЖрдИ рдПрд╕рдбреАрдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдордирдорд╛рдиреЗ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЧреАрдЧрд╛рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ gigachat-ai-sdk-provider рд╣реИ, рдЬреЛ OAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдбрд┐рдЬрд┐рдЯрд▓ рд╡рд┐рдХрд╛рд╕ рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИрдВ: рдЙрдирдХреЗ рдмрд┐рдирд╛, рдиреЛрдб рдЧреАрдЧрд╛рдЪреИрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреБрдВрдЬреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЧреАрдЧрд╛рдЪреИрдЯ рдХреЛ рдУрдкрдирдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рддреАрди рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

    • OpenCode рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдПрдЬреЗрдВрдЯ рдЕрднреА рддрдХ рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рдореИрдВрдиреЗ OpenCode рдФрд░ DeepSeek рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдиреЛрдЯ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред
    • GigaChat рдЦрд╛рддрд╛ред GigaChat рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА – рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Sber ID рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
    • рдЖрдзреБрдирд┐рдХ рдЯрд░реНрдорд┐рдирд▓ред рд╡реЗрдЬрд╝рдЯрд░реНрдо, рдЕрд▓рд╛рдХреНрд░рд┐рдЯреНрдЯреА, рдШреЛрд╕реНрдЯреА, рдХрд┐рдЯреНрдЯреА рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХрд░реЗрдЧрд╛ред

    рдЧреАрдЧрд╛рдЪреИрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА

    рдХреБрдВрдЬреА рдЖрдкрдХреЗ рдЧреАрдЧрд╛рдЪреИрдЯ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред Developers.sber.ru/studio рдкрд░ рдЬрд╛рдПрдВ, рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ GigaChat API рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рд╣реИ: рд╡рд╣рд╛рдВ рд╕реЗ рдХреЙрдкреА рдХреА рдЧрдИ рд▓рд╛рдЗрди рдмреЗрд╕ 64 рдореЗрдВ рдПрдХ рддреИрдпрд╛рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рд╣реИред рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕реАрдХреНрд░реЗрдЯ рдЬреЛрдбрд╝реА рдХреЛ рдЕрд▓рдЧ рд╕реЗред

    рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде, рджрд╛рдпрд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ – рдкрд╣реБрдВрдЪ рдХреНрд╖реЗрддреНрд░:

    • GIGACHAT_API_PERS – рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред
    • GIGACHAT_API_B2B – рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдорд┐рдпреЛрдВ рдФрд░ рдХрд╛рдиреВрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдПред
    • GIGACHAT_API_CORP – рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкрд╣реБрдВрдЪред

    рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреБрдВрдЬреА рдорд╛рди рдХреЛ рддреБрд░рдВрдд рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рдирдпрд╛ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

    рдпреЗ рд▓рд╛рдЗрди рдХреНрдпрд╛ рд╣реИ рдпреЗ рд╕рдордЭрдирд╛ рдЬрд░реВрд░реА рд╣реИ. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рдПрдХ рдЕрд▓рдЧ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ client_id:client_secret рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╕64 рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИред рдЧреАрдЧрд╛рдЪреИрдЯ-рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕ рд╣реЗрдбрд░ рдХреЛ OAuth рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИ:

    Authorization: Basic ╨▓╨░╤И_╨║╨╗╤О╤З_╨░╨▓╤В╨╛╤А╨╕╨╖╨░╤Ж╨╕╨╕
    

    рдЬрд╡рд╛рдм рдореЗрдВ, рдПрдХ JWE рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд▓рдЧрднрдЧ рдЖрдзреЗ рдШрдВрдЯреЗ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред рдкреИрдХреЗрдЬ рд╕реНрд╡рдпрдВ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдорд╛рди рдмреЗрд╕64 рдХреЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд░ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ “рдХрдЪреНрдЪрд╛” рдХреНрд▓рд╛рдЗрдВрдЯ рд░рд╣рд╕реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рддреИрдпрд╛рд░ рдмреЗрд╕ 64 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЦрд╛рддреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рди рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ_рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ_рд╕реАрдХреНрд░реЗрдЯ рдЬреЛрдбрд╝реА рдХреЛ рдЕрд▓рдЧ рд╕реЗред

    рдбрд┐рдЬрд┐рдЯрд▓ рд╡рд┐рдХрд╛рд╕ рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░

    рдЧреАрдЧрд╛рдЪреИрдЯ рдПрдкреАрдЖрдИ рдПрдирд╕реАрдП рдбрд┐рдЬрд┐рдЯрд▓ рд╡рд┐рдХрд╛рд╕ рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд╛рдирдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдЯреНрд╕ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

    self-signed certificate in certificate chain
    

    рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ – рдлрд┐рд░ рдЙрди рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдУрдкрдирдХреЛрдб рдиреЛрдб рдФрд░ рдмрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ NODE_EXTRA_CA_CERTS рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЖрд╕рд╛рди рд╣реИред рд░реВрдЯ рдФрд░ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ PEM рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ:

    curl -s https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt -o russian_trusted_root_ca_pem.crt
    curl -s https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -o russian_trusted_sub_ca_pem.crt
    cat russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt > russian_trusted_ca_bundle.pem
    

    рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдЬреЗрдВрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдпрд╣рд╛рдБ рдПрдХ рдкрдХрдбрд╝ рд╣реИ. рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реАрдЖрд░рдПрд▓рдПрдл рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрди рдлрд╝реАрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд рдмрд┐рд▓реНрд▓реА рдкрд╣рд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдЕрдВрдд рдФрд░ рджреВрд╕рд░реЗ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИ:

    -----END CERTIFICATE----------BEGIN CERTIFICATE-----
    

    рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ – рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореИрдХрдУрдПрд╕ рдкрд░ рдУрдкрдирдПрд╕рдПрд▓, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ, рдмрд┐рд▓реНрдХреБрд▓ рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ рд╣реИ – рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:

    PEM routines:CRYPTO_internal:bad end line
    

    рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреЗрд▓реА рдмрд┐рд▓реНрд▓реА рд╣реА рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдкрд╣рд▓реЗ рдУрдкрдирдПрд╕рдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрд╣ рдЗрд╕реЗ рдПрд▓рдПрдл рд▓рд╛рдЗрди рдлрд╝реАрдб рдФрд░ рдЕрдВрддрд┐рдо рд▓рд╛рдЗрди рдлрд╝реАрдб рдХреЗ рд╕рд╛рде рдХреИрдиреЛрдирд┐рдХрд▓ рдкреАрдИрдПрдо рдореЗрдВ рд░рд┐рдХреЛрдб рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

    openssl x509 -in russian_trusted_root_ca_pem.crt -out russian_trusted_root_ca.pem
    openssl x509 -in russian_trusted_sub_ca_pem.crt -out russian_trusted_sub_ca.pem
    cat russian_trusted_root_ca.pem russian_trusted_sub_ca.pem > russian_trusted_ca_bundle.pem
    

    рдЖрдк рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрдврд╝реА рдЬрд╛ рд░рд╣реА рд╣реИ:

    openssl x509 -in russian_trusted_ca_bundle.pem -noout -subject
    

    рдпрджрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрд░реЛрдд рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдбреАрдИрдЖрд░ рдпрд╛ рдкреАрдХреЗрд╕реАрдПрд╕#7 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреАрдИрдПрдо рдореЗрдВ рднреА рд░рд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    openssl x509 -in cert.crt -inform DER -outform PEM -out cert.pem
    openssl pkcs7 -print_certs -in bundle.p7b -out cert.pem
    

    OpenCode рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

    рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рд╡рд░реНрдгрди opencode.jsonc рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдУрдкрдирдХреЛрдб рд╕реНрд╡рдпрдВ npm рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ npm рдкреИрдХреЗрдЬ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛, рдЗрд╕рдореЗрдВ createGigaChat рдлрд╝реИрдХреНрдЯрд░реА рдвреВрдВрдвреЗрдЧрд╛ рдФрд░ рдЙрд╕рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдПрдкреАрдЖрдИ рд╕реЗ рдореЙрдбрд▓реЛрдВ рдХреЛ рдЙрдирдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

    рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    • рд╡реИрд╢реНрд╡рд┐рдХ – ~/.config/opencode/opencode.jsonc. рд╕реЗрдЯрд┐рдВрдЧ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред
    • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ – рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ opencode.jsoncред рдЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

    рджреЛрдиреЛрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рд╣реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ рдФрд░ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреА рд╣реИрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдорд┐рд▓рд╛рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдУрд╡рд░рд▓реИрдк рдХрд░рддреА рд╣реИ, рд╢реЗрд╖ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред .jsonc рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдЧреАрдЧрд╛рдЪреИрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "gigachat": {
          "npm": "gigachat-ai-sdk-provider",
          "name": "GigaChat",
          "models": {
            "GigaChat-2-Max": { "name": "GigaChat 2 Max" },
            "GigaChat-2-Pro": { "name": "GigaChat 2 Pro" },
            "GigaChat-2": { "name": "GigaChat 2 Lite" },
            "GigaChat": { "name": "GigaChat" }
          }
        }
      }
    }
    

    рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореА рдпрд╛ рдЧреАрдЧрд╛рдЪреИрдЯ 3 рддрдХ рдкрд╣реБрдВрдЪ рд╡рд╛рд▓реА рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рд╕реЗ рдореЙрдбрд▓ рдмреНрд▓реЙрдХ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВред

    рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП: рдЧреАрдЧрд╛рдЪреИрдЯ-рдЬреЗрдПрд╕ рдкреИрдХреЗрдЬ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред рд╕реНрдХреЛрдк рдорд╛рди рдХреЛ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдПрдЬреЗрдВрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ:

    export GIGACHAT_CREDENTIALS=╨▓╨░╤И_╨║╨╗╤О╤З_╨░╨▓╤В╨╛╤А╨╕╨╖╨░╤Ж╨╕╨╕
    export GIGACHAT_SCOPE=GIGACHAT_API_PERS
    export NODE_EXTRA_CA_CERTS=/╨┐╤Г╤В╤М/╨║/russian_trusted_ca_bundle.pem
    opencode
    

    рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЗрд╕рд▓рд┐рдП рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд╣рд╕реНрдп рд╕реНрдерд╛рдиреАрдп auth.json рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рд╕реАрдЖрдИ рдФрд░ рдПрдХ рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

    рдореЙрдбрд▓

    рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓реЛрдВ рдХрд╛ рд╕реЗрдЯ рд╕реНрдХреЛрдк рдХреБрдВрдЬреА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреБрдВрдЬреА (GIGACHAT_API_PERS) GigaChat рдФрд░ GigaChat 2 рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ:

    • рдЧреАрдЧрд╛рдЪреИрдЯ – рдореВрд▓ рдореЙрдбрд▓ред
    • GigaChat-2 – рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддреЗрдЬрд╝ рдФрд░ рд╣рд▓реНрдХрд╛ рдореЙрдбрд▓, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд▓рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
    • GigaChat-2-Pro – рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдореЙрдбрд▓ред
    • GigaChat-2-Max рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред

    GigaChat 3 рдкрд░рд┐рд╡рд╛рд░ (GigaChat-3-Ultra, GigaChat-3-Pro, GigaChat3.5-432B-A28B-рд░реАрдЬрд╝рдирд┐рдВрдЧ рдЬреИрд╕реЗ рдЦреБрд▓реЗ рдореЙрдбрд▓) рдХрдВрд╕реЛрд▓ рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ: рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджреНрдпрдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛ GIGACHAT_API_B2B рдпрд╛ GIGACHAT_API_CORP рдФрд░ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдЯреИрд░рд┐рдл рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рдиреВрдиреА рдЗрдХрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреБрдВрдЬреА рдкрд░, рдРрд╕рд╛ рдореЙрдбрд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:

    {"status":404,"message":"No such model"}
    

    рдЖрдк рдореЙрдбрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкреВрдЫрдХрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдХреБрдВрдЬреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрддреА рд╣реИ:

    curl -H "Authorization: Bearer <╤В╨╛╨║╨╡╨╜_╨┤╨╛╤Б╤В╤Г╨┐╨░>" https://gigachat.devices.sberbank.ru/api/v1/models
    

    рджреЛ рдФрд░ рдЕрдВрдХ. рдПрдкреАрдЖрдИ рдореЗрдВ рдореЙрдбрд▓ рдЖрдИрдбреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ – рд▓рд╛рдЗрдЯ рдореЙрдбрд▓ рдХреЛ GigaChat-2 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, GigaChat-2-Lite рдирд╣реАрдВред рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреИрдЯрд▓реЙрдЧ рд╡рд╣реА рдЪреАрдЬрд╝ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреАрдорддреЛрдВ рд╡рд╛рд▓реА рд╕реВрдЪреА рдкрд░ред

    рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдореЙрдбрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЦреЛрд▓реА рдЬрд╛рддреА рд╣реИ:

    /models
    

    рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рдо рдХреЗ рд▓рд┐рдП – рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛, рдЫреЛрдЯреЗ рд╕рдВрдкрд╛рджрди, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ – GigaChat-2 рдХрд╛рдлреА рд╣реИред рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛ рдпрд╛ рдореИрдХреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдПрдЬреЗрдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

    cd ╨▓╨░╤И_╨┐╤А╨╛╨╡╨║╤В
    opencode
    

    рдкрд╣рд▓рд╛ рдХрджрдо рдПрдЬреЗрдВрдЯ рдХреЛ рдЖрд░рдВрдн рдХрд░рдирд╛ рд╣реИ:

    /init
    

    рдУрдкрдирдХреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ AGENTS.md рдмрдирд╛рдПрдЧрд╛ – рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЧрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ: рдпрд╣ рдПрдЬреЗрдВрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдкрдирд╛рдИ рдЧрдИ рдкрд░рдВрдкрд░рд╛рдУрдВ рдФрд░ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

    рд╡реИрдХрд▓реНрдкрд┐рдХ: рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЙрдХреНрд╕реА

    рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдПрдирдкреАрдПрдо рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЙрдХреНрд╕реА рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЧреАрдЧрд╛рдЪреИрдЯ рдЯреАрдо рдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ gpt2giga – рдлрд╛рд╕реНрдЯрдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдУрдкрдирдПрдЖрдИ, рдПрдВрдереНрд░реЛрдкрд┐рдХ рдФрд░ рдЬреЗрдорд┐рдиреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЧреАрдЧрд╛рдЪреИрдЯ рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рд╕реНрд╡рдпрдВ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯ 8090 рдкрд░ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рдирд┐рдпрдорд┐рдд рдУрдкрдирдПрдЖрдИ-рд╕рдВрдЧрдд рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЖрдзрд╛рд░ рдкрддреЗ http://localhost:8090/v1 рдХреЗ рд╕рд╛рде @ai-sdk/openai-compatible рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрдкрдирдХреЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрде рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдУрдкрдирдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдЪрд╛рд▓реВ рдкрд╛рдпрдерди рд╕реЗрд╡рд╛ рднреА рд░рдЦрдиреА рд╣реЛрдЧреАред

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "gigachat": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "GigaChat (proxy)",
          "options": {
            "baseURL": "http://localhost:8090/v1"
          },
          "models": {
            "GigaChat-2-Max": { "name": "GigaChat 2 Max" }
          }
        }
      }
    }
    

    DeepSeek рдФрд░ Cloud.ru рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреНрдп рдореЙрдбрд▓

    рдЧреАрдЧрд╛рдЪреИрдЯ рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реНрд╡рдпрдВ рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рдирд╣реАрдВ рд╣реИрдВ: рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЧреАрдЧрд╛рдЪреИрдЯ рдкрд░рд┐рд╡рд╛рд░ рдФрд░ рдореЙрдбрд▓ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдУрдкрдирдХреЛрдб рдореЗрдВ рдбреАрдкрд╕реАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реВрд╕реА рдХреНрд▓рд╛рдЙрдб рдЧреЗрдЯрд╡реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, Cloud.ru рдХреА рдлрд╛рдЙрдВрдбреЗрд╢рди рдореЙрдбрд▓ рд╕реЗрд╡рд╛ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрд╣ OpenAI-рд╕рдВрдЧрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдирдХ @ai-sdk/openai-compatible рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Cloud.ru рдлрд╛рдЙрдВрдбреЗрд╢рди рдореЙрдбрд▓ рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбрд▓ рд╣реИрдВ:

    deepseek-ai/DeepSeek-V4.1-Flash
    deepseek-ai/DeepSeek-V4-Flash
    deepseek-ai/DeepSeek-V4-Pro
    

    рдХреБрдВрдЬреА Cloud.ru рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИ: рдЕрдиреБрднрд╛рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЯреИрдм рд╕реЗрд╡рд╛ рдЦрд╛рддреЗред рд╣рдо рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╕реНрддрд░реАрдп рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрд╕рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдореЗрдВ рд╣рдо рдлрд╛рдЙрдВрдбреЗрд╢рди рдореЙрдбрд▓ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд░рд╣рд╕реНрдп рдПрдХ рдмрд╛рд░ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЙрд╕реЗ рд╕рд╣реЗрдЬ рд▓реЗрддреЗ рд╣реИрдВред

    opencode.json рдореЗрдВ рдкреНрд░рджрд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "cloudru": {
          "npm": "@ai-sdk/openai-compatible",
          "name": "Cloud.ru Foundation Models",
          "options": {
            "baseURL": "https://foundation-models.api.cloud.ru/v1",
            "apiKey": "{env:CLOUDRU_API_KEY}"
          },
          "models": {
            "deepseek-ai/DeepSeek-V4.1-Flash": { "name": "DeepSeek V4.1 Flash", "limit": { "context": 1048576, "output": 1048576 } },
            "deepseek-ai/DeepSeek-V4-Flash": { "name": "DeepSeek V4 Flash", "limit": { "context": 1048576, "output": 1048576 } },
            "deepseek-ai/DeepSeek-V4-Pro": { "name": "DeepSeek V4 Pro", "limit": { "context": 1048576, "output": 1048576 } }
          }
        }
      }
    }
    

    рд╣рдо рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдХреБрдВрдЬреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

    export CLOUDRU_API_KEY=╨▓╨░╤И_╨║╨╗╤О╤З_cloudru
    opencode
    

    рдпрд╣рд╛рдВ рдбрд┐рдЬрд┐рдЯрд▓ рд╡рд┐рдХрд╛рд╕ рдордВрддреНрд░рд╛рд▓рдп рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: GigaChat рдХреЗ рд╡рд┐рдкрд░реАрдд, api.cloud.ru рдбреЛрдореЗрди рдореЗрдВ рдирд┐рдпрдорд┐рдд TLS рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрддреБрд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрджрд┐ рдЦрд╛рддрд╛ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рд▓рд┐рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

    {"message":"Not enough money"}
    

    рдпрд╣ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ Cloud.ru рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрд┐рдВрджреБ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЗрдЯрдЕрдк рдХрд░рддреЗ рд╕рдордп рдЕрдХреНрд╕рд░ рдЖрдбрд╝реЗ рдЖрддреЗ рд╣реИрдВ:

    • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ NODE_EXTRA_CA_CERTS рд╡реИрд░рд┐рдПрдмрд▓ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдХрд┐ рдПрдЬреЗрдВрдЯ рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ: рдпрджрд┐, рдмрд┐рд▓реНрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп, рдЙрдирдХреЗ рд╕рд┐рд░реЗ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдмреНрд░реЗрдПрд╕рдПрд╕рдПрд▓ рдПрдХ рдЦрд░рд╛рдм рдЕрдВрдд рд░реЗрдЦрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛, рдФрд░ рдмрдВрдбрд▓ рдХреЛ рдУрдкрдирдПрд╕рдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реИред
    • рддреНрд░реБрдЯрд┐ 401ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдЧрд▓рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рдпрд╛ рдПрдХ рдмреЗрдореЗрд▓ рджрд╛рдпрд░рд╛ рд╣реИ – рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ GIGACHAT_API_PERS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    • рдРрд╕рд╛ рдХреЛрдИ рдореЙрдбрд▓ рдирд╣реАрдВ рдкрд╛рда рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ 404ред рдпрд╣ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдХрдореА рд╣реИред рдЗрд╕реЗ рдХреЙрдиреНрдлрд┐рдЧ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдпрд╛ рдХрд┐рд╕реА рдЙрдкрд▓рдмреНрдз рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реЗ рдмрджрд▓ рджреЗрдВред GigaChat 404: рдЕрдЬреНрдЮрд╛рдд рддреНрд░реБрдЯрд┐ рдЬреИрд╕реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ, рдЙрд╕реА GigaChat рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╖ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ – рдкреНрд░рджрд╛рддрд╛ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рдирд┐рдХрд╛рдп рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
    • рд▓рд╛рдЧрддред рдУрдкрдирдХреЛрдб рдХреЛ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЬрдм рдЖрдк рдЯреЛрдХрди рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕реАрдзреЗ рдЧреАрдЧрд╛рдЪреИрдЯ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рддреНрд░ рдХреА рдХреАрдордд рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
    • рдореЙрдбрд▓ рдЧреБрдгрд╡рддреНрддрд╛ред рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдореЙрдбрд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рдореЙрдбрд▓ рд▓реЗрдирд╛ рдФрд░ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рддреЗрдЬрд╝ рдмрдирд╛рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

    рд▓рд┐рдВрдХ

    https://opencode.ai/
    https://opencode.ai/docs/providers/
    https://developers.sber.ru/studio/
    https://developers.sber.ru/docs/ru/gigachat/guides/main
    https://github.com/nyddle/gigachat-ai-sdk-provider
    https://github.com/ai-forever/gpt2giga
    https://cloud.ru/docs/foundation-models/ug/topics/quickstart

    рд╕реНрд░реЛрдд

    https://opencode.ai/docs/providers/#custom-provider
    https://developers.sber.ru/docs/ru/gigachat/certificates
    https://developers.sber.ru/docs/ru/gigachat/models/main
    https://developers.sber.ru/docs/ru/gigachat/guides/selecting-a-model
    https://github.com/nyddle/gigachat-ai-sdk-provider
    https://github.com/ai-forever/gpt2giga
    https://cloud.ru/docs/foundation-models/ug/topics/quickstart
    https://cloud.ru/docs/foundation-models/ug/topics/overview__available__models

  • AirLLM: рдХрдордЬрд╝реЛрд░ рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рдХрд╛рд░реНрдб рдкрд░ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓

    рдЖрдорддреМрд░ рдкрд░, 70 рдЕрд░рдм рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджрд╕рд┐рдпреЛрдВ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред AirLLM рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рд╢рд╛рдВрддрд┐ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ: рдРрд╕реЗ рдореЙрдбрд▓ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдкрд░ рдХреЗрд╡рд▓ 4 рдЬреАрдмреА рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде, рдФрд░ рдмрд┐рдирд╛ рдкрд░рд┐рдорд╛рдгреАрдХрд░рдг, рдЖрд╕рд╡рди рдФрд░ рдЯреНрд░рд┐рдорд┐рдВрдЧ рдХреЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдиреЛрдЯ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд▓реНрджрдмрд╛рдЬреА рдХреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдПрдпрд░рдПрд▓рдПрд▓рдПрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдореИрдВ рдЕрдкрдирд╛ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдпрд░рдПрд▓рдПрд▓рдПрдо-рдкреНрд░рдпреЛрдЧ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред

    рдПрдпрд░рдПрд▓рдПрд▓рдПрдо рдХреНрдпрд╛ рд╣реИ

    рдПрдпрд░рдПрд▓рдПрд▓рдПрдо рдЧреЗрд╡рд┐рди рд▓реА рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЗрд╕рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИ: рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рднреА рдореЙрдбрд▓ рднрд╛рд░ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрд░рдд рдХреЛ GPU рдкрд░ рд▓реЛрдб рдХрд░рддреА рд╣реИред рд╡рдЬрд╝рди рдХреЛ рдкрд░рддреЛрдВ рдореЗрдВ рдХрд╛рдЯреЗ рдЧрдП рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреЛ рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рд▓реЛрдб, рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдЗрд╕рд╕реЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдореЙрдбрд▓ рдХреЗ рд╕рдордЧреНрд░ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рдкрд░рддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЗрд╕реАрд▓рд┐рдП 70рдмреА рдореЙрдбрд▓ 4 рдЬреАрдмреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, 671рдмреА рдкрд░ рдбреАрдкрд╕реАрдХ-рд╡реА3 рд▓рдЧрднрдЧ 12 рдЬреАрдмреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреВрд╡реЗрди3-235рдмреА рд▓рдЧрднрдЧ 3 рдЬреАрдмреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ, рди рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ред

    рдпреЗ рдореЗрдореЛрд░реА рдмрдЪрдд рдЧрддрд┐ рдХреА рдХреАрдордд рдкрд░ рдЖрддреА рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреЛ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рддрд┐ рдЯреЛрдХрди рд▓рдЧрднрдЧ рд╕реЗрдХрдВрдбред рдЗрд╕рд▓рд┐рдП AirLLM рдПрдХ рддреНрд╡рд░рд┐рдд рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЪреИрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рдФрд░ рдПрдХ рдРрд╕реЗ рдореЙрдбрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдЕрдиреНрдпрдерд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

    рд╕реНрдерд╛рдкрдирд╛

    рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PyPI рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

    pip install airllm
    

    рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдореЙрдбрд▓ рд╣рдЧрд┐рдВрдЧ рдлреЗрд╕ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рддреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреАрдореА рд╣реИ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд▓реЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк 4 рдмрд┐рдЯ рдпрд╛ 8 рдмрд┐рдЯ рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ – рдлрд┐рд░ рдмреНрд▓реЙрдХ рдХреНрд╡рд╛рдВрдЯрд╛рдЗрдЬреЗрд╢рди рдХреЛ рд╡рдЬрди рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрд░рддреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рд▓рдЧрднрдЧ рддреАрди рдЧреБрдирд╛ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рдЯреАрдХрддрд╛ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

    рдореВрд▓ рдЙрджрд╛рд╣рд░рдг

    рдЖрдк рдПрдпрд░рдПрд▓рдПрд▓рдПрдо рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рдеред рд╣рдЧрд┐рдВрдЧ рдлреЗрд╕ рдкрд░ рдПрдХ рдмрд╛рд░ рдореЙрдбрд▓ рдЖрдИрдбреА рджрд░реНрдЬ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛:

    from airllm import AutoModel
    
    MAX_LENGTH = 128
    model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
    
    input_text = ['What is the capital of United States?']
    
    input_tokens = model.tokenizer(
        input_text,
        return_tensors="pt",
        return_attention_mask=False,
        truncation=True,
        max_length=MAX_LENGTH,
        padding=False)
    
    generation_output = model.generate(
        input_tokens['input_ids'].cuda(),
        max_new_tokens=20,
        use_cache=True,
        return_dict_in_generate=True)
    
    print(model.tokenizer.decode(generation_output.sequences[0]))
    

    рдСрдЯреЛрдореЙрдбрд▓ рд╡рд░реНрдЧ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕реА рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рдорд╛, рдХреНрд╡реЗрди рдФрд░ рдбреАрдкрд╕реАрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк 671рдмреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдбреАрдкрд╕реАрдХ-рд╡реА3 рдЬреИрд╕рд╛ рдореЙрдбрд▓ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ 12 рдЬреАрдмреА рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдореЗрдВ рднреА рдлрд┐рдЯ рд╣реЛрдЧрд╛ – рдпрд╣реА рдХрд╛рдлреА рд╣рдж рддрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЖрдХрд░реНрд╖рдХ рдмрдирд╛рддрд╛ рд╣реИред

    macOS рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

    AirLLM рди рдХреЗрд╡рд▓ CUDA рдкрд░, рдмрд▓реНрдХрд┐ Apple рд╕рд┐рд▓рд┐рдХреЙрди рдкрд░ рднреА рдЪрд▓рддрд╛ рд╣реИред MacOS рдкрд░ рдпрд╣ MLX рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП mlx рдФрд░ рдЯреЙрд░реНрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдХреЗрд╡рд▓ Apple рдЪрд┐рдкреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реАрдорд╛ рднреА рд╣реИ: рдПрдордПрд▓рдПрдХреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рд▓рд╛рдорд╛-рдЬреИрд╕реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд╡реЗрди рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореЙрдбрд▓ рдХреЛ рдореИрдХрдмреБрдХ рдкрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ

    AirLLM-рдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЫреЛрдЯреА рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рд╣реИрдВред рд╡реЗ рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪреИрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреЗ рд╣реИрдВред

    рдкрд╣рд▓рд╛ рдЯреВрд▓, Airllm-lib-usage.py, AirLLM рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реАрдзреЗ рд╡рд░реНрддрдорд╛рди рдкрд╛рдпрдерди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдХреИрдЯрд▓реЙрдЧ рд╕реЗ рдореЙрдбрд▓реЛрдВ рдХреА рдПрдХ рдХреНрд░рдорд╛рдВрдХрд┐рдд рд╕реВрдЪреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдпрд╣ рд▓рд╛рдкрддрд╛ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЪреИрдЯ рд╕рддреНрд░ рдЦреЛрд▓рддрд╛ рд╣реИред MLX рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ macOS рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЯреЙрд░реНрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рджреВрд╕рд░рд╛ рдЯреВрд▓, Airllm-openai-server-client.py, рдЖрдкрдХреЛ Airllm-openai-server рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреЙрдХрд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ OpenAI-рд╕рдВрдЧрдд рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдорд╛рдВрдЧрддреА рд╣реИ, рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ, рдХрдВрдЯреЗрдирд░ рдЙрдард╛рддреА рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЪреИрдЯ рдЦреЛрд▓рддреА рд╣реИред рдЬрдм рдмрд╛рд░-рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдореМрдЬреВрджрд╛ рдХрдВрдЯреЗрдирд░ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рдХреИрд╢ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдбреЙрдХрд░ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореЙрдбрд▓ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░рдирд╛ рдкрдбрд╝реЗред

    рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ model_catalog.py рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рдЙрдкрдХрд░рдг рдПрдХ рд╣реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЪреИрдЯ рдХрдорд╛рдВрдб рднреА рдЖрдо рд╣реИрдВ: /help, /clear, /exitред рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдирд┐рд░реНрджреЗрд╢ рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВ:

    https://github.com/zefir1990/AirLLM-experiments

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдкрд╣рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, AirLLM рдореЙрдбрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдкрд░рддреЛрдВ рдореЗрдВ рдХрд╛рдЯрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЙрддреНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрддрд┐ рднреА рдХрдо рд░рд╣рддреА рд╣реИ – рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордЭреМрддрд╛ рд╣реИред рдореЗрдЯрд╛-рд▓рд╛рдорд╛ рдЬреИрд╕реЗ рдЧреЗрдЯреЗрдб рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдЧрд┐рдВрдЧ рдлреЗрд╕ рдкрд░ рд╢рд░реНрддреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбрд▓реЛрдВ рдФрд░ рд╢рд╛рд░реНрдбреЛрдВ рдХреЗ рдХреИрд╢ рдХреЛ рди рд╣рдЯрд╛рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

    рд▓рд┐рдВрдХ

    https://github.com/lyogavin/airllm
    https://github.com/mkamranr/airllm-openai-server
    https://github.com/zefir1990/AirLLM-experiments
    https://pypi.org/project/airllm/
    https://huggingface.co/

    рд╕реНрд░реЛрдд

    https://github.com/lyogavin/airllm
    https://github.com/zefir1990/AirLLM-experiments

  • рдУрдкрдирдХреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдбреАрдкрд╕реАрдХ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛

    рдУрдкрдирдХреЛрдб рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ – рд▓рдЧрднрдЧ рд╡рд╣реА рдЪреАрдЬрд╝ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдФрд░ рдЕрдиреНрдп рдХрдВрд╕реЛрд▓ рдПрдЬреЗрдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдУрдкрдирдХреЛрдб рдПрдХ рдореЙрдбрд▓ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ: рдбреАрдкрд╕реАрдХ рд╕рд╣рд┐рдд рджрд░реНрдЬрдиреЛрдВ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдПрдЬреЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдбреАрдкрд╕реАрдХ рдХреЛ рдЙрд╕рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

    • рдЖрдзреБрдирд┐рдХ рдЯрд░реНрдорд┐рдирд▓ред рд╡реЗрдЬрд╝рдЯрд░реНрдо, рдЕрд▓рд╛рдХреНрд░рд┐рдЯреНрдЯреА, рдШреЛрд╕реНрдЯреА, рдХрд┐рдЯреНрдЯреА рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХрд░реЗрдЧрд╛ред
    • рдкреНрд░рджрд╛рддрд╛ рдХреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреАрдкрд╕реАрдХред

    рдпрджрд┐ рдЖрдк рдПрдЬреЗрдВрдЯ рдХреЛ рдорд╛рдирдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ Node.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ – рдмрд╛рдЗрдирд░реА рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред

    рд╕реНрдерд╛рдкрдирд╛

    рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:

    curl -fsSL https://opencode.ai/install | bash
    

    рдпрд╣ рд╕реНрд╡рдпрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ PATH рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧрд╛ред рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рдЬрдЧрд╣ рдкрд░ рд╣реИ:

    opencode --version
    

    рдпрджрд┐ рдЖрджреЗрд╢ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕рдлрд▓ рд░рд╣рд╛ред

    рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрдирд╛

    рдпрджрд┐ рдЖрдк рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред Node.js рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

    npm install -g opencode-ai
    

    рдмрди, рдкреАрдПрдирдкреАрдПрдо рдФрд░ рдпрд╛рд░реНрди рднреА рдпрд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    bun install -g opencode-ai
    pnpm install -g opencode-ai
    yarn global add opencode-ai
    

    macOS рдФрд░ Linux рдореЗрдВ Homebrew рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдУрд░ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ, рди рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдлреЙрд░реНрдореВрд▓рд╛ – рдЗрд╕реЗ рдХрдо рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

    brew install anomalyco/tap/opencode
    

    рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдкрд░:

    sudo pacman -S opencode
    paru -S opencode-bin
    

    рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ – AUR рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ, WSL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ: рдЗрд╕ рддрд░рд╣ рдкреНрд░рджрд░реНрд╢рди рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдЬреЗрдВрдЯ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рддрд╛ рдкреВрд░реНрдг рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рджреЗрд╢реА рддрд░реАрдХреЗ рднреА рд╣реИрдВ. рдЪреЙрдХрд▓реЗрдЯреА, рд╕реНрдХреВрдк рдпрд╛ рдПрдирдкреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

    choco install opencode
    scoop install opencode
    npm install -g opencode-ai
    

    Mise рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ:

    mise use -g github:anomalyco/opencode
    docker run -it --rm ghcr.io/anomalyco/opencode
    

    рдЕрдВрдд рдореЗрдВ, рддреИрдпрд╛рд░ рдмрд╛рдЗрдирд░реА рдХреЛ рд╣рдореЗрд╢рд╛ GitHub рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рдкреЗрдЬ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдбреАрдкрд╕реАрдХ рдХреБрдВрдЬреА

    рдХреБрдВрдЬреА рдЖрдкрдХреЗ рдбреАрдкрд╕реАрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо.рдбреАрдкрд╕реАрдХ.рдХреЙрдо рдкрд░ рдЬрд╛рдПрдВ, рдПрдкреАрдЖрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рдЕрдиреБрднрд╛рдЧ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдореА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддреБрд░рдВрдд рд╕рд╣реЗрдЬрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАред

    рдбреАрдкрд╕реАрдХ рдХрдиреЗрдХреНрд╢рди

    рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдПрдЬреЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ рд╣реА рд╣реЛрддрд╛ рд╣реИ. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдУрдкрдирдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

    opencode
    

    рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╣рдо рдХрдиреЗрдХреНрд╢рди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

    /connect
    

    рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ, рдбреАрдкрд╕реАрдХ рджреЗрдЦреЗрдВ, рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдбрд╛рд▓реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реА рдЧрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ:

    ~/.local/share/opencode/auth.json
    

    рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ:

    /models
    

    рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рд╕реВрдЪреА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рдбреАрдкрд╕реАрдХ-v4-рдкреНрд░реЛ, рдбреАрдкрд╕реАрдХ-рдлреНрд▓реИрд╢ рдФрд░ рдбреАрдкрд╕реАрдХ-v4-рдлреНрд▓реИрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдлрд╝реНрд▓реИрд╢ рд╡рд┐рдХрд▓реНрдк рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ; рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

    рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

    рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдорд╛рд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдВрдЬреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдкреАрдЖрдИ рдкрддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕реАрдзреЗ opencode.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "deepseek": {
          "options": {
            "baseURL": "https://api.deepseek.com"
          }
        }
      }
    }
    

    рдпрджрд┐ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреЗрдЯрд╡реЗ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рддреЛ рдмреЗрд╕рдпреВрдЖрд░рдПрд▓ рдлрд╝реАрд▓реНрдб рдЙрдкрдпреЛрдЧреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдВрдЬреА рдХреЛ рд╕реНрд╡рдпрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:

    export DEEPSEEK_API_KEY=╨▓╨░╤И_╨║╨╗╤О╤З_deepseek
    opencode
    

    рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕реАрдЖрдИ рдФрд░ рдПрдХ рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ: рдХреБрдВрдЬреА рднрдВрдбрд╛рд░рдг рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реА рд░рд╣рддреА рд╣реИред

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ

    рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдПрдЬреЗрдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

    cd ╨▓╨░╤И_╨┐╤А╨╛╨╡╨║╤В
    opencode
    

    рдкрд╣рд▓рд╛ рдХрджрдо рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рдирд╛ рд╣реИ:

    /init
    

    рдУрдкрдирдХреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ AGENTS.md рдмрдирд╛рдПрдЧрд╛ – рдЬреЛ рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЧрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдиреЗ рд▓рд╛рдпрдХ рд╣реИ: рдпрд╣ рдПрдЬреЗрдВрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдкрдирд╛рдИ рдЧрдИ рдкрд░рдВрдкрд░рд╛рдУрдВ рдФрд░ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

    рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

    рдХрд╛рд░реНрдп рдХреЛ рдЕрдиреНрдп рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рддрд░рд╣ рд╣реА рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рддрд░рдХреАрдмреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЬрд╛рдирдиреА рдЪрд╛рд╣рд┐рдП:

    • рдпреЛрдЬрдирд╛ рдореЛрдбред рдЯреИрдм рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рдпреЛрдЬрдирд╛ рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдореЛрдб рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреА рд╣реИред рдкрд╣рд▓реЗ рдореЗрдВ, рд╡рд╣ рдХреЗрд╡рд▓ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ – рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
    • рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд▓рд┐рдВрдХред @ рдХреБрдВрдЬреА рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдЬреЗрдВрдЯ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рдЦреЛрдЬ рдЦреЛрд▓рддреА рд╣реИред
    • рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдирд╛ред /undo рдХрдорд╛рдВрдб рдЕрдВрддрд┐рдо рд╕рдВрдкрд╛рджрди рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рдЕрдиреБрд░реЛрдз рд▓реМрдЯрд╛рддрд╛ рд╣реИ, /redo рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рдХрдИ рдХрджрдо рдкреАрдЫреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
    • рдмрд╛рддрдЪреАрдд рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ред /share рдХрдорд╛рдВрдб рд╡рд░реНрддрдорд╛рди рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХрд╣реАрдВ рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

    рд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдпреЛрдЬрди рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ @ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдмрд┐рдВрджреБ. рдУрдкрдирдХреЛрдб рдХреЛ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЬрдм рдЖрдк рдЯреЛрдХрди рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕реАрдзреЗ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбреАрдкрд╕реАрдХ рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рд╕рддреНрд░ рд╢реАрд░реНрд╖ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рд╕рд╕реНрддреЗ рд╣реЛрддреЗ рд╣реИрдВред рдХреБрдВрдЬреА рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ auth.json рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ – рдпрд╣ рдПрдХ рд╕рд╛рдЭрд╛ рдорд╢реАрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред

    рдФрд░ рдПрдХ рдФрд░ рдмрд╛рдд: рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрддрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рдореЙрдбрд▓ рд▓реЗрдирд╛ рдФрд░ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рд╕реНрддреЗ рдореЗрдВ рджреЗрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

    рд▓рд┐рдВрдХ

    https://opencode.ai/
    https://opencode.ai/docs/
    https://opencode.ai/docs/providers/
    https://github.com/anomalyco/opencode
    https://platform.deepseek.com/api_keys
    https://api-docs.deepseek.com

    рд╕реНрд░реЛрдд

    https://opencode.ai/docs/
    https://opencode.ai/docs/providers/#deepseek
    https://github.com/anomalyco/opencode/releases
    https://models.dev/

  • рдПрдо2 рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ рдореИрдХрдмреБрдХ рдкрд░ рдЕрд╕рд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

    Apple рд╕рд┐рд▓рд┐рдХреЙрди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ Mac рдкрд░, рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ Linux рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ: рдпрд╣рд╛рдВ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдмреВрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдмреВрдЯрд▓реЛрдбрд░ рдкрд░ Apple рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИред рдЕрд╕рд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗ рдЗрд╕рд╕реЗ рдирд┐рдЬрд╛рдд рдкрд╛рдиреЗ рдХрд╛ рдмреАрдбрд╝рд╛ рдЙрдард╛рдпрд╛ – рдЗрд╕рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рдПрдо1 рдФрд░ рдПрдо2 рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдирд┐рдпрдорд┐рдд рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рдореБрдЦ рд╡рд┐рддрд░рдг рдлреЗрдбреЛрд░рд╛ рдЕрд╕рд╛рд╣реА рд░реАрдорд┐рдХреНрд╕ рд╣реИ, рдФрд░ рдпрд╣ рдПрдо2 рдкрд░ рдХрд╛рдлреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЪрд░рдг рджрд░ рдЪрд░рдг рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

    рдЕрд╕рд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рдХреНрдпрд╛ рд╣реИ

    рдкрд░рд┐рдпреЛрдЬрдирд╛ 2020 рдореЗрдВ рд╢реБрд░реВ рд╣реБрдИ, рдЬрдм Apple рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд┐рдкреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдж рдмреВрдЯ рдпреЛрдЬрдирд╛ рдЖрдИ: рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗрд╡рд▓ Apple-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реИред рдЕрд╕рд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рдЕрдкрдирд╛ рдПрдо1рдПрди1 рдмреВрдЯрд▓реЛрдбрд░ рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреВ-рдмреВрдЯ рдФрд░ рдПрдХ рдпреВрдИрдПрдлрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рд▓рд┐рдЦрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп ARM64 рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ linux-asahi рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдореЗрдВ рдЧреИрд░-рдорд╛рдирдХ Apple рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ: GPU, рд╡реАрдбрд┐рдпреЛ, рдзреНрд╡рдирд┐, рдХреИрдорд░рд╛ рдЗрдХрд╛рдЗрдпрд╛рдБред

    рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ macOS рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдбрд┐рд╕реНрдХ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмреВрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред macOS рдпрдерд╛рд╡рдд рд░рд╣рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдбреБрдЕрд▓ рдмреВрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдкрдирд╛ рд╕рд┐рд╕реНрдЯрдо рдЪреБрдиреЗрдВред

    рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

    • M2 рдЪрд┐рдк рдкрд░ рдореИрдХ – рдореИрдХрдмреБрдХ рдПрдпрд░, рдореИрдХрдмреБрдХ рдкреНрд░реЛ 13тА│, рд╕рд╛рде рд╣реА рдПрдо2 рдкреНрд░реЛ рдФрд░ рдПрдо2 рдореИрдХреНрд╕ рдХреЗ рд╕рд╛рде 14тА│ рдФрд░ 16тА│ред M1 рдХрд╛рд░реЗрдВ рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
    • рд╡рд░реНрддрдорд╛рди macOSред рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
    • рдЦрд╛рд▓реА рдЬрдЧрд╣ред рдиреНрдпреВрдирддрдо рд▓рдЧрднрдЧ 30 рдЬреАрдмреА, рдЖрд░рд╛рдорджрд╛рдпрдХ – 100 рдЬреАрдмреА рдпрд╛ рдЕрдзрд┐рдХред рдЬрдЧрд╣ APFS рдХрдВрдЯреЗрдирд░ рд╕реЗ рдХрдЯ рдЧрдИ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдПрдЧреАред
    • macOS рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд╛рд╕рд╡рд░реНрдбред рд╡рд┐рднрд╛рдЬрди рдХреЗ рджреМрд░рд╛рди рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЛрдб рдореЗрдВ рдмреВрдЯ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
    • рдмреИрдХрдЕрдкред рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдПрдХ рдРрд╕рд╛ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдирдП рдмреИрдХрдЕрдк рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

    рдЪрд░рдг 1. рдмреИрдХрдЕрдк рдФрд░ рдЕрджреНрдпрддрди

    рдЯрд╛рдЗрдо рдорд╢реАрди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред MacOS рдХреЛ рдЙрдкрд▓рдмреНрдз рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рд░реАрдмреВрдЯ рдХрд░реЗрдВред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рд╡реЙрд▓реНрдЯ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЛрдб рдореЗрдВ рдмреВрдЯ рдЪрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА – рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    рдЪрд░рдг 2. рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

    MacOS рдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

    curl https://alx.sh | sh
    

    рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИ. рдпрд╣ рд╕реНрд╡рдпрдВ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЗ рдореИрдХ рдореЙрдбрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд┐рддрд░рдг рдЪреБрдирдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ред рдлреЗрдбреЛрд░рд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ:

    curl https://fedora-asahi-remix.org/install | sh
    

    рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдмреЗрд╣рддрд░ рд╣реИ: рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреМрди рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрд╛ рд╡рд┐рдХрд▓реНрдк рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

    рдЪрд░рдг 3. рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди

    рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдВрдЧреЗрдЧрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓реЗрдЖрдЙрдЯ рджрд┐рдЦрд╛рдПрдЧрд╛ред рддрдм рд╕рдВрд╡рд╛рдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

    • MacOS рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП r рджрдмрд╛рдПрдБред
    • рдирдП рд▓рд┐рдирдХреНрд╕ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЖрдХрд╛рд░ рджрд░реНрдЬ рдХрд░реЗрдВред рдпрд╣ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдбрд┐рд╕реНрдХ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдк рдорд┐рдирдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ – рдлрд┐рд░ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдЯреБрдХрдбрд╝рд╛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
    • рдЕрдХреНрд╖рд░ y рд╕реЗ рдЕрдВрдХрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред рдпрд╣ рдЪрд░рдг рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ APFS рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ; рдмрдбрд╝реА рдбрд┐рд╕реНрдХ рдкрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред
    • рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдореБрдХреНрдд рд╡рд┐рднрд╛рдЬрди рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП f рджрдмрд╛рдПрдВред

    рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ: рд▓рд┐рдирдХреНрд╕ рдПрдкреАрдПрдлрдПрд╕ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ macOS рдЕрдЫреВрддрд╛ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдмреИрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

    рдЪрд░рдг 4. рд╡рд┐рддрд░рдг рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрд╛ рдЪрдпрди

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд╛рддрд╛рд╡рд░рдг рдкреЗрд╢ рдХрд░реЗрдЧрд╛ред рдлреЗрдбреЛрд░рд╛ рдЕрд╕рд╛рд╣реА рд░реАрдорд┐рдХреНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрдбреАрдИ рдкреНрд▓рд╛рдЬрд╝реНрдорд╛ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ – рдпрд╣ рдкреНрд░рдореБрдЦ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк GNOME рд╣реИ, рдЬреЛ рдЕрдиреБрднрд╡ рдореЗрдВ macOS рдХреЗ рдЕрдзрд┐рдХ рдирд┐рдХрдЯ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдПрдХ рдиреНрдпреВрдирддрдо рдЫрд╡рд┐ рднреА рд╣реИред

    рдЪрд░рдг 5. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЛрдб рдореЗрдВ рдмреВрдЯ рдХрд░реЗрдВ

    рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рдж, рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЖрдкрдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдЧрд╛, рдФрд░ рдореИрдХ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЧ рдЖрддрд╛ рд╣реИ:

    • рдХрдо рд╕реЗ рдХрдо 25 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ – рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ Apple рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    • рдмреВрдЯ рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рддрдХ рдкрд╛рд╡рд░ рдмрдЯрди рдХреЛ рджрдмрд╛рдХрд░ рд░рдЦреЗрдВред
    • рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡реЙрд▓реНрдпреВрдо рдЪреБрдиреЗрдВ рдФрд░ рдЕрдкрдирд╛ macOS рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВред

    рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдмреВрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗрд╡рд╛ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддреА рд╣реИ: m1n1, U-рдмреВрдЯ рдФрд░ UEFI рд╡рд╛рддрд╛рд╡рд░рдгред рдлрд┐рд░ рдорд╢реАрди рдлрд┐рд░ рд╕реЗ рд░реАрдмреВрдЯ рд╣реЛрдЧреА – рдкрд╛рд╡рд░ рдмрдЯрди рдХреЛ рдлрд┐рд░ рд╕реЗ рджрдмрд╛рдП рд░рдЦреЗрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рд╡реЙрд▓реНрдпреВрдо рдЪреБрдиреЗрдВред рдРрд╕реЗ рдХрдИ рд░реАрдмреВрдЯ рд╣реЛрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рдЪрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореИрдХ macOS рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

    рдЪрд░рдг 6. рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдирд╛рдо, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкрд╛рд╕рд╡рд░реНрдб, рд╕рдордп рдХреНрд╖реЗрддреНрд░, рдХреАрдмреЛрд░реНрдб рд▓реЗрдЖрдЙрдЯред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрд╡рдпрдВ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ – рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рд╕рдордп рдореЗрдВ рдЗрд╕рдореЗрдВ рдкрдВрджреНрд░рд╣ рдорд┐рдирдЯ рд╕реЗ рдЖрдзреЗ рдШрдВрдЯреЗ рддрдХ рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

    рдЬрдм рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдП, рддреЛ рд░реАрдмреВрдЯ рдХрд░реЗрдВ рдФрд░ рдмреВрдЯ рдореЗрдиреВ рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдЪреБрдиреЗрдВред рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ред

    рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ

    рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЖрдХрд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЦреЛ рджреЗрдВрдЧреЗред M2 рд▓реИрдкрдЯреЙрдк рдкрд░ рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

    рдХрд╛рд░реНрдп:

    • рд╡рд╛рдИ-рдлрд╛рдИ рдФрд░ рдмреНрд▓реВрдЯреВрде – рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗред
    • рдПрдХреАрдХреГрдд рд╕реНрдХреНрд░реАрди рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ – рдУрдкрдирдЬреАрдПрд▓ рдФрд░ рд╡рд▓реНрдХрди рд╕рд╣рд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рд┐рддред
    • рдореИрдХрдмреБрдХ рдПрдпрд░ рдФрд░ рдореИрдХрдмреБрдХ рдкреНрд░реЛ рдкрд░ рд╡реЗрдмрдХреИрдо, рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдФрд░ рд╕реНрдкреАрдХрд░ред
    • рд╕реНрд▓реАрдк рдореЛрдб – рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
    • рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡реАрдбрд┐рдпреЛ рдбрд┐рдХреЛрдбрд┐рдВрдЧ – рдкреНрд▓реЗрдпрд░реНрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
    • рдпреВрдПрд╕рдмреА рдкреЛрд░реНрдЯ, рдЬрд┐рд╕рдореЗрдВ рдердВрдбрд░рдмреЛрд▓реНрдЯ рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреВрдПрд╕рдмреА 2 рдФрд░ рдпреВрдПрд╕рдмреА 3 рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

    рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

    • рдЯрдЪ рдЖрдИрдбреАред рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ – рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред
    • рдердВрдбрд░рдмреЛрд▓реНрдЯ (USB4). рд╕реНрдерд┐рддрд┐ – рд╡рд┐рдХрд╛рд╕ рдореЗрдВред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдЬрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдердВрдбрд░рдмреЛрд▓реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╡реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
    • рдпреВрдПрд╕рдмреА-рд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдирд┐рдЯрд░ред рдбрд┐рд╕реНрдкреНрд▓реЗрдкреЛрд░реНрдЯ рдСрд▓реНрдЯ рдореЛрдб рднреА рдЪрд╛рд▓реВ рд╣реИред рдПрдо2 рд▓реИрдкрдЯреЙрдк рдореЗрдВ рдПрдЪрдбреАрдПрдордЖрдИ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░реАрди рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдПрдо2 рдкреНрд░реЛ рдФрд░ рдПрдо2 рдореИрдХреНрд╕ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ рдПрдЪрдбреАрдПрдордЖрдИ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред USB-C рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдиреАрдЪреЗ рдлрд╝реЗрдпрд░реАрдбрд╕реНрдЯ рдХреЛрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реИред
    • рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡реАрдбрд┐рдпреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣реИ, рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИред

    рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ, рдпрд╣ рдХреЛрдб, рдЯрд░реНрдорд┐рдирд▓, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдореЙрдирд┐рдЯрд░ рдбреЙрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

    рдлреЗрдпрд░реАрдбрд╕реНрдЯ рдХреЛрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдирд┐рдЯрд░

    рдпреВрдПрд╕рдмреА-рд╕реА рдЫрд╡рд┐ рдЖрдЙрдЯрдкреБрдЯ рдЕрд╕рд╛рд╣реА рд▓рд┐рдирдХреНрд╕ рдЯреАрдо рдХреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдлреЗрдпрд░реАрдбрд╕реНрдЯ рдХрд░реНрдиреЗрд▓ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд╕рд╛рд╣реА-рдлреЗрдпрд░реАрдбрд╕реНрдЯ-рдбрд┐рд╕реНрдкреНрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд░реИрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

    git clone https://github.com/bharambetejas/asahi-fairydust-display
    cd asahi-fairydust-display
    chmod +x asahi-fairydust-build.sh
    ./asahi-fairydust-build.sh
    

    рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреЗрдпрд░реАрдбрд╕реНрдЯ рд╢рд╛рдЦрд╛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреА рд╣реИ, рдХрд░реНрдиреЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ рдорд╛рдирдХ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦрддреА рд╣реИ рдФрд░ GRUB рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИред рдЖрдкрдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 15 рдЬреАрдмреА рдЦрд╛рд▓реА рдЬрдЧрд╣, рдПрдХ рдпреВрдПрд╕рдмреА-рд╕реА тЖТ рдПрдЪрдбреАрдПрдордЖрдИ рдпрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗрдкреЛрд░реНрдЯ рдПрдбрд╛рдкреНрдЯрд░ рдФрд░ 60-90 рдорд┐рдирдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд░реАрдмреВрдЯ рдХреЗ рдмрд╛рдж, GRUB рдореЗрдВ -fairydust рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рд╕рдмрд╕реЗ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ USB-C рдкреЛрд░реНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВред

    рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪреЗрдВ:

    uname -r
    glxinfo | grep "OpenGL renderer"
    xrandr
    

    рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рддреНрдпрдп -рдлреЗрдпрд░реАрдбрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреВрд╕рд░реЗ рдХреЛ Apple M2 рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, llvmpipe рдирд╣реАрдВ, рддреАрд╕рд░реЗ рдХреЛ рдХрдиреЗрдХреНрдЯреЗрдб DP-1 рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдЖрд░рдХреНрд╖рдг. рд╢рд╛рдЦрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ рдПрдХ рдпреВрдПрд╕рдмреА-рд╕реА рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рд╣реЙрдЯ рдкреНрд▓рдЧрд┐рдВрдЧ рд╕реЗ рдирд╣реАрдВ рдмрдЪрддрд╛ рд╣реИ – рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рд▓реЗ рдЧрдП рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рд░реАрдмреВрдЯ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ: рдЗрд╕рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░рдг рдЕрдХреНрд╖рдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╡реЗрд▓реИрдВрдб рдкрд░ рд▓реЙрдЧрд┐рди рд▓реВрдк рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рд╣реИред рдбреАрдПрдирдПрдл рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреЙрдХ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ /boot/dtb рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЖрдЙрдЯрдкреБрдЯ рдЪреБрдкрдЪрд╛рдк рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ – рдлрд┐рд░ рдмрд┐рд▓реНрдб рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдорд╛рдирдХ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЫреБрдЖ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ: рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕реЗ GRUB рдореЗрдиреВ рдореЗрдВ рдЪреБрдиреЗрдВред

    рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рдмрдЬрд╛рдп рдмрд╛рд╣рд░реА рдбреНрд░рд╛рдЗрд╡

    рдпрд╣рд╛рдБ рдЕрдЪреНрдЫрд╛ рдкрдХреНрд╖ рд╣реИ. рдореИрдХрдмреБрдХ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдореЗрдореЛрд░реА рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдмреЛрд░реНрдб рдкрд░ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рдЦрд░реАрдж рдкрд░ рдПрдХ рдмрд╛рд░ рдЪреБрдиреА рдЬрд╛рддреА рд╣реИред MacOS рдореЗрдВ, рдмрд╛рд╣рд░реА рдбреНрд░рд╛рдЗрд╡ рдмрд╛рд╣рд░реА рд╣реА рд░рд╣рддреА рд╣реИ – рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рд▓рд┐рдирдХреНрд╕ рдореЗрдВ, рдпрд╣ рд╕реАрдорд╛ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ: USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА SSD рдПрдХ рдирд┐рдпрдорд┐рдд рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдЙрдВрдЯ рдкреЙрдЗрдВрдЯ рдХреЛ /etc/fstab рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА, рд╕реНрдЯреАрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЗрдореЗрдЬ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдореЙрдбрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдРрд╕рд╛ рдХрд░реЗрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЕрдкрдЧреНрд░реЗрдб рд╣реИ рдЬреЛ рдЗрд╕ рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

    рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рднрд╛рдЬрди рдХреЗ рдпреВрдпреВрдЖрдИрдбреА рдХреЛ рджреЗрдЦреЗрдВ:

    lsblk -f
    sudo blkid
    

    рдлрд┐рд░ /etc/fstab рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:

    UUID=╨▓╨░╤И-uuid  /home  ext4  defaults,nofail  0  2
    

    рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕реНрд╡рдпрдВ рдХреЙрдкреА рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рд╣рд░реА рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдкреВрд░реЗ /рдШрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ – рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛрддрд╛ рд╣реИред

    рдХреБрдЫ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБред nofail рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ: рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдпрджрд┐ рдбрд┐рд╕реНрдХ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред USB рдбреНрд░рд╛рдЗрд╡ рдХреА рдЧрддрд┐ рдЕрднреА рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд NVMe рд╕реЗ рдХрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ I/O рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдбрд┐рд╕реНрдХ рдкрд░ рдЬрдЧрд╣ рдЫреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдФрд░ рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдкрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╕рдордп рдбрд┐рд╕реНрдХ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ – рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред

    рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

    рдЬрдм рдЖрдк рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╛рд╡рд░ рдмрдЯрди рджрдмрд╛рдП рд░рдЦреЗрдВ – рдмреВрдЯ рдореЗрдиреВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЗрд╕рдореЗрдВ macOS рдФрд░ Linux рд╣реЛрдВрдЧреЗред рдЖрдк macOS рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: “рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ” тЖТ “рд╕рд╛рдорд╛рдиреНрдп” тЖТ “рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХ”ред рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдмрд┐рдирд╛ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рд▓рд┐рдВрдХ

    https://asahilinux.org/fedora/
    https://asahilinux.org/docs/
    https://asahilinux.org/docs/platform/feature-support/m2/
    https://fedoraproject.org/asahi-remix
    https://github.com/bharambetejas/asahi-fairydust-display
    https://github.com/AsahiLinux/linux/tree/fairydust

    рд╕реНрд░реЛрдд

    https://asahilinux.org/docs/platform/feature-support/m2/
    https://discussion.fedoraproject.org/t/fedora-asahi-remix-installation-guide/
    https://github.com/AsahiLinux/docs
    https://github.com/bharambetejas/asahi-fairydust-display/blob/main/README.md
    https://github.com/bharambetejas/asahi-fairydust-display/blob/main/asahi-fairydust-build.sh

  • рдПрдЖрд░рдПрдо рдореИрдХ рдкрд░ рдЕрддрд┐рдерд┐ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

    ARM64 рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ рдореИрдХ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЧреЗрд╕реНрдЯ рдПрдбрд┐рд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ред

    рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛

    рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдХрд╛ ARM64 рдмрд┐рд▓реНрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЫрд╡рд┐ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕.рдПрдк рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред

    рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

    рд╣рдо рдПрдХ рдирдИ рдорд╢реАрди рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдмрдВрдЯреВ рд╕рдВрд╕реНрдХрд░рдг (64-рдмрд┐рдЯ рдПрдЖрд░рдПрдо) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣рдо рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:

    • рдЯреАрдкреАрдПрдо – рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
    • UEFI – рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
    • рд░реИрдо – 4096 рдПрдордмреАред
    • рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдХ – VMSVGA (VBoxLinuxAdditions рдХреЗ рд▓рд┐рдП)ред
    • рдкреНрд░реЛрд╕реЗрд╕рд░ – 4 рдХреЛрд░.

    рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

    ARM64 рдХреЗ рд▓рд┐рдП Ubuntu рд╕рд░реНрд╡рд░ ISO рдЫрд╡рд┐ рдХреЛ CD-ROM рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рдбрд╛рдЙрдирд▓реЛрдб рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдСрдкреНрдЯрд┐рдХрд▓ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рд░рдЦреЗрдВред рд╣рдо рдорд╢реАрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред

    рдЬреБрдмрдВрдЯреВ-рдбреЗрд╕реНрдХрдЯреЙрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ

    XFCE рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

    sudo apt update
    sudo apt install -y xubuntu-desktop
    

    рд▓реЙрдЧрд┐рди рдкреНрд░рдмрдВрдзрдХ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдореЗрдВ, рд▓рд╛рдЗрдЯрдбреАрдПрдо рдЪреБрдиреЗрдВред

    рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░реЗрдВ:

    sudo reboot
    

    рдЕрддрд┐рдерд┐ рдкрд░рд┐рд╡рд░реНрдзрди

    рдкрд╣рд▓реЗ рдмреВрдЯ рдХреЗ рдмрд╛рдж, рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

    sudo apt update
    sudo apt install -y build-essential linux-headers-$(uname -r)
    

    рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддрд┐рдерд┐ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдбрд┐рд╡рд╛рдЗрд╕ тЖТ рдорд╛рдЙрдВрдЯ рдЕрддрд┐рдерд┐ рдкрд░рд┐рд╡рд░реНрдзрди рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ред рдбрд┐рд╕реНрдХ рдЕрддрд┐рдерд┐ рдХреЗ рдЕрдВрджрд░ /media/$USER рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

    Xubuntu рдореЗрдВ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ, рдорд╛рдЙрдВрдЯреЗрдб рдбрд┐рд╕реНрдХ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЪрд▓рд╛рдПрдВ:

    cd /media/$USER/*
    sudo ./VBoxLinuxAdditions-arm64.run
    

    рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░реЗрдВ:

    sudo reboot
    

    рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

    рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реИрдВ:

    lsmod | grep vbox
    

    рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ vboxguest рдФрд░ vboxsf рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдорд╢реАрди рдЧреБрдгреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрддрд┐рдерд┐ рдХреЗ рдЕрдВрджрд░ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:

    sudo mkdir -p /media/sf_shared
    sudo mount -t vboxsf shared /media/sf_shared
    

    рдХрд╛рдордХрд╛рдЬреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

    • рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░ – рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ vboxsf рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддрд┐рдерд┐ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред
    • рд╕рд╛рдЭрд╛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб – рд╣реЛрд╕реНрдЯ рдФрд░ рдЕрддрд┐рдерд┐ рдХреЗ рдмреАрдЪ рдЯреЗрдХреНрд╕реНрдЯ рдХреЙрдкреА рдХрд░реЗрдВред
    • рдорд╛рдЙрд╕ рдПрдХреАрдХрд░рдг – рдХрд░реНрд╕рд░ рдорд╢реАрди рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИред
    • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░рд┐рд╡рд░реНрддрди – рдЕрддрд┐рдерд┐ рд╕реНрдХреНрд░реАрди рд╡рд┐рдВрдбреЛ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред
    • рд╕рдордп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди – рдЕрддрд┐рдерд┐ рдХрд╛ рд╕рдордп рдореЗрдЬрд╝рдмрд╛рди рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рд╕реНрд░реЛрдд

    https://www.virtualbox.org/manual/topics/guestadditions.html
    https://forums.virtualbox.org/viewtopic.php?t=112886

  • рдбреАрдкрд╕реАрдХ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

    рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдПрдВрдереНрд░реЛрдкрд┐рдХ рдХрд╛ рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдЬреЗрдВрдЯ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрдорд╛рдВрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рдЕрд╕реБрд╡рд┐рдзрд╛ рд▓рд╛рдЧрдд рд╣реИ: рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрджрд░реНрдн рд╡рд╛рд▓реЗ рд▓рдВрдмреЗ рд╕рддреНрд░ рд╕рджрд╕реНрдпрддрд╛ рдмрдЬрдЯ рдХреЛ рдЬрд▓реНрджреА рдЦрддреНрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВред

    рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ. рдбреАрдкрд╕реАрдХ рдПрдВрдереНрд░реЛрдкрд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдзрд╛рд░ рдкрддреЗ рдФрд░ рдЯреЛрдХрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдХрд┐рд╕реА рднреА рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдпрд╛ рдкреИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ macOS, Linux рдФрд░ Windows рдкрд░ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред

    рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

    рдХрд╛рд░рдг рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
    – рдХреАрдорддред рдбреАрдкрд╕реАрдХ рдореЙрдбрд▓ рдХреНрд▓рд╛рдЙрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рд╕рд╕реНрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдорд┐рдд рдПрдЬреЗрдВрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП – рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛, рдорд╛рдореВрд▓реА рд╕рдВрдкрд╛рджрди, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ – рд╢реАрд░реНрд╖ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
    – рдЙрдкрд▓рдмреНрдзрддрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдВрдереНрд░реЛрдкрд┐рдХ рдХрд╛рд░реНрдб рд╕реЗ рднреБрдЧрддрд╛рди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреАрдкрд╕реАрдХ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╡рд┐рдХрд▓реНрдк рдмрди рдЬрд╛рддрд╛ рд╣реИред
    – рдкреНрд░рдпреЛрдЧред рдпрд╣ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓ рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рд╣реА рдХреЛрдбрдмреЗрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред

    рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП

    рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдбреАрдкрд╕реАрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрджреЗрд╢ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
    1. Node.js 18 рдпрд╛ рдмрд╛рдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░, рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП Git рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
    2. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдпрдВ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
    3. рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.

    npm install -g @anthropic-ai/claude-code
    claude --version
    

    рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕рдлрд▓ рд░рд╣рд╛ред рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдЖрдкрдХреЗ рдбреАрдкрд╕реАрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдореЗрдВ рдХреБрдВрдЬреА рдкреГрд╖реНрда рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИред

    рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

    рд╕рд╛рд░рд╛ рдПрдХреАрдХрд░рдг рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред MacOS рдФрд░ Linux рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
    export ANTHROPIC_AUTH_TOKEN=╨▓╨░╤И_╨║╨╗╤О╤З_deepseek
    
    export ANTHROPIC_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
    export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
    export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
    
    export CLAUDE_CODE_EFFORT_LEVEL=max
    export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432
    

    PowerShell рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВ:

    $env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
    $env:ANTHROPIC_AUTH_TOKEN="╨▓╨░╤И_╨║╨╗╤О╤З_deepseek"
    $env:ANTHROPIC_MODEL="deepseek-flash[1m]"
    

    рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реИред `ANTHROPIC_BASE_URL` рд╡реИрд░рд┐рдПрдмрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдПрдВрдереНрд░реЛрдкрд┐рдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреАрдкрд╕реАрдХ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред `ANTHROPIC_AUTH_TOKEN` рдЖрдкрдХреА рдХреБрдВрдЬреА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╢реЗрд╖ рдЪрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рдХрд┐рд╕ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред `[1m]` рдкреНрд░рддреНрдпрдп рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рд╣реИрдВ – рдпрд╣ рд▓рдЧрднрдЧ рджрд╕ рд▓рд╛рдЦ рдЯреЛрдХрди рдХреА рд╕рдВрджрд░реНрдн рд╡рд┐рдВрдбреЛ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдПрдЬреЗрдВрдЯ рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, `CLAUDE_CODE_AUTO_COMPACT_WINDOW` рдХреЛ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рд╕рдВрдкреАрдбрд╝рди рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд╛рдо рди рдХрд░реЗред

    рд╣рд░ рдмрд╛рд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдирд╛, рдмрд▓реНрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдлрд┐рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдард╛рдИ рдЬрд╛рдПрдВрдЧреАред

    {
      "env": {
        "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
        "ANTHROPIC_AUTH_TOKEN": "╨▓╨░╤И_╨║╨╗╤О╤З_deepseek",
        "ANTHROPIC_MODEL": "deepseek-flash[1m]",
        "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-flash",
        "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-flash"
      }
    }
    

    рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдПрдЬреЗрдВрдЯ рдЪрд▓рд╛рдПрдБ:

    cd ╨▓╨░╤И_╨┐╤А╨╛╨╡╨║╤В
    claude
    

    рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб

    рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рди рдХреЗрд╡рд▓ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдмрд▓реНрдХрд┐ рд╡реАрдПрд╕ рдХреЛрдб рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: Cmd+Shift+X рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдирд▓ рдЦреЛрд▓реЗрдВ, “рдХреНрд▓рд╛рдЙрдб рдХреЛрдб” рдвреВрдВрдвреЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╡рд┐рд╕реНрддрд╛рд░ рдПрдиреНрдереНрд░реЛрдкрд┐рдХ рджреНрд╡рд╛рд░рд╛ рд╣реА рдирд┐рд░реНрдорд┐рдд рд╣реЛрддрд╛ рд╣реИред

    рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕реАрдПрд▓рдЖрдИ рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдЯрд░реНрдорд┐рдирд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди ~/.claude/settings.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╣рд╛рдВ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ – рд▓реЗрдХрд┐рди рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рдЬреЛ рдЕрдХреНрд╕рд░ рднреНрд░рдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред

    рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИ

    рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ `claudeCode.environmentVariables` рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕.рдЬреЗрд╕рди рд╕реЗред рд╕реЗрдЯрд┐рдВрдЧреНрд╕.рдЬреЗрд╕рди рд╕реЗ рдорд╛рди рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ – рдпрд╛рдиреА, рдПрдкреАрдЖрдИ рдкрддрд╛ рдФрд░ рдЪрдпрдирд┐рдд рдореЙрдбрд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрдард╛рдП рдЬрд╛рддреЗ рд╣реИрдВ – рд▓реЗрдХрд┐рди рд╡реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реНрд╡рдпрдВ рдХреА рд▓реЙрдЧрд┐рди рдЬрд╛рдВрдЪ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИред

    рдЗрд╕реЗ рд╡реАрдПрд╕ рдХреЛрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: `claudeCode.environmentVariables` рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░реЗрдВ рдФрд░ рд▓реЙрдЧрд┐рди рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред

    {
      "claudeCode.environmentVariables": [
        { "name": "ANTHROPIC_BASE_URL", "value": "https://api.deepseek.com/anthropic" },
        { "name": "ANTHROPIC_AUTH_TOKEN", "value": "╨▓╨░╤И_╨║╨╗╤О╤З_deepseek" },
        { "name": "ANTHROPIC_MODEL", "value": "deepseek-flash[1m]" }
      ],
      "claudeCode.disableLoginPrompt": true
    }
    

    macOS рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ

    рдпрджрд┐ рдЖрдк рдбреЙрдХ рдпрд╛ рдлрд╛рдЗрдВрдбрд░ рд╕реЗ рд╡реАрдПрд╕ рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ ~/.zshrc рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХ macOS рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдпрд╛рдиреА, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╢реЗрд▓ рдореЗрдВ `export ANTHROPIC_BASE_URL=…` рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ – рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрд╕рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

    рдЗрд╕рд╕реЗ рджреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, `claudeCode.environmentVariables` рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╢реЗрд▓ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрдВред рджреВрд╕рд░реЗ, рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдПрдХ рд╢реЗрд▓ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЪрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

    code .
    

    рдХреНрдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛

    рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рджрд╛рддрд╛ рдкрд░, рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ claude.ai рдЦрд╛рддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
    – рдХреНрд▓рд╛рдЙрдб рд╕рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдпреЛрдЬрдирд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд░, рд╡реЙрдпрд╕ рдЗрдирдкреБрдЯ рдФрд░ рд╡реЗрдм рдЯреИрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛;
    – рд▓реЙрдЧрдЖрдЙрдЯ рдЖрджреЗрд╢ рдореЗрдиреВ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ;
    – `/рдЙрдкрдпреЛрдЧ` рдпреЛрдЬрдирд╛ рд╕реАрдорд╛ рдХреЗ рдмрдЬрд╛рдп рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреА рдЦрдкрдд рдФрд░ рдЯреЛрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рдПрдЧрд╛;
    – рдпрджрд┐ рдЖрдзрд╛рд░ рдкрддрд╛ рдПрдВрдереНрд░реЛрдкрд┐рдХ рдирд╣реАрдВ рд╣реИ рддреЛ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

    рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдФрд░ рдпрд╣ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЗрдЯрдЕрдк рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

    рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ JetBrains рдХрд╛ рдЕрдкрдирд╛ рдкреНрд▓рдЧрдЗрди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЗрд╕рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд CLI рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХреАрдХреГрдд рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдПрдХ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдЪрд░ рдХреЗ рд╕рд╛рде рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдЖрдИрдбреАрдИ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдбреАрдкрд╕реАрдХ рдХреНрд▓рд╛рдЙрдб рдореЙрдбрд▓ рдирд╛рдореЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдордЭрддрд╛ рд╣реИ

    рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЙрдбрд▓реЛрдВ рдХреЛ рдХреНрд▓рд╛рдЙрдб-рдУрдкрд╕, рдХреНрд▓рд╛рдЙрдб-рд╕реЙрдиреЗрдЯ рдФрд░ рдХреНрд▓рд╛рдЙрдб-рд╣рд╛рдЗрдХреВ рдЬреИрд╕реЗ рдирд╛рдореЛрдВ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдбреАрдкрд╕реАрдХ рдЗрди рдирд╛рдореЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдирд╛рдо рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ:
    – рдЬреЛ рдХреБрдЫ рднреА рдХреНрд▓рд╛рдЙрдб-рдУрдкрд╕ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ depseek-v4-pro рдкрд░ рдЬрд╛рддрд╛ рд╣реИ;
    – рдЬреЛ рдХреБрдЫ рднреА рдХреНрд▓рд╛рдЙрдб-рд╕реЙрдиреЗрдЯ рдпрд╛ рдХреНрд▓рд╛рдЙрдб-рд╣рд╛рдЗрдХреВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдбреАрдкрд╕реАрдХ-рдлреНрд▓реИрд╢ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ;
    – рдЕрдЬреНрдЮрд╛рдд рдореЙрдбрд▓ рдХрд╛ рдирд╛рдо рднреА рдШрдЯрд╛рдХрд░ рдбреАрдкрд╕реАрдХ-рдлрд╝реНрд▓реИрд╢ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рднреА, рдПрдХреАрдХрд░рдг рдХрд╛рдо рдХрд░реЗрдЧрд╛ – рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдореЙрдбрд▓ рдФрд░ рдХрд┐рд╕ рдЯреИрд░рд┐рдл рдкрд░ рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реАрд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рднреА рднреВрдорд┐рдХрд╛рдПрдБ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВред

    рдХрд┐рд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ

    рдЕрдиреБрдХреВрд▓рддрд╛ рдЕрдзреВрд░реА рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреАрдкрд╕реАрдХ рдХреЗрд╡рд▓ рдПрдВрдереНрд░реЛрдкрд┐рдХ рдПрдкреАрдЖрдИ рдХреА рдХреБрдЫ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рддрд╛ рд╣реИ:

    – рдХреИрд╢рд┐рдВрдЧ рд╕рдВрдХреЗрддред `cache_control` рдлрд╝реАрд▓реНрдб рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд╣реА рд╕рдВрджрд░реНрдн рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рди рдХрд░рдирд╛ рдкрдбрд╝реЗред рдпрд╣рд╛рдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рддреНрд░ рдЖрдкрдХреА рдкреНрд░рддрд┐ рдЯреЛрдХрди рдХреАрдордд рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рд╕рдВрд╡рд╛рдж рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдордп-рд╕рдордп рдкрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╡рд╛рдж рд╢реБрд░реВ рдХрд░реЗрдВред
    – рд╕реЛрдЪ рдмрдЬрдЯред `рд╕реЛрдЪ` рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрдВрджрд░ `рдмрдЬрдЯ_рдЯреЛрдХрди` рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
    – рд╡рд┐рд╡рд┐рдзред `top_k`, `service_tier`, `container` рдлрд╝реАрд▓реНрдб рдФрд░ API рд╕реЗ MCP рд╕рд░реНрд╡рд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рднреА рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    – рдПрдорд╕реАрдкреАред рдбреАрдкрд╕реАрдХ рдкрдХреНрд╖ рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдорд╕реАрдкреА рд╕рд░реНрд╡рд░ рддрдВрддреНрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдЬреЗрдВрдЯ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдХрд░рдг – рдлрд╛рдЗрд▓реЗрдВ рдкрдврд╝рдирд╛, рд╕рдВрдкрд╛рджрди, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛, рдЦреЛрдЬ рдХрд░рдирд╛ – рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред

    рдЕрд▓рдЧ рд╕реЗ, рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╕рдореБрджрд╛рдп рдореЗрдВ `рдбреАрдПрд╕-рд╕реАрд╕реА-рдкреНрд░реЙрдХреНрд╕реА` рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдФрд░ рдбреАрдкрд╕реАрдХ рдХреЗ рдмреАрдЪ рд░рдЦреА рдЧрдИ рд╣реИрдВ рдФрд░ рдЫреЛрдЯреА рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореБрдЦреНрдп рд╕рддреНрд░ рдФрд░ рдЙрдк-рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдорд╛рдирдХ рд╕реЗрдЯрдЕрдк рдЕрд╕реНрдерд┐рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдРрд╕реА рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред

    рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд░рд╛рдЙрдЯрд░

    рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдПрдХ рдореЙрдбрд▓ рд░рдЦрддреА рд╣реИред рд▓реЗрдХрд┐рди рдПрдЬреЗрдВрдЯ рдмрд╣реБрдд рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ: рд╡рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рдЫреЛрдЯреА-рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЙрдб-рдХреЛрдб-рд░рд╛рдЙрдЯрд░ (рд╕реАрд╕реАрдЖрд░) рдХрд░ рд╕рдХрддрд╛ рд╣реИ – рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЧреЗрдЯрд╡реЗ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдФрд░ рдореЙрдбрд▓ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЦрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред

    рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ

    – рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реВрдЯрд┐рдВрдЧред рдЖрдк рдпрд╣ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рдореБрдЦреНрдп рд╕рддреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдореЛрдб рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рдВрдЧреЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╕рд╕реНрддреЗ рдореЙрдбрд▓ рдХреЛ рджрд┐рдирдЪрд░реНрдпрд╛ рджреЗ рджреЗрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
    – рдмреИрдХрдЕрдк рд╡рд┐рдХрд▓реНрдкред рдпрджрд┐ рдкреНрд░рджрд╛рддрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз рд╕рддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рдореЙрдбрд▓ рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
    – рдЕрд╡рд▓реЛрдХрдирд╢реАрд▓рддрд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрд░реЛрдз рд▓реЙрдЧ, рджреЗрд░реА, рдЯреЛрдХрди рдЦрдкрдд рдФрд░ рд▓рд╛рдЧрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ – рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рд╕реАрдзреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред
    – рдХрдИ рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддрд╛ред рдкреНрд░рджрд╛рддрд╛, рдХреБрдВрдЬреА рдФрд░ рдирд┐рдпрдо рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкрддреЗ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред

    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ – рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

    рдпрд╣рд╛рдВ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рд╕рдордп рдмрдЪреЗрдЧрд╛ред рд╕реАрд╕реАрдЖрд░ рдХреЛ рдЗрд╕рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирдпрд╛ рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЦреЛрдЬ рдореЗрдВ рдЖрдкрдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓рдЧрднрдЧ рд╕рднреА рд▓реЗрдЦ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

    рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд░рд╛рдЙрдЯрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ ~/.claude-code-router/config.json рдореЗрдВ рдерд╛, рдФрд░ рд╕рдм рдХреБрдЫ `ccr рдХреЛрдб` рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛. рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг (3.x) SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЕрднреА рддрдХ рдХреЛрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВ рд╣реИ рддреЛ рдкреБрд░рд╛рдиреЗ config.json рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдмрд╛рд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ – рдЙрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рдВрдкрд╛рджрди рдХреБрдЫ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

    рдпрд╛рдиреА, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ config.json рдФрд░ `ccr рдХреЛрдб` рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓реЗ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛, рддреЛ рдЖрдк рдПрдХ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЕрдм рдХреЛрдИ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИред рдпреЗ рддреБрдореНрд╣рд╛рд░реА рднреВрд▓ рдирд╣реА рд╣реИред

    рд╕реНрдерд╛рдкрдирд╛

    рдЖрдкрдХреЛ Node.js 22 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

    npm install -g @musistudio/claude-code-router
    ccr ui
    

    `ccr ui` рдХрдорд╛рдВрдб рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реЗрд╡рд╛ рд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрд▓рддрд╛ рд╣реИред рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ: `ccr рдкреНрд░рд╛рд░рдВрдн` рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, `ccr stop` рдЗрд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, `ccrserv` рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдкрдХреЛ рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред

    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреЛрд░реНрдЯ 3458 рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд╡реЗ рд╕реНрд╡рдпрдВ рдкреЛрд░реНрдЯ 3456 рдкрд░ рд░рд╣рддрд╛ рд╣реИред

    рд╕реЗрдЯрд┐рдВрдЧреНрд╕

    рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдм рдХреБрдЫ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
    1. рдкреНрд░рджрд╛рддрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдбреАрдкрд╕реАрдХ рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреА рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдбреЛрдореЗрди рд╣реА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЪреИрдЯ/рдкреВрд░реНрдгрддрд╛ рдмрд┐рдВрджреБ рддрдХ рдХрд╛ рдкреВрд░рд╛ рдкрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
    2. рдореЙрдбрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ рдХреНрдпрд╛ рд╣реИ – рд╡рд┐рд╡рд░рдг рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
    3. рдПрдЬреЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЙрдбрд▓ рд╕реЗрдЯ рдХрд░реЗрдВред
    4. рд░реВрдЯрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдирд┐рдпрдореЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ: рдХреМрди рд╕рд╛ рдореЙрдбрд▓ рдХрд┐рд╕ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред
    5. рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреГрд╖реНрда рдкрд░, рдПрдХ рд╕реАрд╕реАрдЖрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреБрдВрдЬреА рдмрдирд╛рдПрдВ – рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдбреАрдкрд╕реАрдХ рдХреБрдВрдЬреА рдХрд╛ рдирд╣реАрдВред

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЬреЛ рдХреБрдЫ рдмрдЪрддрд╛ рд╣реИ рд╡рд╣ рдЧреЗрдЯрд╡реЗ рдкрд░ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рднреЗрдЬрдирд╛ рд╣реИ: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЧреЗрдЯрд╡реЗ рдкрддреЗ рдХреЛ рдЖрдзрд╛рд░ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдФрд░ рд╕реАрд╕реАрдЖрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреБрдВрдЬреА рдХреЛ рдЯреЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

    рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд: рд░реВрдЯрд┐рдВрдЧ рдирд┐рдпрдо рди рдХреЗрд╡рд▓ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рднреА рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рддрд░реНрдХ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

    рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ

    рдбреАрдкрд╕реАрдХ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдЬреЗрдВрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд▓рд╛рдЧрдд рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЖрдкрдХреЛ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рд╕рдорд╛рди рдЯреВрд▓ рдФрд░ рд╕рдорд╛рди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдореЙрдбрд▓ рдкрд░ред рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд╡рд░реНрддреА рд╣реИ: рдПрдВрдереНрд░реЛрдкрд┐рдХ рдореЙрдбрд▓ рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

    рд╕реАрдорд╛рдПрдБ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ: рдХреЛрдИ рддреНрд╡рд░рд┐рдд рдХреИрд╢ рдирд╣реАрдВ рд╣реИ, рдПрдкреАрдЖрдИ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛, рдФрд░ рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рдо рдХреЗ рд▓рд┐рдП – рдиреЗрд╡рд┐рдЧреЗрд╢рди, рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ – рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг: рдУрдиреА-рдПрдХреНрд╕рдЯреЗрдВрдбреЗрдб

    рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рдЬреАрд╡рдВрдд рдЙрджрд╛рд╣рд░рдг рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрдиреА-рдПрдХреНрд╕рдЯреЗрдВрдбреЗрдб рд╣реИ, рдЬреЛ рдРрдкреНрдкрд▓ рд╕рд┐рд▓рд┐рдХреЙрди рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдУрдиреА (рдмреБрдВрдЧреА, 2001) рдХреЗ рдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИред рдЦреЗрд▓ рдХреЗ рд╕реНрд░реЛрдд рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдФрд░ рд▓рдЧрднрдЧ рдмреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ; рдЙрдирдореЗрдВ рдХрднреА рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реБрдЖ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рд╣рдЬрд╝рд╛рд░реЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреАрдкрд╕реАрдХ рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИрдВ: F5/F9 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬрд╝ рдмрдЪрдд рдФрд░ рд▓реЛрдбрд┐рдВрдЧ, рдПрдХ рдХреБрдВрдЬреА рд╣реЛрд▓реНрдб рдмреНрд▓реЙрдХ, рдФрд░ рдПрдХ -рдиреЛрдбрдореЗрдЬ рд▓реЙрдиреНрдЪ рдлрд╝реНрд▓реИрдЧ рдЬреЛ рдХреНрд╖рддрд┐ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

    рдКрдкрд░ рдЬреЛ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕рднреА рдХрд╛рд░реНрдп рдПрдХ рдмрдбрд╝реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ – рдПрдЬреЗрдВрдЯ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред рдбреАрдкрд╕реАрдХ рдкрд░ рдРрд╕реЗ рд╕рддреНрд░реЛрдВ рдХреА рд▓рд╛рдЧрдд рдПрдВрдереНрд░реЛрдкрд┐рдХ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реИ: рдЕрд╕реЗрдВрдмрд▓реА, рд▓реЗрд╡рд▓ рд░рди рд╕реНрдЯреИрдВрдб рдФрд░ рдСрдлрд╝рд▓рд╛рдЗрди рдкрд░реАрдХреНрд╖рдгред

    рд▓рд┐рдВрдХ

    https://platform.deepseek.com/api_keys
    https://api-docs.deepseek.com
    https://docs.anthropic.com/en/docs/claude-code
    https://github.com/anthropics/claude-code
    https://github.com/musistudio/claude-code-router
    https://ccrdesk.top/en/guides/cli/
    https://github.com/zefir1990/Oni-Extended

    рд╕реНрд░реЛрдд

    https://api-docs.deepseek.com/guides/anthropic_api
    https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code
    https://ccrdesk.top/en/routing/
    https://code.claude.com/docs/en/vs-code

  • рдореБрдЦреНрдп рдмрд╛рдд: рдереЛрдХ рдЫрд╡рд┐ рд╕рдВрдкреАрдбрд╝рди рдФрд░ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛

    рдореИрдореИрдЯ (рдорд╛рд╕ рдЗрдореЗрдЬ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдЯреВрд▓) рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рд╣реИ рдЬреЛ рдмреИрдЪ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ: рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди Python 3.10+ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ ImageMagick рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

    рд▓рд┐рдВрдХ

    https://github.com/zefir1990/maimat

  • рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рд╕реНрдЯреАрдо рдкрд░ рд╣реИ!

    рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рд╕реНрдЯреАрдо рдкрд░ рд╣реИ!

    рдареАрдХ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдЯреАрдо рдкреЗрдЬ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ рдФрд░ рддрдм рд╕реЗ рдпрд╣ рдЧреЗрдо рдХрд╛рдлреА рдЖрдЧреЗ рдмрдврд╝ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕ рджреМрд░рд╛рди, рдбреЛрдирдХреА рд╣рд┐рд▓реНрд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдпреЛрдЧ, рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдЦреЛрдЬреЗрдВ рд╣реБрдИрдВред

    рдЧреЗрдордкреНрд▓реЗ рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд╣реИ, рдФрд░ рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдкрдирд╛ рдЕрд╕рд▓реА рдЪреЗрд╣рд░рд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕ рд╡рд╣реА рдмрдирдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ – рдХреЙрдореЗрдбреА рдлрд░реНрд╕реНрдЯ рдкрд░реНрд╕рди рд░реЙрдЧреБрд▓рд╛рдЗрдХ рдкреИрд░реЛрдбреА рд╕рд░реНрд╡рд╛рдЗрд╡рд▓ рд╣реЙрд░рд░ред

    рдПрдХ рдЕрдЬреАрдм рд╕рд╛рд╣рд╕рд┐рдХ рдХрд╛рд░реНрдп рдЬрд╣рд╛рдВ рдбрд░рд╛рд╡рдиреА рд╣рд╛рд╕реНрдп, рдЕрдиреНрд╡реЗрд╖рдг рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓рддреА рд╣реИред рдЖрдкрдХреЛ рд╢рд╣рд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреА, рдкрд╣реЗрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрд╕ рд░рд╣рд╕реНрдп рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдорд╛рд░рд┐рдпрд╛ рддрдХ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

    рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЕрдЧрд▓реЗ рдкреНрд▓реЗрдЯреЗрд╕реНрдЯ рдХреЗ рддрд╛рдЬрд╝рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдЕрднреА рдЦреЗрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рд╣рд░ рдХреЗ рдорд╛рд╣реМрд▓ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ! 👀
    рдЖрдкрдХреЛ рдирдИ рджрд┐рд╢рд╛ рдХреИрд╕реА рд▓рдЧреА? рдЦреЗрд▓ рдХреЗ рдорд╛рд╣реМрд▓ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдХреНрдпрд╛ рд░рд╛рдп рд╣реИ?

    рдЙрди рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕ рдХреЛ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛, рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ ❤️

    рдЖрдЧреЗ рдЕрднреА рднреА рдХрдИ рдкреНрд░рдпреЛрдЧ, рдирдИ рдпрд╛рдВрддреНрд░рд┐рдХреА рдФрд░ рдЕрдЬреАрдм рд░реЛрдорд╛рдВрдЪ рдмрд╛рдХреА рд╣реИрдВред

    https://store.steampowered.com/app/3476390/Donki_Hills/

  • рдЧреЗрдорд┐рдВрдЧ рд▓реИрдкрдЯреЙрдк рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛

    рдЖрдзреБрдирд┐рдХ рдЧреЗрдорд┐рдВрдЧ рд▓реИрдкрдЯреЙрдк рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ 90 рдбрд┐рдЧреНрд░реА рддрдХ рдЧрд░реНрдо рд╣реЛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЛрдб рдХреЗ рддрд╣рдд 100 рдбрд┐рдЧреНрд░реА рд╕реЗрд▓реНрд╕рд┐рдпрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ рддреАрд╡реНрд░ рд╣реЛрддреА рд╣реИ рдЬрдм рдХрдард┐рди рдЦреЗрд▓ рдпрд╛ рднрд╛рд░реА рдХрд╛рдо рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдЪрд▓ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред

    рдЕрддреНрдпрдзрд┐рдХ рд╣реАрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг, рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреА рд╣реИ (рднреМрддрд┐рдХ рдХреНрд╖рддрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛), рдЬрд┐рд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рддреЗрдЬ рдЧрд┐рд░рд╛рд╡рдЯ, рдлреНрд░реАрдЬ рдФрд░ рдПрдлрдкреАрдПрд╕ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрддреА рд╣реИред рдУрд╡рд░рд╣реАрдЯрд┐рдВрдЧ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ (рдХреВрд▓рд┐рдВрдЧ рдкреИрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдЕрдВрдбрд░рд╡реЛрд▓реНрдЯрд┐рдВрдЧ рддрдХ), рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рддреЗрдЬрд╝ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ 11 рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

    рд╡рд┐рдзрд┐ рдмрд┐рдЬрд▓реА рдЖрдкреВрд░реНрддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХрддрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

    1. рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд░реНрдЪ рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╡рд░ рд╡рд┐рдХрд▓реНрдк рдЦреЛрд▓реЗрдВред
    2. рд╕рдХреНрд░рд┐рдп рд╡рд┐рджреНрдпреБрдд рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдБред
    3. рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд╛рд╡рд░ рдкреНрд░рдмрдВрдзрди рд╢рд╛рдЦрд╛ рдвреВрдВрдвреЗрдВред
    4. рдЕрдзрд┐рдХрддрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдерд┐рддрд┐ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
    5. рдкреНрд▓рдЧ рдЗрди рдХреЗ рд▓рд┐рдП, рдорд╛рди рдХреЛ 100% рд╕реЗ 80% рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдореЗрдВ рдмрджрд▓реЗрдВред

    рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдУрд╡рд░рдХреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрд░реНрдореА рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрдзрд┐рдХрддрдо рд╢рд┐рдЦрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рдЧрднрдЧ 20% рдХреА рдХрдореА рдЖрдПрдЧреА, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдм рдЬрд╝реНрдпрд╛рджрд╛ рдЧрд░рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрдо рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди 100 рдбрд┐рдЧреНрд░реА рд╕реЗ рдХрдо рддрд╛рдкрдорд╛рди рдкрд░ рдУрд╡рд░рд╣реАрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рддреЗрдЬ рдЙрдЫрд╛рд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИред

    рдкреНрд░рддреНрдпреЗрдХ рд▓реИрдкрдЯреЙрдк рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╖реНрдЯрддрдо рд╕рдВрддреБрд▓рди (рдкреНрд░рддрд┐рд╢рдд) рдвреВрдВрдвреЗрдВ рдЬреЛ рдУрд╡рд░рд╣реАрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

  • рдЕрд▓реЗрдХрд╛ рдлрд╝реНрд▓рдЯрд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреНрд░рд╛рдЗрдВрдЧ рдРрдк рд╣реИ

    рдЕрд▓реЗрдХрд╛ рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рд╣рд▓реНрдХрд╛, рддреЗрдЬрд╝ рдбреНрд░рд╛рдЗрдВрдЧ рдРрдк рд╣реИред рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ (рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХрдУрдПрд╕, рд▓рд┐рдирдХреНрд╕) рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ (рдЖрдИрдУрдПрд╕, рдПрдВрдбреНрд░реЙрдЗрдб) рдкрд░ред

    рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╢реБрджреНрдз рдбрд╛рд░реНрдЯ, рд╕рд╛рдордЧреНрд░реА 3 рдФрд░ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдЕрд╡рд╕рд░

    • рдлреНрд░реАрд╣реИрдВрдб рдбреНрд░рд╛рдЗрдВрдЧ: рджреНрд╡рд┐рдШрд╛рдд рдмреЗрдЬрд╝рд┐рдпрд░ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рд╕реНрдЯреНрд░реЛрдХред
    • 15 рд░рдВрдЧреЛрдВ рдХрд╛ рдкреИрд▓реЗрдЯ: рджреГрд╢реНрдп рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рддреНрд╡рд░рд┐рдд рдЪрдпрдиред
    • рдмреНрд░рд╢ рдХрд╛ рдЖрдХрд╛рд░: 1 рд╕реЗ 30 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдпреЛрдЬреНрдпред
    • рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ: рдЕрдкрдиреЗ рд╕реНрдЯреНрд░реЛрдХ рд╕реЗ рдкреАрдЫреЗ рд╣рдЯреЗрдВред
    • рдХреИрдирд╡рд╛рд╕ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ: рдПрдХ рдХреНрд▓рд┐рдХ рд╕реЗред
    • рдмрд╛рдврд╝ рднрд░рд╛рд╡: рдЪрд┐рдХрдиреА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рдирд╢реАрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдмреАрдПрдлрдПрд╕ред
    • рд╕рд╣реЗрдЬрдирд╛: рдкреНрд░рд╛рд░реВрдк .aleka (JSON).
    • рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ: рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рдЪрд┐рддреНрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВред
    • рдкреАрдПрдирдЬреА рдирд┐рд░реНрдпрд╛рдд: 3x рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рдХреИрдирд╡рд╛рд╕ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВред
    • 🎬 рдПрдирд┐рдореЗрд╢рди рдореЛрдб: рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдлрд╝реНрд░реЗрдо-рджрд░-рдлрд╝реНрд░реЗрдо рдПрдиреАрдореЗрд╢рди:
      • рдлрд╝реНрд░реЗрдо рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реЛрддрд╛ рд╣реИред
      • рдлрд╝реНрд░реЗрдо рдЕрд╡рдзрд┐ 50 рдПрдордПрд╕ рд╕реЗ 5 рд╕реЗрдХрдВрдб рддрдХред
      • рдПрдлрдкреАрдПрд╕ рдмрджрд▓реЗрдВ: 6, 8, 12, 15, 24, 30 рдпрд╛ 60ред
      • MP4 рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ (рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ ffmpeg рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ ffmpeg.wasm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред
    • рдбрд╛рд░реНрдХ рдФрд░ рд▓рд╛рдЗрдЯ рдереАрдо: рд╕рд╛рдордЧреНрд░реА 3, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИред

    рдлрдбрд╝рдлрдбрд╝рд╛рд╣рдЯ рдХреНрдпреЛрдВ?

    рдлрд╝реНрд▓рдЯрд░ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдЫрд╣ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрд▓реЗрдХрд╛ рдХреЗрд╡рд▓ рдбрд╛рд░реНрдЯ рдФрд░ рдлрд╝реНрд▓рдЯрд░ рдПрд╕рдбреАрдХреЗ рдХреА рдореВрд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдиреНрдпреВрдирддрдо рддреГрддреАрдп-рдкрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: file_picker, image рднрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ffmpeg_wasm рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

    рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

    рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рдЪреНрдЫ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдареЛрд╕ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ:

    • PaintCanvasController – рд╕реНрдЯреНрд░реЛрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╢реНрд░реЛрддрд╛/рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреИрдЯрд░реНрди рдХреЛ рднрд░рддрд╛ рд╣реИред
    • рдкреЗрдВрдЯрдЯреВрд▓рдмрд╛рд░ – рдкреИрд▓реЗрдЯ, рд╕реНрд▓рд╛рдЗрдбрд░ рдФрд░ рдмрдЯрди рдХрд╛ рдпреВрдЖрдИ рдШрдЯрдХред
    • AlekaFile – JSON, PNG рдХреИрдкреНрдЪрд░ рдореЗрдВ рдХреНрд░рдордмрджреНрдзрддрд╛/deserializationред
    • рдореВрд╡реАрдХрдВрдЯреНрд░реЛрд▓рд░ – рдлрд╝реНрд░реЗрдо рдФрд░ рдПрдиреАрдореЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореЙрдбрд▓ред
    • рд╡реАрдбрд┐рдпреЛрдПрдХреНрд╕рдкреЛрд░реНрдЯ – MP4 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ (рдбреЗрд╕реНрдХрдЯреЙрдк/рд╡реЗрдм) рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИред

    I/O рдлрд╝рдВрдХреНрд╢рдВрд╕ (saveStrokes, loadStrokes, capturePng, рдЖрджрд┐) рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯреЗрдмрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ – рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЗрдиреНрд╣реЗрдВ рдореЙрдХ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ 79 рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ: рдХреНрд░рдордмрджреНрдзрддрд╛, рд░рджреНрджреАрдХрд░рдг, рд▓реЛрдбрд┐рдВрдЧ/рд╕реЗрд╡рд┐рдВрдЧ, рдкреАрдПрдирдЬреА рдФрд░ рд╡реАрдбрд┐рдпреЛ рдирд┐рд░реНрдпрд╛рдд, рдлреНрд░реЗрдо рдореЙрдбрд▓ рдФрд░ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред

    рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк .aleka

    .aleka рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп JSON рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

      "aleka": "1.0",
      "strokes": [
        {
          "color": 4278190080,
          "strokeWidth": 3.0,
          "points": [[100.0, 200.0], [150.0, 250.0]]
        }
      ]
    }
    

    рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреНрд░реЛрдХ рдПрдХ рд░рдВрдЧ (ARGB32), рдПрдХ рдореЛрдЯрд╛рдИ рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░реВрдк рдХреЛ aleka рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдПрдиреАрдореЗрд╢рди рдореЛрдб

    рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝реНрд░реЗрдо-рджрд░-рдлрд╝реНрд░реЗрдо рдПрдиреАрдореЗрд╢рди рд╕рдВрдкрд╛рджрдХ рд╣реИред рдЖрдк рдПрдХ рдлрд╝реНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ, рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдЧрд▓рд╛ рдлрд╝реНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрддреНрдпрд╛рджрд┐ред рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдердВрдмрдиреЗрд▓ рджрд┐рдЦрд╛рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдлрд╝реНрд░реЗрдо рдХрд╛ рдХреНрд░рдо рдФрд░ рдЕрд╡рдзрд┐ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рддреИрдпрд╛рд░ рдПрдирд┐рдореЗрд╢рди рдХреЛ MP4 рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдирд┐рд░реНрдпрд╛рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ RepaintBoundary рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ, PNG рдмрд╛рдЗрдЯреНрд╕ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдирдХреЛрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░, рд╕рд┐рд╕реНрдЯрдо ffmpeg рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, ffmpeg.wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ – WebAssembly рдХреЗ рд▓рд┐рдП ffmpeg рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдкреЛрд░реНрдЯ, рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

    рдмрд╛рдврд╝ рднрд░рд╛рд╡

    рднрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░рдВрдЧ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ (<рдХреЛрдб>_kFillTolerance = 1000) рдХреЗ рд╕рд╛рде рдмреНрд░реЗрдбрде рдлрд░реНрд╕реНрдЯ рд╕рд░реНрдЪ (рдмреАрдПрдлрдПрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рдЪрд┐рдХрдиреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ – рднрд░рдг рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдорд╛ рдкрд░ рдкрд╛рд░рднрд╛рд╕реА рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИред рдПрдХ рдЦрд╛рд▓реА рдХреИрдирд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдгрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдареЛрд╕ рднрд░рд╛рд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

    рдЕрд▓реЗрдХрд╛ рд╡реЗрдм рдкрд░ рдФрд░ рдПрдХ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:

    demensdeum.com/software/aleka/

    рд╕реНрд░реЛрдд рдХреЛрдб рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЦреБрд▓рд╛ рд╣реИ:

    github.com/demensdeum/Aleka

  • рдорд╛рдорд╛ рдХреИрд▓реЗрдВрдбрд░ – рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдРрдк

    рдорд╛рдорд╛ рдХреИрд▓реЗрдВрдбрд░ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдИрд╡реЗрдВрдЯ рдФрд░ рд░рд┐рдорд╛рдЗрдВрдбрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ (рдПрдХреНрд╕рдкреЛ) рдореЗрдВ рджреЛ рдмреИрдХрдПрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: Node.js + MongoDB рдФрд░ PHP + MariaDBред

    рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдкрдХреЛ рдЗрдореЛрдЬреА рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдИрд╡реЗрдВрдЯ рдмрдирд╛рдиреЗ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдПрдХ рдмрд╛рд░, рд╡рд╛рд░реНрд╖рд┐рдХ, рдорд╛рд╕рд┐рдХ, рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ, рджреИрдирд┐рдХ) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ 3 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ “рдорд╣рддреНрд╡рдкреВрд░реНрдг рдИрд╡реЗрдВрдЯ” рдЯреИрдм рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдИрд╡реЗрдВрдЯ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ

    рдлреНрд░рдВрдЯрдПрдВрдб рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.86 рдореЗрдВ рдПрдХреНрд╕рдкреЛ рдПрд╕рдбреАрдХреЗ 57 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреЛ рд░рд╛рдЙрдЯрд░ рдФрд░ рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП <рдХреЛрдб>рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд░реАрдПрдирд┐рдореЗрдЯреЗрдб рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХреНрд╕рдкреЛ-рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдИрдУрдПрд╕ рдкрд░ рдПрд╕рдПрдл рдкреНрд░рддреАрдХ, рдПрдВрдбреНрд░реЙрдЗрдб/рд╡реЗрдм рдкрд░ рд╕рд╛рдордЧреНрд░реА рдЖрдЗрдХрди)ред

    рдмреИрдХрдПрдВрдб рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

    • Node.js: рдПрдХреНрд╕рдкреНрд░реЗрд╕ 4, рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ MongoDB 8, рд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдирдордХ рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдореИрдиреНрдпреБрдЕрд▓ рдЯреЛрдХрди рдкреНрд░рдмрдВрдзрдиред рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреНрд▓рд╛рдЗрдВрдЯ (nginx), рд╕рд░реНрд╡рд░ рдФрд░ MongoDB рд▓рд╛рддрд╛ рд╣реИред
    • PHP: рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд┐рдирд╛ PHP 8.2, PDO + MariaDB 11, рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП bcrypt, рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд░рд╛рдЙрдЯрд░ рдФрд░ рдХрдВрдкреЛрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ PSR-4 рдСрдЯреЛрд▓реЛрдбрд┐рдВрдЧред

    рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рдВрдХреНрд╢рди

    • рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдмрд┐рдпрд░рд░ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓реА
    • CRUD рдИрд╡реЗрдВрдЯ: рджрд┐рдирд╛рдВрдХ, рдЗрдореЛрдЬреА рдФрд░ рджреЛрд╣рд░рд╛рд╡ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдИрд╡реЗрдВрдЯ рдмрдирд╛рдПрдВ, рджреЗрдЦреЗрдВ, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ
    • рд╕реНрдорд╛рд░реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ: рдорд╣рддреНрд╡рдкреВрд░реНрдг рдИрд╡реЗрдВрдЯ рдЯреИрдм рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд┐рдпрдореЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЕрдЧрд▓реЗ 3 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд░реНрд╖рд┐рдХ рдШрдЯрдирд╛рдПрдБ рдирд┐рдХрдЯрддрдо рд╡рд╛рд░реНрд╖рд┐рдХ рдШрдЯрдирд╛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ, рдорд╛рд╕рд┐рдХ – рдорд╣реАрдиреЗ рдХреЗ рджрд┐рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ – рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рдХреЗ рдЕрдиреБрд╕рд╛рд░
    • рдЗрдореЛрдЬреА рдкрд┐рдХрд░: рдШрдЯрдирд╛рдУрдВ рдХреЗ рддреНрд╡рд░рд┐рдд рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП 20 рдкреНрд░реАрд╕реЗрдЯ рдЗрдореЛрдЬреА
    • рдЖрдЬ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛: рдЖрдЬ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓рд╛рд▓ рдкреГрд╖реНрдарднреВрдорд┐ (#B71C1C) рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
    • рдбрд╛рд░реНрдХ рдереАрдо: рд▓рд╛рдЗрдЯ рдФрд░ рдбрд╛рд░реНрдХ рдереАрдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрддрд╛ рд▓рдЧрд╛рдирд╛
    • рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг: рд░рд┐рдПрдХреНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛рдПрдБ
    • ╨Р╨╜╨╕╨╝╨░╤Ж╨╕╨╕: ╨░╨╜╨╕╨╝╨╕╤А╨╛╨▓╨░╨╜╨╜╤Л╨╣ ╤Б╨┐╨╗╤Н╤И-╤Б╨║╤А╨╕╨╜ ╤Б Keyframe API ╨╕ ╤Г╨┐╤А╤Г╨│╨╛╨╣ ╨╕╨╜╤В╨╡╤А╨┐╨╛╨╗╤П╤Ж╨╕╨╡╨╣, ╨░╨╜╨╕╨╝╨╕╤А╨╛╨▓╨░╨╜╨╜╨░╤П ╨╕╨║╨╛╨╜╨║╨░ ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П ╤Б ╨▓╤А╨░╤Й╨░╤О╤Й╨╕╨╝╤Б╤П ╤Б╨▓╨╡╤З╨╡╨╜╨╕╨╡╨╝
    • рдПрдбрдорд┐рди рдПрдВрдбрдкреЙрдЗрдВрдЯ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ, рдЯреЛрдХрди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдорд╛рд╕реНрдЯрд░ рдЯреЛрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛

    рджреЛ рдмреИрдХрдПрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрдпреЛрдВ?

    Node.js рд╕рдВрд╕реНрдХрд░рдг рдореБрдЦреНрдп рд╣реИ, рд▓реЗрдХрд┐рди PHP рд╕рдВрд╕реНрдХрд░рдг рдЕрдзрд┐рдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдПрдкреАрдЖрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛

    рдкреВрд░реЗ рд╕реНрдЯреИрдХ рдХреЛ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдорд▓реНрдЯреАрд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб (рдПрдХреНрд╕рдкреЛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ тЖТ nginx рдЕрд▓реНрдкрд╛рдЗрди), Node.js, MongoDB 8 рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред PHP рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП MariaDB 11 рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП phpunit рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╣реИред

    рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдПрдХ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдПрдХреНрд╕рдкреЛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рд╕реЗ рдкрд╣рд▓реЗ API_URL рдХреЛ рдкреИрдЪ рдХрд░рддреА рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдореВрд▓ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИред

    рдЖрдЙрдЯрдкреБрдЯ

    рдорд╛рдорд╛ рдХреИрд▓реЗрдВрдбрд░ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдкреВрд░реЗ рдЪрдХреНрд░ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ: рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдкрд░ рдореЛрдмрд╛рдЗрд▓ рдФрд░ рд╡реЗрдм рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рд▓реЗрдХрд░ рджреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╡рд┐рдХрд▓реНрдкреЛрдВ рддрдХред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдЖрдзреБрдирд┐рдХ рдПрдХреНрд╕рдкреЛ рдПрд╕рдбреАрдХреЗ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рджреЛрд╣рд░реЗ рдмреИрдХрдПрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

    рд▓рд┐рдВрдХ

    https://github.com/zefir1990/Mama-Calendar
    https://demensdeum.com/software/mama-calendar/events

  • Surreal рдЗрдВрдЬрди C++ рдХреЛ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдореИрдВрдиреЗ Surreal рдЗрдВрдЬрди рдЧреЗрдо рдЗрдВрдЬрди рдХреЛ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред
    https://demensdeum.com/demos/SurrealEngine/”
    рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди – рдПрдХ рдЧреЗрдо рдЗрдВрдЬрди рдЬреЛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 1 рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдЗрдВрдЬрди рдкрд░ рдкреНрд░рд╕рд┐рджреНрдз рдЧреЗрдо – рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ 99, рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдбреНрдпреВрд╕ рдПрдХреНрд╕, рдЕрдирдбрд╛рдЗрдВрдЧред рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдирд┐рд╖реНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
    рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдорди рдореЗрдВ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдХрд┐рд╕реА рднреА рдЙрдЪрд┐рдд рд╕рдордп рд╕реАрдорд╛ рдореЗрдВ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЯреНрд╡рд┐рдЪ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЕрдкрдиреА рдкрд╣рд▓реА рд╕реНрдЯреНрд░реАрдо рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ Emscripten рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Surreal рдЗрдВрдЬрди C++ рдХреЛ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╕рдВрднрд╡ рдерд╛ред

    рдПрдХ рдорд╣реАрдиреЗ рдмрд╛рдж, рдореИрдВ WebAssembly рдкрд░ рдЕрдкрдирд╛ рдлрд╝реЛрд░реНрдХ рдФрд░ рдЗрдВрдЬрди рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ:
    https://demensdeum.com/demos/SurrealEngine/
    рдирд┐рдпрдВрддреНрд░рдг, рдореВрд▓ рдХреА рддрд░рд╣, рдХреАрдмреЛрд░реНрдб рддреАрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдирд┐рдпрдВрддреНрд░рдг (рдЯреИрдЪреА) рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╣реА рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ 99 рд░реЗрдВрдбрд░ рдХреА рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

    рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ?

    рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ Emscripten рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C++ рд╕реЗ WebAssembly рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХрдорд╛рддреНрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд┐рддрдиреА рдкреВрд░реНрдг рд╣реЛрдЧреАред рдРрд╕рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреЛрд░реНрдЯ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдВ; Surreal рдЗрдВрдЬрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдмрд╣реБрдд рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЬрди SDL 2, OpenAL – рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп. рд╡реЗ рджреЛрдиреЛрдВ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд▓реНрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ HTML5 рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, WebGPU рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбреНрд░рд╛рдлреНрдЯ рдЪрд░рдг рдореЗрдВ рднреА рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЕрдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж Vulkan рд╕реЗ WebGPU рддрдХ рдХрд╛ рдкреЛрд░реНрдЯ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ Surreal рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдореВрд▓ OpenGL-ES/WebGL рд░реЗрдВрдбрд░рд░ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред

    рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

    Surreal рдЗрдВрдЬрди рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдПрдБ – рд╕реАрдПрдордХреЗ, рдЬреЛ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛ рднреА рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдЕрдкрдиреЗ рдореВрд▓ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ – рдПрдордореЗрдХ, рдПрдордореЗрдХред
    Surreal рдЗрдВрдЬрди рдкреЛрд░реНрдЯ WebGL/OpenGL ES рдФрд░ C++ рдореЗрдВ рдбреЗрде-рдорд╛рд╕реНрдХ рдирд╛рдордХ рдореЗрд░реЗ рдирд╡реАрдирддрдо рдЧреЗрдо рдХреЗ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдмрд┐рд▓реНрдб рдлрд╝реНрд▓реИрдЧ рдФрд░ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдереЗред
    CMakeLists.txt рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ Emscripten рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдлрд╝реНрд▓реИрдЧ рд╣реИ, рдиреАрдЪреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

    set(CMAKE_CXX_FLAGS "-s MIN_WEBGL_VERSION=2 
    -s MAX_WEBGL_VERSION=2 
    -s EXCEPTION_DEBUG 
    -fexceptions 
    --preload-file UnrealTournament/ 
    --preload-file SurrealEngine.pk3 
    --bind 
    --use-preload-plugins 
    -Wall 
    -Wextra 
    -Werror=return-type 
    -s USE_SDL=2 
    -s ASSERTIONS=1 
    -w 
    -g4 
    -s DISABLE_EXCEPTION_CATCHING=0 
    -O3 
    --no-heap-copy 
    -s ALLOW_MEMORY_GROWTH=1 
    -s EXIT_RUNTIME=1")
    

    рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ:

    clear
    emmake make -j 16
    cp SurrealEngine.data /srv/http/SurrealEngine/SurrealEngine.data
    cp SurrealEngine.js /srv/http/SurrealEngine/SurrealEngine.js
    cp SurrealEngine.wasm /srv/http/SurrealEngine/SurrealEngine.wasm
    cp ../buildScripts/Emscripten/index.html /srv/http/SurrealEngine/index.html
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП index.html рддреИрдпрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реАрд▓реЛрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡реЗрдм рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг 338 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реАрдПрдордХреЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдирдкреИрдХреНрдб рдЧреЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд▓реЛрдб-рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

    рдореБрдЦреНрдп рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди

    рдлрд┐рд░ рд╣рдореЗрдВ рдЧреЗрдо рдХреЗ рдЧреЗрдо рд▓реВрдк рдХреЛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛, рдЖрдк рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ, рдЗрд╕рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реНрд░реАрдЬрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ emscripten_set_main_loop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ 2017 рдиреЛрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ ” target=’_blank’>SDL C++ рдЧреЗрдореНрд╕ рдХреЛ HTML5 (Emscripten) рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛тАЭ
    рд╣рдо while рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ if рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдЧреЗрдо рдЗрдВрдЬрди рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЧреЗрдо рд▓реВрдк рд╣реЛрддрд╛ рд╣реИ, рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ, рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЧреЗрдо рд▓реВрдк рдЪрд░рдг рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛:

    #if __EMSCRIPTEN__
    #include <emscripten.h>
    Engine *EMSCRIPTEN_GLOBAL_GAME_ENGINE = nullptr;
    void emscripten_game_loop_step() {
    	EMSCRIPTEN_GLOBAL_GAME_ENGINE->Run();
    }
    #endif
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдИ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдирд╣реАрдВ рд╣реИрдВ; рдпрджрд┐ рд╣реИрдВ, рддреЛ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВ, рдпрд╛ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдореЗрдВ phtread рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    Surreal рдЗрдВрдЬрди рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЧреАрдд рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЦреНрдп рдЗрдВрдЬрди рдереНрд░реЗрдб рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЯреНрд░реИрдХ, рд╕рдВрдЧреАрдд рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╛ рдЙрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдЖрддрд╛ рд╣реИ, рдлрд┐рд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдИ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдпрд╛ рд╕рдВрдЧреАрдд рдмрдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдпрд╛ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рд╕рдВрдЧреАрдд рдХреЛ рдмрдлрд╝рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    рдкрд╛рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЗ рд▓рд┐рдП рд╕рд░рд░рд┐рдпрд▓ рдЗрдВрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣реЗ, рдХреНрдпреЛрдВрдХрд┐ рдПрд╕рдбреАрдПрд▓2 рдФрд░ рдУрдкрдирдПрдПрд▓ рдкреЛрд░реНрдЯ рдмрд┐рдирд╛ рдкрд╛рдереНрд░реЗрдб рд╕рдорд░реНрдерди рдХреЗ рдмрдирд╛рдП рдЧрдП рдереЗ, рдФрд░ рдореИрдВ рд╕рдВрдЧреАрдд рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрдЧреАрдд рд╕реНрдЯреНрд░реАрдо рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред C++ рдХреЛрдб рд╕реЗ pthread рдХреЙрд▓реНрд╕ рдХреЛ рд╣рдЯрд╛рдХрд░, рдореИрдВрдиреЗ рдмрдлрд╝рд░рд┐рдВрдЧ рдФрд░ рд╕рдВрдЧреАрдд рдкреНрд▓реЗрдмреИрдХ рдХреЛ рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ рдХреЛрдИ рджреЗрд░реА рди рд╣реЛ, рдореИрдВрдиреЗ рдмрдлрд╝рд░ рдХреЛ рдХреБрдЫ рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ред
    рдЖрдЧреЗ, рдореИрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдзреНрд╡рдирд┐ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

    рд╡рд▓реНрдХрди рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ!

    рд╣рд╛рдБ, Vulkan HTML5 рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╕рднреА рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдмреНрд░реЛрд╢рд░ Vulkan рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рд╡реНрдпрд╛рдкрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореБрдЭреЗ рд╕рд░рд▓реАрдХреГрдд OpenGL рдкреНрд░рдХрд╛рд░ – рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдореВрд▓ рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рд░реЗрдВрдбрд░рд░ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рдИрдПрд╕, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЗрд╕рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдУрдкрдирдЬреАрдПрд▓ рдХреА рдлреИрд╢рдиреЗрдмрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реЗрдмрдЬреАрдПрд▓ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЬреАрдпреВрдЖрдИ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЯрд╛рдЗрд▓ рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдмреАрдПрд╕рдкреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рд▓рд┐рдЦрдирд╛ рдФрд░ рдореЙрдбрд▓ + рдореИрдк рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рд╢рд╛рдпрдж рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред Surreal рдЗрдВрдЬрди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдмрд╣реБрдд рдХрд╛рдо рдмрд╛рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдардХреЛрдВ рдХреА рдХрд┐рд╕реА рднреА рдорджрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

    OpenAL рд╕рдорд░реНрдерд┐рдд!

    рдмрдбрд╝реА рдХрд┐рд╕реНрдордд рдпрд╣ рд╣реИ рдХрд┐ Surreal рдЗрдВрдЬрди рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП OpenAL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред OpenAL рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ Emscripten рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ WebAssembly рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд┐рддрдирд╛ рд╕рд░рд▓ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдзреНрд╡рдирд┐ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
    рдХрдИ рдШрдВрдЯреЛрдВ рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЗ рдУрдкрдирдПрдПрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдИ рдмрдЧ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдореЛрдиреЛ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдПрдХ рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдФрд░ рдЕрдирдВрдд рдЖрдХрд╛рд░ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, C++ рдЕрдкрд╡рд╛рдж рд╡реЗрдХреНрдЯрд░::рд▓реЗрдВрде_рдПрд░рд░ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
    рд╣рдо рдореЛрдиреЛ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 2048 рддрдХ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдХреЗ рдЗрд╕рд╕реЗ рдирд┐рдЬрд╛рдд рдкрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ:

    		alcGetIntegerv(alDevice, ALC_MONO_SOURCES, 1, &monoSources);
    		alcGetIntegerv(alDevice, ALC_STEREO_SOURCES, 1, &stereoSources);
    
    #if __EMSCRIPTEN__
    		monoSources = 2048; // for some reason Emscripten's OpenAL gives infinite monoSources count, bug?
    #endif
    
    

    рдХреНрдпрд╛ рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ?

    Surreal рдЗрдВрдЬрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдСрдирд▓рд╛рдЗрди рдЦреЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмреЙрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрди рдмреЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП AI рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк Websockets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ WebAssembly/Emscripten рдкрд░ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЧреЗрдо рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдирд┐рд╖реНрдХрд░реНрд╖

    рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг Surreal рдЗрдВрдЬрди рдХреА рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд╛рдлреА рд╕реБрдЪрд╛рд░реВ рд╣реЛ рдЧрдИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Emscripten рдкреЛрд░реНрдЯ рд╣реИрдВ, рд╕рд╛рде рд╣реА Emscripten рдкрд░ WebAssembly рдХреЗ рд▓рд┐рдП C++ рдореЗрдВ рдПрдХ рдЧреЗрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрднрд╡ рднреА рд╣реИред рд╡рд┐рд╖рдп рдкрд░ рдЬреНрдЮрд╛рди рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдФрд░ рднрдВрдбрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред
    рдПрдо-рдПрдо-рдПрдо-рд░рд╛рдХреНрд╖рд╕ рд╣рддреНрдпрд╛!
    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдорд╛рдирддрдГ рд╡реЗрдмрдЬреАрдПрд▓/рдУрдкрдирдЬреАрдПрд▓ рдИрдПрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде, рддреЛ рдореБрдЭреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
    https://t.me/demenscave

    рд▓рд┐рдВрдХ

    https://demensdeum.com/demos/SurrealEngine/

    https://github.com/demensdeum/SurrealEngine-Emscripten

    https://github.com/dpjudas/SurrealEngine

  • рдЫреЗрдиреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рдг: L3 рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдкреНрдб-рдбрд╛рдЙрди рд╕реБрд░рдВрдЧ

    рдЬрдм рджреЛ рдбрд┐рд╡рд╛рдЗрд╕ NAT рдпрд╛ рд╕рдЦреНрдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рдкреАрдЫреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕реАрдзреЗ “рджреЗрдЦ” рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╡реАрдкреАрдПрди рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд L3 рд╕реБрд░рдВрдЧ (рдЬреИрд╕реЗ рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдпрд╛ рдУрдкрдирд╡реАрдкреАрдПрди) рдЕрдХреНрд╕рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИ: рдЗрд╕рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдореМрдЬреВрджрд╛ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

    рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЫреЗрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ – рдПрдХ рдЯреАрд╕реАрдкреА/рдпреВрдбреАрдкреА рд╕реБрд░рдВрдЧ рдЬреЛ HTTP рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддреА рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЗрд╕ рдиреЛрдЯ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рджреВрд╕рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рдкреЛрд░реНрдЯ рдХреЛ “рдлреЙрд░рд╡рд░реНрдб” рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

    рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

    рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ A (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХрд╛ рд╣реЛрдо рд╕рд░реНрд╡рд░), рдХреНрд▓рд╛рдЗрдВрдЯ B (рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рд▓реИрдкрдЯреЙрдк) рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдкрддреЗ рд╡рд╛рд▓рд╛ рдПрдХ VPS рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдП рдФрд░ рдмреА рд╡реАрдкреАрдПрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдирд╣реАрдВред

    рдЕрдЧреНрд░реЗрд╖рдг рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
    1. рдХреНрд▓рд╛рдЗрдВрдЯ рдП рд╡реАрдкреАрдПрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ “рд░рд┐рд╡рд░реНрд╕” рдкреЛрд░реНрдЯ рдЦреЛрд▓рддрд╛ рд╣реИред рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ X рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ рдХреНрд▓рд╛рдЗрдВрдЯ A рдХреЗ рдкреЛрд░реНрдЯ Y рдкрд░ рдЬрд╛рддреА рд╣реИред
    2. рдХреНрд▓рд╛рдЗрдВрдЯ рдмреА рд╡реАрдкреАрдПрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреЛрд░реНрдЯ Z рдХреЛ рдЕрдкрдиреА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ X рддрдХ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
    3. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреНрд▓рд╛рдЗрдВрдЯ B localhost:Z рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ A:Y рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

    рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд╣рд╛рдВ рд╡реАрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдПрд▓ 3 рдкрд░рдд рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреЛрд░реНрдЯ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

    рдЪрд░рдг 1: рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

    рдЕрдкрдиреЗ VPS рдкрд░, рдмрд╕ Chisel рдХреЛ рд╕рд░реНрд╡рд░ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдПрдБред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкреЛрд░реНрдЯ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП <рдХреЛрдб>–рд░рд┐рд╡рд░реНрд╕ рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

    chisel server --port 8080 --reverse
    

    рдЪрд░рдг 2: рдХреНрд▓рд╛рдЗрдВрдЯ рдП (рд╕реНрд░реЛрдд) рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛

    рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдП рдкреЛрд░реНрдЯ 3000 рдкрд░ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╡рд╣ рд╡реАрдкреАрдПрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ: “рд╕рд░реНрд╡рд░ рдкрд░ рдкреЛрд░реНрдЯ 2000 рд░рд┐рдЬрд░реНрд╡ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореБрдЭреЗ 3000 рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВред”

    chisel client vps-ip:8080 R:2000:127.0.0.1:3000
    

    рдЕрдм рд╡реАрдкреАрдПрд╕ (рд▓реВрдкрдмреИрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░) рдкрд░ рдкреЛрд░реНрдЯ 2000 рдХреНрд▓рд╛рдЗрдВрдЯ рдП рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

    рдЪрд░рдг 3: рдХреНрд▓рд╛рдЗрдВрдЯ рдмреА (рдЙрдкрднреЛрдХреНрддрд╛) рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛

    рдЕрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдмреА рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕реА рд╡реАрдкреАрдПрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ 8080 рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ 2000 рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред

    chisel client vps-ip:8080 8080:127.0.0.1:2000
    

    рддреИрдпрд╛рд░! рдЕрдм, рдЬрдм рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдмреА рдкрд░ http://localhost:8080 рдЦреЛрд▓реЗрдВрдЧреЗ, рддреЛ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдП рдкрд░ рдЪрд▓ рд░рд╣реА рд╕реЗрд╡рд╛ рджреЗрдЦреЗрдВрдЧреЗред

    рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ

    рдЪрд┐рд╕реЗрд▓ --auth рдзреНрд╡рдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрдПрд▓рдПрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ TUN/TAP рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЬрдЯрд┐рд▓ рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдк-рдбрд╛рдЙрди рд╕реБрд░рдВрдЧ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИ: рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдмрд╛рдВрдзрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдкреЛрд░реНрдЯ 443 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╕реЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

    рдЖрдЙрдЯрдкреБрдЯ

    рдЫреЗрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ рдПрдХ рдкреВрд░реНрдг рд╡реАрдкреАрдПрди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдкреЛрд░реНрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд░рд┐рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реБрд░рдВрдЧреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдмрди рдЬрд╛рддрд╛ рд╣реИред

    рд▓рд┐рдВрдХ

    https://github.com/jpillora/chisel

  • рдореИрдВ рдмрдЧ рдареАрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛?

    рдЖрдк рдХреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ, рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ, рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрдЧ рдЕрднреА рднреА рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдЪрд┐рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИ? рд╣рддрд╛рд╢рд╛ рдХреА рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдХреНрд╕рд░ “рднреВрдд рд╢рд┐рдХрд╛рд░” рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдкрдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдирд╛ рдЬреАрд╡рди рдЬреА рд░рд╣рд╛ рд╣реИред

    рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо – рдФрд░ рд╕рдмрд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж – рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдЬрдЧрд╣ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░рдирд╛ред

    “рдЭреВрдареЗ рд▓рдХреНрд╖рдгреЛрдВ” рдХрд╛ рдЬрд╛рд▓

    рдЬрдм рд╣рдо рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ рдзреНрдпрд╛рди рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрд╕рдиреЗ “рд╢реВрдЯ” рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдЬрд╣рд╛рдВ рдмрдЧ рд╣реЛрддрд╛ рд╣реИ (рдХреНрд░реИрд╢ рдпрд╛ рдЧрд▓рдд рдорд╛рди) рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдВрдд рдорд╛рддреНрд░ рд╣реИред рдЬрдм рдЖрдк рдЕрдВрдд рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд▓рдХреНрд╖рдгреЛрдВ рд╕реЗ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдмреАрдорд╛рд░реА рд╕реЗ рдирд╣реАрдВред

    рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЖрддреА рд╣реИред

    рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

    рдмреЗрд╢рдХ, рд╣рд░ рдмрд╛рд░ рдХрд╛рдЧрдЬ рдкрд░ рд╕реАрдзреЗ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдмрдирд╛рдирд╛ (рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛) рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╛ рд╣рд╛рде рдореЗрдВ рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдХ рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╡реГрдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭреЗ рдмрд┐рдирд╛, рдбреЗрд╡рд▓рдкрд░ рдЕрдХреНрд╕рд░ рдЕрдВрдзреЗрд░реЗ рдореЗрдВ рдЯрдЯреЛрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдк рддрд░реНрдХ рдХреЛ рдПрдХ рд╢рд░реНрдд рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рдХреЗ рдХрд╛рд░рдг) рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдиреЗ рд╕реЛрдЪрд╛ рднреА рдирд╣реАрдВ рдерд╛ред

    <рдмреНрд▓реЙрдХрдХреЛрдЯ>
    рдкрд░рд┐рдгрд╛рдо: рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ “рдкрд░рдлреЗрдХреНрдЯ” рдХреЛрдб рдлрд┐рдХреНрд╕ рдкрд░ рдШрдВрдЯреЛрдВ рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

    <рдШрдВрдЯрд╛ />

    рдмрдЧ рдХреЛ рд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо

    рдмрдВрдж рджрд░рд╡рд╛рдЬреЗ рдкрд░ рдкрд┐рдЯрд╛рдИ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рджрд╛рди рдХреЗ рдкреНрд░рддрд┐ рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

    • рдкрд░рд┐рдгрд╛рдо рдЯреНрд░реА рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдвреВрдВрдвреЗрдВ:рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдкрде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рд▓рд┐рдпрд╛ рд╣реИред рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рддрд░реНрдХ рдиреЗ рдЧрд▓рдд рдореЛрдбрд╝ рд▓реЗ рд▓рд┐рдпрд╛? рдХрд┐рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ (рд░рд╛рдЬреНрдп) рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ?
    • рдкреБрдирд░реБрддреНрдкрд╛рджрди 80% рд╕рдлрд▓рддрд╛ рд╣реИ: рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмрдЧ “рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ” рд╣реИ, рддреЛ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдорд┐рд▓ рд╣реИред
    • рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд▓реЙрдЧ, рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг, рдбрд┐рд╡рд╛рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░, рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ (рд╡рд╛рдИ-рдлрд╛рдИ/5рдЬреА) рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреВрд░рд╕рдВрдЪрд╛рд░ рдСрдкрд░реЗрдЯрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

    рддреНрд░реБрдЯрд┐ рдХреЗ рдХреНрд╖рдг рдХрд╛ “рдлрд╝реЛрдЯреЛрдЧреНрд░рд╛рдлрд╝”

    рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрдЧ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд▓реЙрдЧ рднреА рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ: рд╡реЗ рди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрде рднреА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ (рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХреМрди рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рд╣реБрдИрдВ)ред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

    рднрд╡рд┐рд╖реНрдп рдХреА рдпреБрдХреНрддрд┐: рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рджреЛрдмрд╛рд░рд╛ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдб рдХреЗ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдбрд┐рдмрдЧ рд▓реЙрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВред

    <рдШрдВрдЯрд╛ />

    рдПрдЖрдИ рдХреЗ рдпреБрдЧ рдореЗрдВ “рдорд╛рдпрд╛рд╡реА” рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛

    рдПрд▓рдПрд▓рдПрдо (рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЖрдзреБрдирд┐рдХ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рд╢рд╛рд╕реНрддреНрд░реАрдп рдирд┐рдпрддрд┐рд╡рд╛рдж (“рдПрдХ рдЗрдирдкреБрдЯ, рдПрдХ рдЖрдЙрдЯрдкреБрдЯ”) рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдРрд╕рд╛ рдЖрдзреБрдирд┐рдХ рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдЧреИрд░-рдирд┐рдпрддрд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ:

    • рдЬреАрдкреАрдпреВ рд╕рдорд╛рдирд╛рдВрддрд░рд╡рд╛рдж: рдЬреАрдкреАрдпреВ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдСрдкрд░реЗрд╢рди рд╣рдореЗрд╢рд╛ рд╕рд╣рдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреНрд░рдо рдереЛрдбрд╝рд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
    • GPU рддрд╛рдкрдорд╛рди рдФрд░ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ: рдирд┐рд╖реНрдкрд╛рджрди рдЧрддрд┐ рдФрд░ рд▓реЛрдб рд╡рд┐рддрд░рдг рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреА рднреМрддрд┐рдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢рд╛рд▓ рдореЙрдбрд▓реЛрдВ рдореЗрдВ, рдпреЗ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдЯреЛрдХрди рдХреЗ рдЪрдпрди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред
    • рдбрд╛рдпрдирд╛рдорд┐рдХ рдмреИрдЪрд┐рдВрдЧ: рдХреНрд▓рд╛рдЙрдб рдореЗрдВ, рдЖрдкрдХрд╛ рдЕрдиреБрд░реЛрдз рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдмреИрдЪ рдЖрдХрд╛рд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рдЧрдгрд┐рдд рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред

    рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, “рдЙрд╕реА рд╕реНрдерд┐рддрд┐” рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реА рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред

    <рдШрдВрдЯрд╛ />

    рдЬрдм рддрд░реНрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛рдПрдВ

    рдпрджрд┐ рдЖрдк “рдЕрд╕реБрд░рдХреНрд╖рд┐рдд” рднрд╛рд╖рд╛рдУрдВ (C рдпрд╛ C++) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрдЧ рдореЗрдореЛрд░реА рдХрд░рдкреНрд╢рди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

    рдпреЗ рд╕рдмрд╕реЗ рдЧрдВрднреАрд░ рдорд╛рдорд▓реЗ рд╣реИрдВ: рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рджреВрд╕рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ “рдУрд╡рд░рд░рд╛рдЗрдЯ” рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рдФрд░ рдкреГрдердХ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реНрддрд░ рдкрд░ рдЕрдкрдиреА рд╕реБрд░рдХреНрд╖рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ?

    рдРрд╕реЗ “рд░рд╣рд╕реНрдпрдордп” рдмрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

    • рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди:рд╕реНрдкрд╖реНрдЯ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред
    • рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рднрд╛рд╖рд╛рдПрдБ: рдЙрдкрдХрд░рдг рдЬреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ:
      • рдЬрдВрдЧ: рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдкреНрд░рдгрд╛рд▓реА рдореЗрдореЛрд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреА рд╣реИред
      • рд╕реНрд╡рд┐рдлреНрдЯ 6 рдХрдВрдХрд░реЗрдВрд╕реА:рдордЬрдмреВрдд рдбреЗрдЯрд╛ рдЕрд▓рдЧрд╛рд╡ рдЬрд╛рдВрдЪред
      • рдПрд░рд▓рд╛рдВрдЧ: рдЕрднрд┐рдиреЗрддрд╛ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ред

    рд╕рд╛рд░рд╛рдВрд╢

    рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдирдпрд╛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдирд╛ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ: рдЖрдк рдЙрд╕ рд╢рд╛рдЦрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкреНрд░рдмрдВрдзрди рдЫреВрддрд╛ рднреА рдирд╣реАрдВ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рдПрдЖрдИ рдЧреИрд░-рдирд┐рдпрддрд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрдХрд░рдг рдЪреБрдиреЗрдВред

  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЖрдкрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд┐рддреНрд░ рдХреНрдпреЛрдВ рд╣реИ?

    (рдФрд░ рдРрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдЬреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рднреА рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВ)

    “рдРрдкреНрд╕ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрддрдорд╛рди рд╢рд┐рдкрд┐рдВрдЧ рдУрдПрд╕ рдкрд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред” рдРрдкреНрдкрд▓ рдРрдк рд╕рдореАрдХреНрд╖рд╛ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢

    рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рдХрд┐рд╕реА рдирдП рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рд╣реИ: “рдЕрдм рдореИрдВ рдЦреБрдж рд╣реА рд╕рдм рдХреБрдЫ рд╕рдордЭ рд▓реВрдВрдЧрд╛, рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ,” рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдХреЗрд▓реЗ рдирд╣реАрдВ рд╣реИрдВред рд╣рдордореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдЦреЛрдЬреА рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реЛрддреА рд╣реИ: рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ.

    рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдмрд╣рдХ рдЬрд╛рдирд╛ рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╣реБрдБрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдХреЛрдб рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╕рд┐рд╕реНрдЯрдо рдХреА рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

    рдХрднреА-рдХрднреА рдХреЗрд╡рд▓ “рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╣реА рд╕рдордЭ рд▓реЗрдирд╛” рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрддрд╛?

    рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдВрдж рдлреНрд░реЗрдорд╡рд░реНрдХ, рдЬрдЯрд┐рд▓ рдФрд░ рдмрд╣реБрд╕реНрддрд░реАрдп рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВред рд╡реЗ рдЕрдХреНрд╕рд░ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ:

    *рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рд╣реИрдВ;
    *рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рди рджреЗрдВ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреА рдмрдирд╛ рд░рд╣реЗрдЧрд╛;
    * рдирдП рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ;
    * рдЗрд╕рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    рдЬрдм рд╣рдо рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреА рдирд┐рдпрдореЛрдВ рдХреЗ рдмрдЬрд╛рдп рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдкрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рдкреНрд░рддрд┐ рдЕрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

    рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдПрдХ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд░реНрдерди рд╣реИ

    рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

    * рд╕реНрдерд┐рд░рддрд╛;
    * рд╕рд╣рд╛рдпрддрд╛;
    * рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╣рд╛рд░ред

    рдЗрди рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рдХрд░, рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕реЗ рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

    рдкреНрд░рдпреЛрдЧ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рд▓реЗрдХрд┐рди рд╕реАрдорд╛рдУрдВ рдХреА рд╕рдордЭ рдХреЗ рд╕рд╛рде.
    рдХрд┐рд╕реА рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╣реЛрдирд╛ рдПрдХ рдорд╣рд╛рди рдЧреБрдг рд╣реИред рдирдИ рдЪреАрдЬрд╝реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдирд╛ рдирд┐рддрд╛рдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЗрдЪреНрдЫрд╛ рд╣реИ:

    рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд░рд╛рдорджрд╛рдпрдХ рддрд░реАрдХрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реИред

    рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкрде рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдФрд░ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

    рдПрдХ рдмрд╛рд╣рд░реА рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп: рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреА рд╕рд▓рд╛рд╣

    рд╣рдо рдЕрдХреНрд╕рд░ рдЕрдиреБрднрд╡реА рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ:

    *рд╡реЗ рдЙрдкрдпреЛрдЧреА рдкрд╛рдареНрдпрдХреНрд░рдо рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ,
    *рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдмреЛрд▓реЗрдВ,
    *рдЕрджреНрднреБрдд рдХрд┐рддрд╛рдмреЗрдВ рдФрд░ рдмреНрд▓реЙрдЧ рд▓рд┐рдЦреЗрдВ,
    * рдЙрдирдХреЗ рдЕрдиреВрдареЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

    рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╕рдЪрдореБрдЪ рдореВрд▓реНрдпрд╡рд╛рди рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ: рдпрджрд┐ рд▓реЗрдЦрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВ, рддреЛ рд╡реЗ рдирд╛рдЬреБрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

    рдРрд╕реЗ “рдЕрдиреБрднрд╡рдЬрдиреНрдп рдкреИрдЯрд░реНрди” рдХрднреА-рдХрднреА:

    * рдХреЗрд╡рд▓ рдврд╛рдВрдЪреЗ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ;
    * рдЕрджреНрдпрддрдиреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓;
    * рдЕрд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

    рд╕рдореБрджрд╛рдп рд╕реЗ рд╕реАрдЦрдирд╛ рдорд╣рд╛рди рдФрд░ рд▓рд╛рднрджрд╛рдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд▓рд╛рд╣ рдХреЛ рднреА рд╣рдореЗрд╢рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    SOLID рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛

    SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рддреАрди рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ:

    * рдЦреБрд▓рд╛/рдмрдВрдж рд╕рд┐рджреНрдзрд╛рдВрдд: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдЫрд┐рдкреЗ рд╣реБрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рди рд░рд╣реЗрдВред
    * рд▓рд┐рд╕реНрдХреЛрд╡ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд┐рджреНрдзрд╛рдВрдд: рдЕрдиреБрдмрдВрдз рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд╣реАрдВред рдЕрдиреНрдпрдерд╛, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
    * рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдордг: рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдирд╣реАрдВ, рдЕрдореВрд░реНрддрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдмрдирд╛рдПрдБред

    рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдврд╛рдВрдЪреЗ рдХреЗ рдЖрдВрддрд░рд┐рдХ, рдЧреИрд░-рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд┐рд╡рд░рдг рд╕реЗ рдмрдВрдзрд╛ рд╣реЛрдирд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рднрдВрдЧреБрд░ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
    рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

    * рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╕реЗ рдХреЛрдб рдХрд╛ рдмреЗрд╣рддрд░ рдЕрд▓рдЧрд╛рд╡;
    * рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЖрд╕рд╛рдиреА;
    * рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдпрддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ред

    рдЕрдЧрд░ рдХреЛрдИ рдмрдЧ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

    рдРрд╕рд╛ рднреА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдЙрдореНрдореАрджреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдврд╛рдБрдЪреЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрддреЗред рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ:

    * рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реЛред
    * рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рд▓реЗрдЦрд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
    * рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреЗрдВ – рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдЧреА рдФрд░ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреАред

    рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ред

    рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдн рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

    *рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ.
    * рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХреЛрдВ рдФрд░ рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред
    * рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рднреАрддрд░ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
    * рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд╕рд▓рд╛рд╣ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
    * рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдиреБрдмрдВрдзреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реБрдП рдмрдЧреНрд╕ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░реЗрдВред

    рдирд┐рд╖реНрдХрд░реНрд╖

    рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдЧреЗрдо рдХреЗ рдЕрдкрдиреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИрдВред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдХрд░, рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмрдирд╛рдП рдЧрдП рдЙрддреНрдкрд╛рдж рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрдиреЗ рд░рд╣реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рддрддреНрдХрд╛рд▓ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред

    рдореИрдиреБрдЕрд▓ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдорд░реНрдерди рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

    рд╕реНрд░реЛрдд

    https://developer.apple.com/app-store/review/guidelines/
    https://en.wikipedia.org/wiki/SOLID
    https://en.wikipedia.org/wiki/API
    https://en.wikipedia.org/wiki/RTFM

  • Linux рдкрд░ iOS рдХреЗ рд▓рд┐рдП C++ SDL рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг

    рдЗрд╕ рдиреЛрдЯ рдореЗрдВ, рдореИрдВ Linux рдкрд░ iOS рдХреЗ рд▓рд┐рдП C++ SDL рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ, рд╕рд╢реБрд▓реНрдХ Apple рдбреЗрд╡рд▓рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдмрд┐рдирд╛ IPA рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдФрд░ рдЬреЗрд▓рдмреНрд░реЗрдХ рдХреЗ рдмрд┐рдирд╛ macOS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдлрд╝ рдбрд┐рд╡рд╛рдЗрд╕ (iPad) рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП Linux рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЯреВрд▓рдЪреЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:
    https://github.com/tpoechtrager/cctools-port

    рдЯреВрд▓рдЪреЗрди рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрдбреЛрдЯ рдЗрдВрдЬрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
    https://docs.godotengine.org/ru/latest/development/compiling/cross-compiling_for_ios_on_linux.html

    рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдкрдХреЛ cctools-port рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Xcode dmg рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ sdk рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЪрд░рдг рдХреЛ macOS рдкрд░ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ; рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд Xcode рд╕реЗ рдЖрд╡рд╢реНрдпрдХ sdk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рд╕рдлрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓рдЪреЗрди рдХрд╛ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред
    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк iOS рдХреЗ рд▓рд┐рдП SDL рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓рд┐рдП cmake рдЦреЛрд▓реЗрдВ рдФрд░ C++ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝реЗрдВ:

    SET(CMAKE_SYSTEM_NAME Darwin)
    SET(CMAKE_C_COMPILER arm-apple-darwin11-clang)
    SET(CMAKE_CXX_COMPILER arm-apple-darwin11-clang++)
    SET(CMAKE_LINKER arm-apple-darwin11-ld)
    
    

    рдЕрдм рдЖрдк рд╕реЗрдореЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреВрд▓рдЪреЗрди рдореЗрдВ $PATH рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ:

    
    PATH=$PATH:~/Sources/cctools-port/usage_examples/ios_toolchain/target/bin
    
    

    рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдПрд╕рдбреАрдПрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣реА рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реАрдПрдордХреЗ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧреЗрдо рд╕реНрдкреЗрд╕ рдЬрдЧреБрдЖрд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

    
    target_link_libraries(
    ${FSEGT_PROJECT_NAME}
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libclang_rt.ios.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2_mixer.a
    ${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/libSDL2_image.a
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreServices.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/ImageIO.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/Metal.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/AVFoundation.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/GameController.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreMotion.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreGraphics.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/AudioToolbox.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/CoreAudio.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/QuartzCore.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/OpenGLES.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/UIKit.framework"
    "${FLAME_STEEL_PROJECT_ROOT_DIRECTORY}/scripts/buildScripts/ios/resources/libs/Foundation.framework"
    )
    
    

    рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, SDL, SDL_Image, SDL_mixer рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА macOS рдкрд░ Xcode рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдлреНрд░реЗрдорд╡рд░реНрдХ Xcode рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ред libclang_rt.ios.a рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ iOS-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рдирдЯрд╛рдЗрдо рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП isOSVersionAtLeastред рдУрдкрдирдЬреАрдПрд▓ рдИрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдХреНрд░реЛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рдорд╛рди рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
    рд╕рднреА рдирд┐рд░реНрдорд╛рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╣рд╛рде рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓ рдХреА рдЧрдИ рдмрд╛рдЗрдирд░реА рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рдЬреЗрд▓рдмреНрд░реЗрдХ рдХреЗ рдмрд┐рдирд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрд╕реЗрдВрдмрд▓ рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
    MacOS рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдП рдмрд┐рдирд╛, Xcode рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, Apple рдкреЛрд░реНрдЯрд▓ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░реЗрдВред Xcode рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ -> рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ -> рдЦрд╛рддреЗ, рдПрдХ рд░рд┐рдХреНрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдмрдирд╛рдПрдВред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдкрдХреЗ рдирд┐рдГрд╢реБрд▓реНрдХ рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддреЗ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЗрдиреЗрд░рд┐рдХ iOS рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЙрддреНрдкрд╛рдж рдЪреБрдиреЗрдВ -> рдкреБрд░рд╛рд▓реЗрдЦред рдПрдХ рдмрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдмрди рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕рдореЗрдВ рд╕реЗ Embedded.mobileprovision рдФрд░ PkgInfo рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рдХрд╛рд▓реЗрдВред рдмрд┐рд▓реНрдб рд▓реЙрдЧ рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ, рд╕рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреЛрдбрд╕рд╛рдЗрди рд▓рд╛рдЗрди рдвреВрдВрдвреЗрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдРрдк.xcent рдХреЗ рд╕рд╛рде рдПрдВрдЯрд╛рдЗрдЯреЗрд▓рдореЗрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рдЗрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред
    рд╕рдВрдЧреНрд░рд╣ рд╕реЗ .app рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ, рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдХреЛ Linux рдореЗрдВ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рд╕реЗ рдмрджрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SpaceJaguar.app/SpaceJaguar), рдлрд┐рд░ .app рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝реЗрдВ, рд╕рдВрдЧреНрд░рд╣ рд╕реЗ .app рдореЗрдВ PkgInfo рдФрд░ рдПрдореНрдмреЗрдбреЗрдб.mobileprovision рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред рд╣рдо рдХреЛрдбрд╕рд╛рдЗрди рдХрдорд╛рдВрдб – рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .app рдкрд░ рдкреБрдирдГ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдбрд╕рд╛рдЗрди рдХреЛ рд╕рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирдкреБрдЯ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдВрдЯрд╛рдЗрдЯреЗрд▓рдореЗрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде (.plist рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
    рдкреБрди: рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдкреЗрд▓реЛрдб рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ, .app рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╡рд╣рд╛рдВ рд▓реЗ рдЬрд╛рдПрдВ, рд░реВрдЯ рдореЗрдВ рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдПрдВ, .ipa рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, Xcode рдореЗрдВ, рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдЦреЛрд▓реЗрдВ рдФрд░ рдирдП рдЖрдИрдкреАрдП рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВ; Apple рдХреЙрдиреНрдлрд┐рдЧрд░реЗрдЯрд░ 2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкреБрди: рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдП рдмрд╛рдЗрдирд░реА рд╡рд╛рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди 7-рджрд┐рд╡рд╕реАрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде iOS рдбрд┐рд╡рд╛рдЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, iPad) рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

    рд╕реНрд░реЛрдд

    https://github.com/tpoechtrager/cctools-port

    https://docs.godotengine.org/ru/latest/development/compiling/cross-compiling_for_ios_on_linux.html

    https://jonnyzzz.com/blog/2018/06/13/link-error-3/

    https://stackoverflow.com/questions/6896029/re-sign-ipa-iphone

    https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

  • Ubuntu MinGW CMake рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЙрдмрдВрдЯреВ рдкрд░ MinGW32 рдЯреВрд▓рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
    рд╡рд╛рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдорд┐рдВрдЧрд╡:

    sudo apt-get install wine mingw-w64
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП C/C++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

    # C
    i686-w64-mingw32-gcc helloWorld.c -o helloWorld32.exe      # 32-bit
    x86_64-w64-mingw32-gcc helloWorld.c -o helloWorld64.exe    # 64-bit
     
    # C++
    i686-w64-mingw32-g++ helloWorld.cc -o helloWorld32.exe     # 32-bit
    x86_64-w64-mingw32-g++ helloWorld.cc -o helloWorld64.exe   # 64-bit
    

    рдПрдХрддреНрд░рд┐рдд рдПрдХреНрд╕рдИ рдХреЛ рд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП CMake рдмрд┐рд▓реНрдб, CMakeLists.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ MinGW рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬрд╝реЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП:

    if (MINGW32)
    set(CMAKE_SYSTEM_NAME Windows)
    SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
    SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
    SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
    set(CMAKE_RANLIB i686-w64-mingw32-ranlib)
    endif()
    
    // ╨┤╨╗╤П ╤Б╨▒╨╛╤А╨║╨╕ shared dll
    elseif (MINGW32)
    add_library(FlameSteelEngineGameToolkit.dll SHARED ${SOURCE_FILES})
    else()
    
    // ╨╛╨▒╤П╨╖╨░╤В╨╡╨╗╤М╨╜╨╛ ╨╗╨╕╨╜╨║╤Г╨╡╨╝ ╤Б╨╛ ╨▓╤Б╨╡╨╝╨╕ ╨╖╨░╨▓╨╕╤Б╨╕╨╝╨╛╤Б╤В╤П╨╝╨╕
    if (MINGW32)
    target_link_libraries(
                            FlameSteelEngineGameToolkit.dll 
                            -static-libgcc
                            -static-libstdc++
                            SDL2 
                            SDL2_mixer 
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCore/FlameSteelCore.dll
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelBattleHorn/FlameSteelBattleHorn.dll
                            /home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCommonTraits/FlameSteelCommonTraits.dll)
    
    set_target_properties(FlameSteelEngineGameToolkit.dll PROPERTIES
            PREFIX ""
            SUFFIX ""
            LINK_FLAGS "-Wl,--add-stdcall-alias"
            POSITION_INDEPENDENT_CODE 0 # this is to avoid MinGW warning; 
            # MinGW generates position-independent-code for DLL by default
    )
    else()
    

    рд╣рдо рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ:

    cmake -DMINGW32=1 .
    make
    

    рдЖрдк рдЬреЛ рдПрдХрддреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдбреАрдПрд▓рдПрд▓ рдпрд╛ рдПрдХреНрд╕рдИ рд╣реЛрдЧрд╛ред рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирдП рдХреНрдпреВрдм-рдЖрд░реНрдЯ-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдЙрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рднрдВрдбрд╛рд░ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
    https://gitlab.com/demensdeum/cube-art-project

    https://gitlab.com/demensdeum/FlameSteelEngineGameToolkitFSGL

    https://gitlab.com/demensdeum/cube-art-project-bootstrap

    рд╕реНрд░реЛрдд
    https://arrayfire.com/cross-compile-to-windows-from-linux/

  • Ubuntu OSXCross CMake рдХреЗ рд▓рд┐рдП macOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг

    рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ CMake рдФрд░ osxcross рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Ubuntu рдмрд┐рд▓реНрдб рдорд╢реАрди рдкрд░ macOS рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо C++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, osxcross рдЯреВрд▓рдЪреЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
    https://github.com/tpoechtrager/osxcross
    рд╕реНрдерд╛рдкрдирд╛ 3 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

    cd tools
    ./get_dependencies.sh
    

    рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Apple рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ XCode.xip рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдлрд┐рд░ XCode рд╕реЗ SDK рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

    ./gen_sdk_package_pbzx.sh /media/demensdeum/2CE62A79E62A4404/LinuxSupportStorage/xcode111.xip
    

    рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ XCode рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЕрдиреБрдмрдВрдз рдкрдврд╝рд╛ рд╣реЛрдЧрд╛? рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЯреВрд▓рдЪреЗрди рдмрдирд╛рдПрдВ:

    INSTALLPREFIX=/home/demensdeum/Apps/osxcross ./build.sh 
    

    рдЕрдм рдЖрдк рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреА рдЙрдкрд╕рд░реНрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ osxcross рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП CMake рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдб рдореИрдХреНрд░реЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬрд╝реЗрдВ рд▓рд┐рдЦреЗрдВ:

    if (OSXCROSS)
    SET(CMAKE_SYSTEM_NAME Darwin)
    SET(CMAKE_C_COMPILER o64-clang)
    SET(CMAKE_CXX_COMPILER o64-clang++)
    SET(CMAKE_C_COMPILER_AR x86_64-apple-darwin19-ar)
    SET(CMAKE_CXX_COMPILER_AR x86_64-apple-darwin19-ar)
    SET(CMAKE_LINKER x86_64-apple-darwin19-ld)
    SET(ENV{OSXCROSS_MP_INC} 1)
    endif()
    

    рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдлрд▓ рдирд╣реАрдВ рд░рд╣реА, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:

    if (OSXCROSS)
    add_library(FlameSteelCore STATIC ${SOURCE_FILES})
    else()
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ osxcross рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рд╣реИ, SDL2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред osxcross рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ – рдореИрдХрдкреЛрд░реНрдЯреНрд╕ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SDL2-рдорд┐рдХреНрд╕рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛:

    osxcross-macports -v install libsdl2_mixer
    

    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╕реЗрдореЗрдХ-рдореЗрдХ рд▓рд┐рдВрдХ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

    рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдЕрд╕реЗрдВрдмрд▓реА

    рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореБрдЭреЗ рд╕реНрдереИрддрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЧрд▓рдд рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ; рдЕрдВрддрд┐рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ:

    file was built for archive which is not the architecture being linked (x86_64)
    

    рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рд╕рдорд╛рди, рд╣рдо рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд┐рд▓реНрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░рд╛ рд╣реБрдЖред рдЖрдЗрдП рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдУрдПрд╕рдПрдХреНрд╕рдХреНрд░реЙрд╕ рдЖрд░реНрдХрд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдПрдВ:

    ar x ../libFlameSteelCore.a
    rm ../libFlameSteelCore.a
    x86_64-apple-darwin19-ar rcs ../libFlameSteelCore.a *.o
    

    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реАрдзреЗ рдЙрдмрдВрдЯреВ рдкрд░ рдореИрдХрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде)ред рдмреЗрд╢рдХ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ darling, рд▓реЗрдХрд┐рди рд╕рдорд░реНрдерди рдЕрднреА рднреА рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдмрд╛рдХреА рд╣реИред

    рд╕реНрд░реЛрдд

    https://github.com/tpoechtrager/osxcross

  • рд╕реНрдерд╛рдиреАрдп рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг: рдХреЙрдореНрдлреАрдпреВрдЖрдИ рдФрд░ рдлреНрд▓рдХреНрд╕ рдореЙрдбрд▓

    рдЖрдЬрдХрд▓, рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ: рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ ComfyUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЖрдзреБрдирд┐рдХ FLUX рдореЙрдбрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред

    ComfyUI рдиреЛрдб-рдЖрдзрд╛рд░рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
    – рдкреАрдврд╝реА рдХреЗ рд╣рд░ рдЪрд░рдг рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦреЗрдВред
    – рдЖрд╕рд╛рдиреА рд╕реЗ рддреИрдпрд╛рд░ “рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝” рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ

    FLUX рдПрдХ рдмрдбрд╝рд╛ рдореЙрдбрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ SD 1.5 рдпрд╛ SDXL рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ:
    – рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб (рдЬреАрдкреАрдпреВ): 12 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рдпрд╛ рдЙрдЪреНрдЪрддрд░ (рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдПрдирд╡реАрдбрд┐рдпрд╛ рдЖрд░рдЯреАрдПрдХреНрд╕ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 8 рдЬреАрдмреА рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдорд╛рдгрд┐рдд рд╕рдВрд╕реНрдХрд░рдг (рдЬреАрдЬреАрдпреВрдПрдл рдпрд╛ рдПрдирдПрдл4) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
    – рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА (рд░реИрдо): рдиреНрдпреВрдирддрдо 16 рдЬреАрдмреА (рдЕрдзрд┐рдорд╛рдирддрдГ 32 рдЬреАрдмреА рдФрд░ рдЕрдзрд┐рдХ)ред
    – рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди: рдореЙрдбрд▓реЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 20-50 рдЬреАрдмреАред

    FLUX рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рддреИрдпрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдмрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдлрд╝реНрд▓рдХреНрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдЯреВ рдЗрдореЗрдЬ рдЦреЛрдЬреЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред

    `рдЯреЗрдХреНрд╕реНрдЯ рдЯреВ рдЗрдореЗрдЬ (рдлреНрд▓рдХреНрд╕.1 рдбреЗрд╡)` рдиреЛрдб рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ рд╕рдВрдХреЗрдд рд▓рд┐рдЦреЗрдВ, рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдлреНрд▓рдХреНрд╕ 1024×1024 рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ RUN рджрдмрд╛рдПрдБред

    рдкрд╣рд▓реА рдкреАрдврд╝реА рдореЗрдВ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

    https://github.com/comfyanonymous/ComfyUI

  • рд╕реНрдерд╛рдиреАрдп рд╡рд╛рдЗрдм рдХреЛрдбрд┐рдВрдЧ: рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ, рд╡реАрдПрд╕ рдХреЛрдб рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВ

    рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ (рддрдерд╛рдХрдерд┐рдд рд╡рд╛рдЗрдм рдХреЛрдбрд┐рдВрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдирд╡реАрдбрд┐рдпрд╛ рдЖрд░рдЯреАрдПрдХреНрд╕ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде, рддреЛ рдЖрдк рдкреВрд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдореБрдлреНрдд рдореЗрдВ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╢реБрд▓реНрдХ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдирдбреАрдП рдХреЗ рддрд╣рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ, рд╡реАрдПрд╕ рдХреЛрдб рдФрд░ рдХрдВрдЯрд┐рдиреНрдпреВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕реНрдерд╛рдиреАрдп рдмрдВрдбрд▓ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред

    рд╕реНрдерд╛рдиреАрдп рд╡рд╛рдЗрдм рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг

    рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рддреАрди рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
    – рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ: рд╕реНрдерд╛рдиреАрдп рдПрд▓рдПрд▓рдПрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред рдпрд╣ GGUF рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ OpenAI API рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
    – рд╡реАрдПрд╕ рдХреЛрдб: рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдХреЛрдб рд╕рдВрдкрд╛рджрдХред
    – рдЬрд╛рд░реА рд░рдЦреЗрдВ: рд╡реАрдПрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЪреИрдЯ рдХрд░рдиреЗ, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

    рд╕реНрдерд╛рдиреАрдп рднрд╛рд╖рд╛ рдореЙрдбрд▓ рд╕реНрдореГрддрд┐ рдЧрд╣рди рд╣реИрдВ:
    – рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб (рдЬреАрдкреАрдпреВ): 8 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдПрдирд╡реАрдбрд┐рдпрд╛ (7-8 рдмрд┐рд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП)ред рднрд╛рд░реА рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП 16 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
    – рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди: рд╡рд┐рднрд┐рдиреНрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 500 рдЬреАрдмреАред

    рд▓рд┐рдВрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

    рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╣реЗрд░рдлреЗрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
    1. рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдХреНрд╡реЗрди рдХреЛрдбрд░ рдпрд╛ gemma3:12b рдЬреИрд╕реЗ рд╣рд▓реНрдХреЗ рдореЙрдбрд▓ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    2. рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ `http://localhost:1234/v1` рдкрд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдЧрд╛ред
    3. рд╡реАрдПрд╕ рдХреЛрдб рдЦреЛрд▓реЗрдВ рдФрд░ рдкреНрд▓рдЧрдЗрди рд╕реНрдЯреЛрд░ рд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
    4. рдЬрд╛рд░реА рд░рдЦреЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ `рдУрдкрдирд╛рдИ` рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВред

    рдлрд┐рд░ рдЖрдк рдЬрд╛рд░реА рд░рдЦреЗрдВ рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕реАрдзреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдПрд▓рдПрд▓рдПрдо рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдШрдЯрдХ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

    рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдПрд▓рдПрд▓рдПрдо рдлреНрд▓реИрдЯ рд╕рдВрд░рдЪрдирд╛ рдФрд░ WET (рд╣рд░ рдЪреАрдЬрд╝ рджреЛ рдмрд╛рд░ рд▓рд┐рдЦреЗрдВ) рдХреЛрдб рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдЬрдЯрд┐рд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рд╕реНрдерд╛рдиреАрдп рдкреИрд░рд╛рдореАрдЯрд░ рдореЙрдбрд▓ GPT-4 рдЬреИрд╕реЗ рджрд┐рдЧреНрдЧрдЬреЛрдВ рд╕реЗ рдХрдорддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ, рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рддреЗрдЬреА рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

    рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╕реНрдерд╛рдиреАрдп рд╡рд╛рдЗрдм рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЖрдкрдХрд╛ рдХреЛрдб рдорд╢реАрди рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╕рдВрдпреЛрдЬрди рдХреЛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдмрдирд╛рддрд╛ рд╣реИред

    рдЖрдЙрдЯрдкреБрдЯ

    рд╕реНрдерд╛рдиреАрдп рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ рдпрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрд▓рдПрдо рд╕реНрдЯреВрдбрд┐рдпреЛ + рд╡реАрдПрд╕ рдХреЛрдб + рдХрдВрдЯрд┐рдиреНрдпреВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреЛрдкрдиреАрдпрддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЫреЛрдЯреЗ рдореЙрдбрд▓реЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ рддреЛ рдпрд╣ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рд╣реИред

    рд▓рд┐рдВрдХ

    https://code.visualstudio.com/
    https://lmstudio.ai/
    https://continue.dev/

    рд╕реНрд░реЛрдд

    https://youtu.be/IqqCwhG46jY
    https://www.youtube.com/watch?v=7AImkA96mE8

  • рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдкреАрдврд╝реА: рдХреЙрдореНрдлрд╝реАрдпреВрдЖрдИ рдФрд░ рдПрд▓рдЯреАрдПрдХреНрд╕-2.3

    рдкрд╣рд▓реЗ, рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдирд╛ рд░рдирд╡реЗ рдпрд╛ рд▓реВрдорд╛ рдЬреИрд╕реА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдерд╛ред рдЖрдЬ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрдзреБрдирд┐рдХ рдПрдирд╡реАрдбрд┐рдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ ComfyUI рдФрд░ рдкреНрд░рднрд╛рд╡реА LTX-2.3 рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдкреАрдврд╝реА рдХреИрд╕реЗ рд╕реЗрдЯ рдХреА рдЬрд╛рдПред

    рд╡реАрдбрд┐рдпреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг

    рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
    – ComfyUI: рдиреЛрдб-рдЖрдзрд╛рд░рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛ рдЖрдкрдХреЛ рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
    – LTX-2.3: рд▓рд╛рдЗрдЯрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рдореЙрдбрд▓, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдордзреНрдпрдо рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред

    рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

    рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ:
    – рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб (рдЬреАрдкреАрдпреВ): 8 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рдХреЗ рд╕рд╛рде рдПрдирд╡реАрдбрд┐рдпрд╛ рдЖрд░рдЯреАрдПрдХреНрд╕ 768×512 рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╣реИред рдЖрд░рд╛рдорджрд╛рдпрдХ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП, 16-24 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рд╣реЛрдирд╛ рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред
    – рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА (рд░реИрдо): рдиреНрдпреВрдирддрдо 32 рдЬреАрдмреАред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рд╡реАрдбрд┐рдпреЛ рдореЙрдбрд▓ рдФрд░ VAE рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЧрд╣ рд▓реЗрддреЗ рд╣реИрдВред
    – рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди: рдореЙрдбрд▓ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 500 рдЬреАрдмреАред

    рд╕реЗрдЯрдЕрдк рдФрд░ рд▓реЙрдиреНрдЪ

    ComfyUI рдореЗрдВ LTX-2.3 рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
    1. ComfyUI рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдореЙрдбрд▓ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
    2. рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ LTX рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ JSON рдЯреЗрдореНрдкрд▓реЗрдЯ рдвреВрдВрдврдирд╛ рд╣реИред рд╡реАрдбрд┐рдпреЛ рдЕрд╡реНрдпрдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдбреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
    3. рд╕рдВрдХреЗрдд рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░: рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рджреГрд╢реНрдп рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд░реНрдЬ рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ LTX-2.3 рдЧрддрд┐ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП “рдХреИрдорд░рд╛ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ”, “рддреЗрдЬ рдЧрддрд┐”)ред

    LTX-2.3 рдХреНрдпреЛрдВ рдЪреБрдиреЗрдВ?

    LTX-2.3 рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд░рд╛рдмрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рджреЗрддрд╛ рд╣реИ:
    – рдкреВрд░реНрдг рдЧреЛрдкрдиреАрдпрддрд╛: рдЖрдкрдХреЗ рд╕рдВрдХреЗрдд рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред
    – рдирд┐рдпрдВрддреНрд░рдг: рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдлреНрд░реЗрдо рджрд░ (рдПрдлрдкреАрдПрд╕), рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ рд╢реАрдШреНрд░ рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдкреАрдврд╝реА рдЕрднреА рднреА рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИ, рдФрд░ LTX-2.3 “рд╣реЛрдо рд╣реЙрд▓реАрд╡реБрдб” рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИред

    рд▓рд┐рдВрдХ

    https://github.com/comfyanonymous/ComfyUI
    https://huggingface.co/Lightricks/LTX-Video

  • рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреАрдд рдкреАрдврд╝реА: рдХреЙрдореНрдлреАрдпреВрдЖрдИ рдФрд░ рдПрд╕реАрдИ-рд╕реНрдЯреЗрдк-1.5 рдореЙрдбрд▓

    рдЖрдЬрдХрд▓, рдЖрдкрдХреЛ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ: рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рд╕рдВрдЧреАрдд рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ ComfyUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЖрдзреБрдирд┐рдХ ACE-Step-1.5 рдореЙрдбрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред

    ComfyUI рдиреЛрдб-рдЖрдзрд╛рд░рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
    – рдСрдбрд┐рдпреЛ рдЬреЗрдирд░реЗрд╢рди рдХреЗ рд╣рд░ рдЪрд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВред
    – рдЖрд╕рд╛рдиреА рд╕реЗ рддреИрдпрд╛рд░ “рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝” рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

    рдПрд╕реАрдИ-рд╕реНрдЯреЗрдк-1.5 рд╕рдВрдЧреАрдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдиреНрдирдд рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрдИ рд╕рд░рд▓ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВ:
    – рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб (рдЬреАрдкреАрдпреВ): рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП 8 рдЬреАрдмреА рд╡реАрдЖрд░рдПрдПрдо рдпрд╛ рдЙрдЪреНрдЪрддрд░ (12 рдЬреАрдмреА+ рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдХреЗ рд╕рд╛рде рдПрдирд╡реАрдбрд┐рдпрд╛ рдЖрд░рдЯреАрдПрдХреНрд╕ред
    – рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА (рд░реИрдо): рдиреНрдпреВрдирддрдо 16 рдЬреАрдмреА (рдЕрдзрд┐рдорд╛рдирддрдГ 32 рдЬреАрдмреА рдФрд░ рдЕрдзрд┐рдХ)ред
    – рдкреНрд░реЛрд╕реЗрд╕рд░ (рд╕реАрдкреАрдпреВ): AVX/CUDA рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдорд▓реНрдЯреА-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ред
    – рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди: рдореЙрдбрд▓реЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 20-50 рдЬреАрдмреАред

    ACE-Step-1.5 рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рддреИрдпрд╛рд░ рдСрдбрд┐рдпреЛ рдЬреЗрдирд░реЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдмрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рдВрдЧреАрдд рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдСрдбрд┐рдпреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред

    `рдкреНрд░реЙрдореНрдкреНрдЯ рдЗрдирдкреБрдЯ` рдиреЛрдб рдореЗрдВ рд╢реИрд▓реА рдФрд░ рдордиреЛрджрд╢рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдВрдХреЗрдд рд▓рд┐рдЦреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, “рднрд╛рд░реА рдмрд╛рд╕ рдХреЗ рд╕рд╛рде рдЙрддреНрдерд╛рди рд╕рд┐рдВрдерд╡реЗрд╡ рдЯреНрд░реИрдХ”)ред рд╡рд╛рдВрдЫрд┐рдд рдЕрд╡рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ RUN рджрдмрд╛рдПрдБред
    рдкрд╣рд▓реА рдкреАрдврд╝реА рдореЗрдВ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдзреНрд╡рдирд┐рдХ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

    https://github.com/comfyanonymous/ComfyUI
    https://www.youtube.com/watch?v=UAlLD5fS7-c

  • рдУрд▓рд╛рдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдерд╛рдиреАрдп рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ

    рдпрджрд┐ рдЖрдкрдХреЛ рдЪреИрдЯрдЬреАрдкреАрдЯреА рдЬреИрд╕рд╛ рдХреБрдЫ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереА рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдирд╡реАрдбрд┐рдпрд╛ рдЖрд░рдЯреАрдПрдХреНрд╕ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде, рддреЛ рдЖрдк рдУрд▓рд╛рдорд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рддреИрдпрд╛рд░ рдПрд▓рдПрд▓рдПрдо рдореЙрдбрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдУрд▓рд╛рдорд╛ рдЪреИрдЯрдЬреАрдкреАрдЯреА рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрд▓рдПрд▓рдПрдо рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ; рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рднреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рд╣реИред

    рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ Apple M2 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдореИрдХрдмреБрдХ рдкрд░ рднреА рдЪрд▓рд╛рдпрд╛, рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ AMD рдХреЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рдирд╡реАрдирддрдо рдореЙрдбрд▓ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

    MacOS рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ollama рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдБ:
    https://ollama.com/download/mac

    “MacOS рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ” рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЖрдк ollama-darwin.zip рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрджрд░ Ollama.app рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ “рдПрдкреНрд▓рд┐рдХреЗрд╢рди” рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, Ollama.app рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдкрд░ рд╣реЛрдЧреАред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯреНрд░реЗ рдореЗрдВ рдЖрдкрдиреЗ рдУрд▓рд╛рдорд╛ рдЖрдЗрдХрди рджреЗрдЦрд╛, рдЯреНрд░реЗ рдШрдбрд╝реА рдХреЗ рдареАрдХ рдмрдЧрд▓ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИред

    рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдирд┐рдпрдорд┐рдд macOS рдЯрд░реНрдорд┐рдирд▓ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдУрд▓рд╛рдорд╛ рдореЙрдбрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб, рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓реЛрдВ, рд╡рд┐рд╡рд░рдгреЛрдВ рдФрд░ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдУрд▓рд╛рдорд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
    https://ollama.com/search

    рдпрджрд┐ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдпрд╣ рдЖрдкрдХреЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рдмреИрдарддрд╛ рд╣реИ рддреЛ рд╕рдмрд╕реЗ рдХрдо рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓рд╛ рдореЙрдбрд▓ рдЪреБрдиреЗрдВред

    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, llama3.1:рдирд╡реАрдирддрдо рдореЙрдбрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢:

    ollama run llama3.1:latest
    

    рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрдо рддреМрд░ рдкрд░ рд╕рдорд╛рди рд╣реИ, рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдУрд▓рд╛рдорд╛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реЛрдЧрд╛ рдФрд░ рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
    рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдУрд▓рд╛рдорд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рдмреИрд╢ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
    https://www.youtube.com/watch?v=Wjrdr0NU4Sk
    https://ollama.com

  • ffmpeg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдерд┐рд░реАрдХрд░рдг

    рдпрджрд┐ рдЖрдк рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреИрдорд░рд╛ рд╢реЗрдХ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ `ffmpeg` рдЯреВрд▓ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ `vidstabdetect` рдФрд░ `vidstabtransform` рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЬрдЯрд┐рд▓ рд╡реАрдбрд┐рдпреЛ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреЗрд╢реЗрд╡рд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА

    рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ `ffmpeg` `vidstab` рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд╕реЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

    bash  
    ffmpeg -filters | grep vidstab  
    

    рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

    sudo apt install ffmpeg libvidstab-dev  
    

    рдмреНрд░реВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ macOS рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди:

    brew install libvidstab
    brew install ffmpeg
    

    рдЕрдм рдЪрд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

    рдЪрд░рдг 1: рдЧрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

    рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╡реАрдбрд┐рдпреЛ рдХреА рдЧрддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрдерд┐рд░реАрдХрд░рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреА рд╣реЛрдЧреАред

    ffmpeg -i input.mp4 -vf vidstabdetect=shakiness=10:accuracy=15 transfile=transforms.trf -f null -  
    

    рдкреИрд░рд╛рдореАрдЯрд░:

    рдЕрд╕реНрдерд┐рд░рддрд╛: рд╡реАрдбрд┐рдпреЛ рд╢реЗрдХ рд╕реНрддрд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ 5, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП 10 рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
    рд╕рдЯреАрдХрддрд╛: рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдЯреАрдХрддрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ 15)ред
    рдЯреНрд░рд╛рдВрд╕рдлрд╝рд╛рдЗрд▓: рдЧрддрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдоред

    рдЪрд░рдг 2: рд╕реНрдерд┐рд░реАрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░реЗрдВ

    рдЕрдм рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    ffmpeg -i input.mp4 -vf vidstabtransform=input=transforms.trf:zoom=5 output.mp4
    

    рдкреИрд░рд╛рдореАрдЯрд░:

    рдЗрдирдкреБрдЯ: рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛)ред
    рдЬрд╝реВрдо: рдХрд╛рд▓реЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝реВрдо рдХрд╛рд░рдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 5 – рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рддрдХ рдСрдЯреЛ рдЬрд╝реВрдо)ред

  • рдЯреНрдпреВрд░рд┐рдВрдЧ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдорд╢реАрдиреЗрдВ

    рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ 1936 рд╕реЗ рдПрд▓рди рдЯреНрдпреВрд░рд┐рдВрдЧ рдХреЗ рд▓реЗрдЦ “рдСрди рдХрдВрдкреНрдпреВрдЯреЗрдмрд▓ рдирдВрдмрд░реНрд╕ рд╡рд┐рдж рдПрди рдПрдкреНрд▓реАрдХреЗрд╢рди рдЯреВ рдж рдкреНрд░реЙрдмреНрд▓рдо рдСрдл рд░рд┐рдЬреЙрд▓реНрдпреВрд╢рди” рдХреЗ рдкрд╣рд▓реЗ рдкрдиреНрдиреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдкрд╣рд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЖрдзрд╛рд░ рдмрди рдЧрдпрд╛ред

    рд▓реЗрдЦ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рдкреВрд░рд╛ рдЕрдиреБрд╡рд╛рдж рдЕрдореЗрд░рд┐рдХреА рд▓реЛрдХрдкреНрд░рд┐рдп рдЪрд╛рд░реНрд▓реНрд╕ рдкреЗрдЯрдЬрд╝реЛрд▓реНрдб рдХреА рдкреБрд╕реНрддрдХ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╣реИ “рд░реАрдбрд┐рдВрдЧ рдЯреНрдпреВрд░рд┐рдВрдЧ: рдП рдЬрд░реНрдиреА рдереНрд░реВ рдЯреНрдпреВрд░рд┐рдВрдЧ рд╣рд┐рд╕реНрдЯреЛрд░рд┐рдХрд▓ рдЖрд░реНрдЯрд┐рдХрд▓ рдСрди рдХрдореНрдкреНрдпреВрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдПрдВрдб рдЯреНрдпреВрд░рд┐рдВрдЧ рдорд╢реАрдиреНрд╕” (рдЖрдИрдПрд╕рдмреАрдПрди 978-5-97060-231-7, 978-0-470-22905-7)

    рдореВрд▓ рд▓реЗрдЦ:
    https://www.astro.puc.cl/~rparra/tools/PAPERS/turing_1936.pdf

    рд╕рдорд╛рдзрд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЧрдгрдиреАрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░

    рдП. рдПрдо. рдЯреНрдпреВрд░рд┐рдВрдЧ

    [28 рдордИ 1936 рдХреЛ рдкреНрд░рд╛рдкреНрдд – 12 рдирд╡рдВрдмрд░ 1936 рдХреЛ рдкрдврд╝реЗрдВ]

    “рдЧрдгрдирд╛ рдпреЛрдЧреНрдп” рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рджрд╢рдорд▓рд╡ рднрд┐рдиреНрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╣реЛрддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рд▓реЗрдЦ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдорд╛рдирддрд╛ рд╣реИ, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд░, рдПрдХ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдЪрд░, рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╡рд┐рдзреЗрдп рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдирдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд▓рдЧрднрдЧ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрди рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЬреБрдбрд╝реА рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рдХрдо рдмреЛрдЭрд┐рд▓ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдЖрджрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХреВрдВрдЧрд╛ред рд╕рд╛рде рд╣реА, рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдиреБрд╕рдВрдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╣реЛрддреА рд╣реИ рдпрджрд┐ рдЙрд╕рдХрд╛ рджрд╢рдорд▓рд╡ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рд╕реА рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдкреИрд░рд╛рдЧреНрд░рд╛рдл 9 рдФрд░ 10 рдореЗрдВ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реНрдХ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╡реЗ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдмрдбрд╝реЗ рд╡рд░реНрдЧ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╣реИрдВред рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдмреАрдЬрдЧрдгрд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ, рдмреЗрд╕реЗрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╢реВрдиреНрдп рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ, рд╕рдВрдЦреНрдпрд╛рдПрдБ ╧А, рдИ рдФрд░ рдЕрдиреНрдпред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╕рднреА рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

    рдпрджреНрдпрдкрд┐ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдЧ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╣реИред ┬з8 рдореЗрдВ рдореИрдВ рдХреБрдЫ рдРрд╕реЗ рддрд░реНрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рддрд░реНрдХ рджреЗрддреЗ рдкреНрд░рддреАрдд рд╣реЛрдВрдЧреЗред рдЬрдм рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рддрд░реНрдХ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЧреЛрдбреЗрд▓* рдХреЗ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (┬з11), рд╕рдорд╛рдзрд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред

    рд╣рд╛рд▓ рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ, рдЕрд▓реЛрдВрдЬреЛ рдЪрд░реНрдЪ рдиреЗ “рдкреНрд░рднрд╛рд╡реА рдЧрдгрдирд╛рд╢реАрд▓рддрд╛” рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬреЛ “рдХрдореНрдкреНрдпреВрдЯреЗрдмрд┐рд▓рд┐рдЯреА” рдХреЗ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЪрд░реНрдЪ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред “рдХрдореНрдкреНрдпреВрдЯреЗрдмрд┐рд▓рд┐рдЯреА” рдФрд░ “рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп” рдХреА рд╕рдорд╛рдирддрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    1. рдХрдВрдкреНрдпреВрдЯрд░

    рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдХрд╣ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рдЧрдгрдиреАрдп рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╡реЗ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдХреЗ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рдкрд░рд┐рдорд┐рдд рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЧрд┐рдирдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рд╣рдо ┬з9 рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ, рдпрд╣ рд▓реЗрдЦ рдпрд╣рд╛рдВ рджреА рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдиреЛрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ (рдЗрд╕рдХреЗ рд▓рд┐рдП) рддрд╛рд░реНрдХрд┐рдХ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдирд╡ рд╕реНрдореГрддрд┐, рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ, рд╕реАрдорд┐рдд рд╣реИред

    рдЖрдЗрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдПрдХ рдРрд╕реА рдорд╢реАрди рд╕реЗ рдХрд░реЗрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢рд░реНрддреЛрдВ q1, q2, …, qR рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ; рдЖрдЗрдП рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ “рдПрдо-рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди” рдХрд╣реЗрдВред рдпрд╣ (рдЕрд░реНрдерд╛рдд, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдорд╢реАрди рдПрдХ “рдЯреЗрдк” (рдХрд╛рдЧрдЬ рдХреЗ рдЕрдиреБрд░реВрдк) рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реИред рдорд╢реАрди рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реА рдпрд╣ рдмреЗрд▓реНрдЯ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдЖрдЗрдП рдЙрдиреНрд╣реЗрдВ “рд╡рд░реНрдЧ” рдХрд╣реЗрдВред рдРрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ “рдкреНрд░рддреАрдХ” рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдХреНрд╖рдг, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡рд╛рдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдкреНрд░рддреАрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ “рдЗрд╕ рдорд╢реАрди рдореЗрдВ рд╣реИред” рдЖрдЗрдП рдРрд╕реЗ рд╡рд░реНрдЧ рдХреЛ “рд╕реНрдХреИрди рдХрд┐рдпрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдХ” рдХрд╣реЗрдВред рдПрдХ “рд╕реНрдХреИрди рдХрд┐рдпрд╛ рд╣реБрдЖ рдкрд╛рддреНрд░” рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рдкрд╛рддреНрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╢реАрди рдХреЛ, рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, “рд╕реАрдзреЗ рдкрддрд╛” рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкрдиреЗ рдПрдо-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдХрд░, рдорд╢реАрди рдЙрди рдХреБрдЫ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдпрд╛рдж рд░рдЦ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ “рджреЗрдЦрд╛” (рд╕реНрдХреИрди рдХрд┐рдпрд╛ рд╣реИ)ред рдХрд┐рд╕реА рднреА рдХреНрд╖рдг рдорд╢реАрди рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдо-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпреВрдПрди рдФрд░ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдХ*** рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддреАрдХреЛрдВ рдХреА рдЗрд╕ рдЬреЛрдбрд╝реА рдХреЛ qn, “рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди” рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рджреА рдЧрдИ рдорд╢реАрди рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ рдЦрд╛рд▓реА рд╣реИ (рдпрд╛рдиреА, рдХреЛрдИ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИ), рдорд╢реАрди рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдкрд░ рдПрдХ рдирдпрд╛ рд╡рд░реНрдг рд▓рд┐рдЦрддреА рд╣реИ, рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдпрд╣ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рд╡рд░реНрдг рдХреЛ рдорд┐рдЯрд╛ рджреЗрддреА рд╣реИред рдпрд╣ рдорд╢реАрди рджреВрд╕рд░реЗ рд╡рд░реНрдЧ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдпрд╣ рдХреЗрд╡рд▓ рджрд╛рдПрдВ рдпрд╛ рдмрд╛рдПрдВ рдмрдЧрд▓ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рддрдХ рд╣реА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╢реАрди рдХрд╛ рдПрдо-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдЫ рд▓рд┐рдЦрд┐рдд рд╡рд░реНрдг рдЕрдВрдХреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рджрд╢рдорд▓рд╡ рднрд╛рдЧ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдмрд╛рдХреА “рд╕реНрдореГрддрд┐ рдХреА рд╕рд╣рд╛рдпрддрд╛” рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдЪрд┐рд╣реНрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЗрд╡рд▓ рдЙрдкрд░реНрдпреБрдХреНрдд рдЧрд▓рдд рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рд╣реА рдорд┐рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рдореЗрд░рд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЬрд┐рди рдСрдкрд░реЗрд╢рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрдирдореЗрдВ рд╡реЗ рд╕рднреА рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрдгрдирд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╢реАрди рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╕рдордЭ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрдерди рдХрд╛ рддрд░реНрдХ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ “рдорд╢реАрди”, “рдЯреЗрдк”, “рд╕реНрдХреИрди” рдЖрджрд┐ рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрд░реНрде рдХреА рд╕рдордЭ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

    *рдЧреЛрдбреЗрд▓ “рдкреНрд░рд┐рдВрд╕рд┐рдкрд┐рдпрд╛ рдЧрдгрд┐рдд рдХреЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирд┐рд░реНрдгреАрдд рд╡рд╛рдХреНрдпреЛрдВ рдкрд░ (рд╡реНрд╣рд╛рдЗрдЯрд╣реЗрдб рдФрд░ рд░рд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ 1910, 1912 рдФрд░ 1913 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд) рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рд╕реНрдЯрдо, рднрд╛рдЧ I,” рдЧрдгрд┐рдд рдХрд╛ рдЬрд░реНрдирд▓ред рднреМрддрд┐рдХреА, рдЬрд░реНрдорди рдореЗрдВ рдорд╛рд╕рд┐рдХ рдмреБрд▓реЗрдЯрд┐рди рд╕рдВрдЦреНрдпрд╛ 38 (1931 рдХреЗ рд▓рд┐рдП, рдкреГ. 173-198)ред
    ** рдЕрд▓реЛрдВрдЬреЛ рдЪрд░реНрдЪ, “рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдПрдХ рдЕрдирд┐рд░реНрдгреАрдд рд╕рдорд╕реНрдпрд╛,” рдЧрдгрд┐рдд рдХреЗ рдЕрдореЗрд░рд┐рдХреА рдЬреЗ., рдирдВрдмрд░ 58 (1936), рдкреАрдкреА. 345-363ред
    *** рдЕрд▓реЛрдВрдЬреЛ рдЪрд░реНрдЪ, “рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рдПрдХ рдиреЛрдЯ,” рд╕рд┐рдореНрдмреЛрд▓рд┐рдХ рд▓реЙрдЬрд┐рдХ рдХреЗ рдЬреЗ., рдирдВрдмрд░ 1 (1936), рдкреАрдкреА. 40-41

  • рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕

    рдбреЛрдирдХреА рд╣рд┐рд▓реНрд╕ рдПрдХ рдкреНрд░рдердо-рд╡реНрдпрдХреНрддрд┐ рд╣реЙрд░рд░-рдХреЙрдореЗрдбреА рд╕рд╛рд╣рд╕рд┐рдХ рд╣реИ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдПрдХ рд░рд╣рд╕реНрдпрдордп рдХрд╣рд╛рдиреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЗ рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣рд╛рд╕реНрдп рдХреЗ рд╕рд╛рде рд░рд╣рд╕реНрдп рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
    рдореБрдЦреНрдп рдкрд╛рддреНрд░ рдЬреЗрдореНрд╕ рдЕрдкрдиреА рдСрдирд▓рд╛рдЗрди рдорд┐рддреНрд░ рдорд╛рд░рд┐рдпрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрд╕рд╕реЗ рд╕рдВрдмрдВрдз рдЕрдЪрд╛рдирдХ рдЯреВрдЯ рдЧрдпрд╛ред рдПрдХрдорд╛рддреНрд░ рд╕рдмреВрдд рдиреЛрд╡реЛрд╕рд┐рдмрд┐рд░реНрд╕реНрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕реБрджреВрд░ рдЧрд╛рдВрд╡ рдбреЛрдВрдХреА рд╣рд┐рд▓реНрд╕ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд╕реНрд╡реАрд░ рд╣реИред рд╕рдЪреНрдЪрд╛рдИ рдХреА рддрд╣ рддрдХ рдЬрд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдЬреЗрдореНрд╕ рдиреЗ рдорд╛рд░рд┐рдпрд╛ рдХреЗ рд▓рд╛рдкрддрд╛ рд╣реЛрдиреЗ рдХреА рд╕рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЬрд╛рдВрдЪ рд╢реБрд░реВ рдХреАред

    рдЧреЗрдо рд╕реНрдЯреАрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ:
    https://store.steampowered.com/app/3476390/Donki_Hills/

  • рдЪрд┐рдирд╛рдИ рдПрдЖрд░

    рдореЗрд╕рдирд░реА рдПрдЖрд░ рдПрдХ рд╕реНрдерд╛рди-рдЖрдзрд╛рд░рд┐рдд рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ (рдПрдЖрд░) рдЧреЗрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЧреБрдкреНрдд рд╕рдорд╛рдЬреЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреБрдмреЛ рджреЗрддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╢рд╣рд░ рдХреА рд╕рдбрд╝рдХреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ, рдЬреНрдЮрд╛рди рдХреА рдореЗрд╕реЛрдирд┐рдХ рдкреБрд╕реНрддрдХреЗрдВ рдПрдХрддреНрд░ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЙрдЬ рдЦреЛрдЬреЗрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░реЗрдВред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди-рдЖрдзрд╛рд░рд┐рдд рдЧреЗрдордкреНрд▓реЗ:рдЧреБрдкреНрдд рдкреБрд╕реНрддрдХреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЬреАрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдШреВрдореЗрдВред
    • рдСрдЯреЛрд╡реЙрдХ рдореЛрдб:рдпрджрд┐ рдЬреАрдкреАрдПрд╕ рдПрдХреНрд╕реЗрд╕ рд╕реАрдорд┐рдд рд╣реИ, рддреЛ рдЖрдк рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рджреБрдирд┐рдпрд╛ рдХреА рд░рд╛рдЬрдзрд╛рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирдХрд░ рдСрдЯреЛрд╡реЙрдХ рдореЛрдб рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    • рд▓реЙрдЬ рдирд┐рд░реНрдорд╛рдг: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдореЗрд╕реЛрдирд┐рдХ рд▓реЙрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдСрд░реНрдбрд░ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред
    • рдЗрди-рдЧреЗрдо рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛: рдЗрди-рдЧреЗрдо рдореБрджреНрд░рд╛ (рдПрдордУрдПрд╕) рдЕрд░реНрдЬрд┐рдд рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рд░реЗрдлрд░рд▓ рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
    • рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо: рдереНрд░реА.рдЬреЗрдПрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓ рдЗрдВрдЬрди 2 рдЧреЗрдо рдЗрдВрдЬрди рдХреА рдмрджреМрд▓рдд рдЧреЗрдо рд╕реАрдзреЗ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдкреАрд╕реА рдкрд░ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

    рдЦреЗрд▓:
    https://demensdeum.com/games/masonry-ar/client/

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/zefir1990/Masonry-AR

  • рдЯреЗрдлреНрд▓рдЪрд░


    Teflecher рдПрдХ рддреЗрдЬрд╝, рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреНрд╡рд┐рдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдХреЛрдЯрд▓рд┐рди рдорд▓реНрдЯреАрдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (KMP) рдФрд░ рдорд▓реНрдЯреАрдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рджреВрд░рд╕реНрде URL рд╕реЗ рд╕рд╣рдЬрддрд╛ рд╕реЗ рдХреНрд╡рд┐рдЬрд╝ рд▓реЛрдб рдХрд░рдиреЗ, рдмрд╣реБрд╡рд┐рдХрд▓реНрдкреАрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ, рд╕рд╣реА рдЙрддреНрддрд░реЛрдВ рдкрд░ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрдиреЗ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рд╡реЗрдм:
    https://demensdeum.com/software/teflecher/

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/zefir1990/teflecher

    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдпрдирд┐рдХ + рдХреИрдкреЗрд╕рд┐рдЯрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЯреЗрдлреНрд▓рдЪрд░ рд╕рдВрдкрд╛рджрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рд╕рдВрдкрд╛рджрдХ

    рд╡реЗрдм:
    https://demensdeum.com/software/teflecher-editor/

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/zefir1990/teflecher-editor

  • рднреВрдд рд╕рдВрдкрд░реНрдХ


    рдШреЛрд╕реНрдЯ рдХреЙрдиреНрдЯреИрдХреНрдЯреНрд╕ рдПрдХ рд╕рд░рд▓ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдорд╛рдирдХ рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдФрд░ рдлреЛрди рдмреБрдХреНрд╕ рд╕реЗ рдЖрдкрдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдмрд╛рд╣рд░реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рд╕реЗ рдЫрд┐рдкрд╛рдирд╛:рдЖрдкрдХреЗ рд╕рдВрдкрд░реНрдХ рдорд╛рдирдХ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдкрд░реНрдХ рдПрдкреАрдЖрдИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдлреЛрди рдмреБрдХ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
    • рдкреИрдирд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб: рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╛рд╕рд╡рд░реНрдб, рдЬрдм рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрдкрд░реНрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддреБрд░рдВрдд рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд: рдмреИрдХрдЕрдк рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CSV рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рдгред

    рдСрдирд▓рд╛рдЗрди рдЖрд╡реЗрджрди:
    https://demensdeum.com/software/ghost-contacts/

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/demensdeum/GhostContacts

  • рдШрди рдХрд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ 2

    рдХреНрдпреВрдм рдЖрд░реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ – рдПрдХ рдзреНрдпрд╛рдирдкреВрд░реНрдг 3рдбреА рдХреИрдирд╡рд╛рд╕ рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдХреЛ рдЙрдбрд╝рд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЛрдХреНрд╕рд▓ рдкреЗрдВрдЯрд┐рдВрдЧ рдмрдирд╛рдПрдВ, рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп 3рдбреА рдореЙрдбрд▓ рдХреЛ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬреАрд╡рдВрдд рдХрд░реЗрдВред

    рдХреНрдпреВрдм рдЖрд░реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рдХреНрдпрд╛ рд╣реИ?

    рдпрд╣ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдЧреЗрдо рд╣реИ рдЬреЛ рдЖрдкрдХреА рд╕реНрдХреНрд░реАрди рдХреЛ 3рдбреА рдкреЗрдВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд╕рд╛рдлрд╝ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ, рдЖрдХреГрддрд┐рдпреЛрдВ рдФрд░ рдЪрдордХреАрд▓реЗ рд░рдВрдЧреЛрдВ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • 3рдбреА рдбреНрд░рд╛рдЗрдВрдЧ: рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЛ рд╕реНрд╡рд░ рдХрд▓рд╛ рдФрд░ 3рдбреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдмрдирд╛рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред
    • рд░рдВрдЧ рдЪрдпрдирдХрд░реНрддрд╛: рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрд░рдЬреАрдмреА рд╕реНрд▓рд╛рдЗрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рд░рдВрдЧреЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
    • рдЖрдВрджреЛрд▓рди рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛: рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреИрдорд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдХреЛрдг рд╕реЗ рдЕрдкрдиреА рдкреЗрдВрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВред
    • рдХреИрдирд╡рд╛рд╕ рд╕реЗрд╡рд┐рдВрдЧ: рдЕрдкрдирд╛ рдХрд╛рдо рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдордп рдбреНрд░рд╛рдЗрдВрдЧ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ, рдпрд╛ рдЕрдкрдирд╛ рдХрд╛рдо рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

    рдкреНрд░рдмрдВрдзрди

    • WASD – рдХреИрдорд░рд╛ рдореВрд╡рдореЗрдВрдЯ
    • рдорд╛рдЙрд╕ – рдХреИрдорд░рд╛ рд░реЛрдЯреЗрд╢рди рдФрд░ рдирд┐рд░реАрдХреНрд╖рдг
    • рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (GUI) – рд░рдВрдЧ рдЪрдпрди рдФрд░ рд╕рдорд╛рдпреЛрдЬрди

    рдЦреЗрд▓:
    https://demensdeum.com/software/cube-art-project-2/

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/zefir1990/cube-art-project-2

  • Raiden Video Ripper

    рд░реИрдбреЗрди рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкрд░ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕рдВрдкрд╛рджрди рдФрд░ рдкреНрд░рд╛рд░реВрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ Qt 6 (Qt рдХреНрд░рд┐рдПрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╡реАрдбрд┐рдпреЛ рдХреЛ MP4, GIF рдФрд░ WebM рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рд╡реАрдбрд┐рдпреЛ рд╕реЗ рдСрдбрд┐рдпреЛ рднреА рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдПрдордкреА3 рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

    рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реНрдЯреЛрд░:
    https://apps.microsoft.com/detail/9nvzjs98smgc

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/demensdeum/RaidenVideoRipper/releases

  • рдордВрдЧрд▓ рдЦрдирд┐рдХ

    рд▓рд╛рд▓ рдЧреНрд░рд╣ рдХреА рдХрдард┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рд░ рд╕реЗрдХрдВрдб рдФрд░ рд╣рд░ рдХреНрд╖реЗрддреНрд░ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рд╣рдо рдорд╛рд░реНрд╕ рдорд╛рдЗрдирд░реНрд╕ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВ, рдЬреЛ рдПрдХ рдмрд╛рд░реА-рдЖрдзрд╛рд░рд┐рдд рд░рдгрдиреАрддрд┐ рдЧреЗрдо рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдХреЙрд▓реЛрдиреА рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рдореВрд▓реНрдпрд╡рд╛рди рдорд╛рд░реНрдЯрд┐рдпрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рддреЗ рд╣реИрдВред

    рдордВрдЧрд▓ рдЦрдирд┐рдХ рдХреНрдпрд╛ рд╣реИрдВ?

    рдорд╛рд░реНрд╕ рдорд╛рдЗрдирд░реНрд╕ рдореЗрдВ рдЖрдк рдордВрдЧрд▓ рдЧреНрд░рд╣ рдкрд░ рдПрдХ рдЦрдирди рдирд┐рдЧрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдЖрдзрд╛рд░ рдмрдирд╛рдирд╛, рд╕рдВрд╕рд╛рдзрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрдмреНрдЬрд╝рд╛ рдХрд░рдирд╛ рдФрд░ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдпрд╛ рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рднрдпрдВрдХрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрд╡рд╛рдпрддреНрдд рдЦрдирди рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░рдирд╛ рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • рд╕рд╛рдорд░рд┐рдХ рд░рдгрдиреАрддрд┐: рдЕрдкрдиреЗ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдХреА рдЪрд╛рд▓реЛрдВ рдХреА рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдХреЗ, рдЕрдкрдиреЗ рдЖрдзрд╛рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдХрдмреНрдЬрд╝рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред
    • рд╕реНрд╡рд╛рдпрддреНрдд рдЗрдХрд╛рдЗрдпрд╛рдБ: рдЦрдирди рд░реЛрдмреЛрдЯреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░реЗрдВ рдФрд░ рдЕрдзрд┐рдХрддрдо рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рддрд░реНрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред
    • рд╡рд┐рднрд┐рдиреНрди рдореЛрдб: рдПрдХрд▓-рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореИрджрд╛рди рдореЗрдВ рдЕрдкрдиреЗ рдХреМрд╢рд▓ рдХреЛ рдирд┐рдЦрд╛рд░реЗрдВ рдпрд╛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдореЛрдб рдореЗрдВ рдЕрдиреНрдп рдЙрдкрдирд┐рд╡реЗрд╢рд╡рд╛рджрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░реЗрдВред
    • рдЙрдиреНрдирдд AI: рд╕реНрдорд╛рд░реНрдЯ рдСрдЯреЛрдореЗрдЯрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рдирд╛ рдЬреЛ рд╕рд╛рдорд░рд┐рдХ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдорд╛рдл рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

    рдорд╛рд░реНрд╕ рдорд╛рдЗрдирд░реНрд╕ рдЦреЗрд▓реЗрдВ

  • рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓: рдбреЗрде рдорд╛рд╕реНрдХ 2

    рдФрджреНрдпреЛрдЧрд┐рдХ рдореЗрдЧрд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдЕрдВрддрд╣реАрди рдЧрд▓рд┐рдпрд╛рд░реЛрдВ рдореЗрдВ, рдардВрдбреА рд░реЛрд╢рдиреА рд╕реЗ рд╕рд░рд╛рдмреЛрд░, рдПрдХ рдирдИ рдЪреБрдиреМрддреА рдЖрдкрдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред рд╣рдо рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓: рдбреЗрде рдорд╛рд╕реНрдХ 2 рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВ, рдЬреЛ рдПрдХ 3рдбреА рдбрдВрдЧрдСрди рдХреНрд░реЙрд▓рд░ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдХреЛ рдЖрдзреБрдирд┐рдХ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЧреЗрдордкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред

    рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓: рдбреЗрде рдорд╛рд╕реНрдХ 2 рдХреНрдпрд╛ рд╣реИ?

    рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рднреВрд▓рднреБрд▓реИрдпрд╛ рдореЗрдВ рдЬрд╛рдЧрдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ “рдлрд╝рд┐рд▓реНрдЯрд░” рдирд╛рдордХ рдПрдХ рд╢рддреНрд░реБрддрд╛рдкреВрд░реНрдг рдЗрдХрд╛рдИ рд╣рд░ рдореЛрдбрд╝ рдкрд░ рдЫрд┐рдкреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓: рдбреЗрде рдорд╛рд╕реНрдХ 2 рдореЗрдВ рдЖрдк рдПрдХ рд╕рд╛рдзрдХ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓ рдЗрдВрдЬрди 2 (рдереНрд░реА.рдЬреЗрдПрд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде) рдкрд░ рдмрдиреА рджреБрдирд┐рдпрд╛ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХрд╛рд▓рдХреЛрдард░реА: рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпрд╛рд╕ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред рд╕рд░реНрд╡рд░ рд░рд╣рд╕реНрдпреЛрдВ рдФрд░ рдЦрддрд░реЛрдВ рд╕реЗ рднрд░реЗ рдирдП рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рддрд╛ рд╣реИред
    • рдЯрд░реНрдорд┐рдирд▓: рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЙрдиреНрдирдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдирд╛, рдбреАрдмрдЧ рдХрд░рдирд╛ рдпрд╛ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ред
    • рд▓рдбрд╝рд╛рдИ рдФрд░ рдЙрддреНрддрд░рдЬреАрд╡рд┐рддрд╛: рдмрд┐рдЯреНрд╕ рдЕрд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рд▓рдбрд╝реЗрдВ, рдлрд┐рд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЪреЗрд╕реНрдЯ рдЦреЛрд▓рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдЖрдБрдХрдбрд╝реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред рдЕрдкрдиреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ – рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред
    • рдФрджреНрдпреЛрдЧрд┐рдХ рд╕реМрдВрджрд░реНрдп: рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдореЗрдЧрд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рдЙрдЪреНрдЪ-рд╡рд┐рдкрд░реАрдд рджреГрд╢реНрдп рдФрд░ рдмрд╛рдБрдЭ рд╡рд╛рддрд╛рд╡рд░рдгред

    рдореБрдЦреМрдЯреЗ рдХреЗ рдкреАрдЫреЗ рдХреА рддрдХрдиреАрдХ

    рдЧреЗрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

    • рдлреНрд░рдВрдЯрдПрдВрдб: рд╕рд╣рдЬ 3рдбреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓ рдЗрдВрдЬрди 2 (рдереНрд░реА.рдЬреЗрдПрд╕ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд░реЗрдВрдбрд░рд░ рдХреЗ рд╕рд╛рде)ред
    • рдмреИрдХрдПрдВрдб: рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Node.jsред
    • рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛: рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП MongoDB рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реНрдерд╛рдирд┐рдХ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП Redis

    рдлреНрд▓реЗрдо рд╕реНрдЯреАрд▓ рдЦреЗрд▓реЗрдВ: рдбреЗрде рдорд╛рд╕реНрдХ 2

  • рдЙрд╢рдХреА рд░реЗрдбрд┐рдпреЛ

    рдЙрд╢рдХреА-рд░реЗрдбрд┐рдпреЛ рдСрдирд▓рд╛рдЗрди рд░реЗрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд░реЗрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд░рд▓рддрд╛ рдФрд░ рд╕реБрдирдиреЗ рдХреЗ рдЖрдирдВрдж рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ, рдХреЛрдИ рдЕрддрд┐рднрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ – рдмрд╕ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рд╕реБрдиреЗрдВред


    https://demensdeum.com/software/ushki-radio

    рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрдкрди рд╕реЛрд░реНрд╕ рд░реЗрдбрд┐рдпреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рд╣рдЬрд╛рд░реЛрдВ рд░реЗрдбрд┐рдпреЛ рд╕реНрдЯреЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд╛рдо, рд╢реИрд▓реА рдпрд╛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВред

    рдЙрд╢рдХреА-рд░реЗрдбрд┐рдпреЛ рдкреГрд╖реНрдарднреВрдорд┐ рд░реЗрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рд╣реИ: рдпрд╣ рдЕрдВрддрд┐рдо рд╕реНрдЯреЗрд╢рди рдХреЛ рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ – рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрдЧреАрдд, рдмрд╛рддрдЪреАрдд рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рд╕реЗ рдХреБрдЫ рднреА рдзреНрдпрд╛рди рди рднрдЯрдХреЗред

    рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдФрд░ рдПрдХреНрд╕рдкреЛ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣реБрдб рдХреЗ рддрд╣рдд, рдПрдХреНрд╕рдкреЛ-рдПрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рд╣рд┐рдд рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЙрдкрд▓рдмреНрдз рд╣реИред

    рдЙрд╢рдХреА-рд░реЗрдбрд┐рдпреЛ рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдПрдХ рдЖрдзреБрдирд┐рдХ рдЗрдВрдЯрд░рдиреЗрдЯ рд░реЗрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдЦреБрд▓рд╛, рд╣рд▓реНрдХрд╛, рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реНрд░реЛрддрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рддред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рд╣реИ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧ рдФрд░ рдСрдбрд┐рдпреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рд╣реИред

    рдЧрд┐рдЯрд╣рдм:
    https://github.com/demensdeum/Ushki-Radio

    рдЧреВрдЧрд▓ рдкреНрд▓реЗ:
    https://play.google.com/store/apps/details?id=com.demensdeum.ushkiradio

  • рдЧреНрд▓реЗрдЬрд╝рдХреА рдЯреАрд╡реА: рдЗрдВрдЯрд░рдиреЗрдЯ рдЯреЗрд▓реАрд╡рд┐рдЬрди рдХреЗ рд▓рд┐рдП рдЖрдзреБрдирд┐рдХ рдкреНрд▓реЗрдпрд░

    рдЧреНрд▓реЗрдЬрд╝рдХреА рдЯреАрд╡реА рдЗрдВрдЯрд░рдиреЗрдЯ рдЯреЗрд▓реАрд╡рд┐рдЬрд╝рди (рдЖрдИрдкреАрдЯреАрд╡реА) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓рд╛ рдкреНрд▓реЗрдпрд░ рд╣реИ, рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдФрд░ рдПрдХреНрд╕рдкреЛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдФрд░ рдЧрддрд┐ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдкрд░ рдЖрдИрдкреАрдЯреАрд╡реА рдЪреИрдирд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

    • рдЪреИрдирд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ: рдЖрд╕рд╛рди рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧреАрдХреГрдд рд╣рдЬрд╛рд░реЛрдВ рдЪреИрдирд▓ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВред
    • рдЦреЛрдЬреЗрдВ: рдЬрд┐рди рдЪреИрдирд▓реЛрдВ рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдирд╛рдо рд╕реЗ рдвреВрдВрдвреЗрдВред
    • рдкрд╕рдВрджреАрджрд╛: рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓ рд╕рд╣реЗрдЬреЗрдВ (рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛)ред
    • рдбреАрдк рд▓рд┐рдВрдХрд┐рдВрдЧ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
    • рдереАрдо рд╕рдорд░реНрдерди: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдбрд╛рд░реНрдХ рдпрд╛ рд▓рд╛рдЗрдЯ рдереАрдо рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
    • рд╡реЗрдм рд╕рдорд░реНрдерди: рдкреНрд▓реЗрдпрд░ URL рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред

    рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ

    рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:

    • рдлреНрд░реЗрдорд╡рд░реНрдХ: рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ + рдПрдХреНрд╕рдкреЛ
    • Video Player: expo-video (╨╖╨░╨╝╨╡╨╜╨░ ╤Г╤Б╤В╨░╤А╨╡╨▓╤И╨╡╨╝╤Г expo-av)
    • рдпреВрдЖрдИ рдЯреВрд▓рдХрд┐рдЯ: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдкреЗрдкрд░
    • рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкрд╛рд░реНрд╕рд░: iptv-playlist-parser

    рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг:
    https://demensdeum.com/software/glazki-tv/

    рдЧреВрдЧрд▓ рдкреНрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг:
    https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv

  • рдЬрд╝реЗрдлрд┐рд░1990


    рдЖрдзреБрдирд┐рдХ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░: рдПрдЖрдИ рдФрд░ рдПрд▓рдПрд▓рдПрдо рдПрдХреАрдХрд░рдг, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рдмреИрдХрдПрдВрдб рд╡рд┐рдХрд╛рд╕, рдлрд╝реНрд▓рдЯрд░/рдбрд╛рд░реНрдЯ, рд░рд┐рдПрдХреНрдЯ/рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдФрд░ рдЖрдИрдУрдПрд╕, рдПрдВрдбреНрд░реЙрдЗрдб, рдореИрдХрдУрдПрд╕, рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд┐рдХрд╛рд╕ред рдореИрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ – рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рд▓реЗрдХрд░ рд░рд┐рд▓реАрдЬ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╕рдорд░реНрдерди рддрдХред

    рдореЗрд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдпрд╛рддреНрд░рд╛ рдкрд╛рдБрдЪ рд╕рд╛рд▓ рдХреА рдЙрдореНрд░ рдореЗрдВ ZX рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХреЗ рд╕реЛрд╡рд┐рдпрдд рдХреНрд▓реЛрди рдкрд░ BASIC рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИред 11 рд╕рд╛рд▓ рдХреА рдЙрдореНрд░ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ HTML рдФрд░ рдкрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдкрд╣рд▓реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдИ рдФрд░ рд▓реЙрдиреНрдЪ рдХреАред рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ PHP, MySQL, рдлрд╝реНрд▓реИрд╢, C/C++, Java рдФрд░ рдЖрдзреБрдирд┐рдХ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

    рдХрдВрдкреНрдпреВрдЯрд░ рдорд░рдореНрдордд рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХрд░рд┐рдпрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдорд░реНрдХрд░реА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рдкрдж рдкрд░ рдЪрд▓реЗ рдЧрдП, рдЬрд╣рд╛рдВ рд╡реЗ рдПрдкреНрдкрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рддрдм рд╕реЗ рдореИрдВ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдЙрддреНрдкрд╛рдж рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

    рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, macOS рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ, рдПрдореНрдмреЗрдбреЗрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдФрд░ x86, ARM, PowerPC, Motorola 68000, Z80 рдФрд░ MSP430 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИред рдХрдо рд╕реЗ рдХрдо рддреАрди рд╡реАрдкреАрдПрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓реЗрдЦрдХред

    рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдбреЗрдХрд╛рдерд▓реЙрди, рдлрд┐рдЯрдмрд┐рдЯ, рдбреЙрдХреНрдЯрд┐рд╕ред

    рд▓рд┐рдВрдХреНрдбрдЗрди: linkedin.com/in/zefir1990
    GitHub: github.com/zefir1990
    рдЯреЗрд▓реАрдЧреНрд░рд╛рдо: t.me/zefir1990
    рдИрдореЗрд▓: ceo@demensdeum.com
    рдЪрд┐рдХреЛрдЯреА: twitch.tv/zefir1990
    рдпреВрдЯреНрдпреВрдм: youtube.com/zefir1990
    рдЖрд░реНрдЯрд╕реНрдЯреЗрд╢рди: zefir1990.artstation.com
    рдХреЗрд╡рд░реНрдХ: https://kwork.com/in/zefir1990/

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.