@shareai-lab/kode 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +649 -25
- package/README.zh-CN.md +579 -0
- package/cli-acp.js +3 -17
- package/cli.js +5 -7
- package/dist/chunks/Doctor-M3J7GRTJ.js +12 -0
- package/dist/chunks/LogList-ISWZ6DDD.js +121 -0
- package/dist/chunks/LogList-ISWZ6DDD.js.map +7 -0
- package/dist/chunks/REPL-RQ6LO6S7.js +56 -0
- package/dist/chunks/ResumeConversation-6DMVBEGH.js +56 -0
- package/dist/chunks/agentLoader-FCRG3TFJ.js +31 -0
- package/dist/{agentsValidate-XP3CFN6F.js → chunks/agentsValidate-PEWMYN4Q.js} +97 -69
- package/dist/chunks/agentsValidate-PEWMYN4Q.js.map +7 -0
- package/dist/{ask-3G5H5KD5.js → chunks/ask-D7SOHJ6Z.js} +36 -44
- package/dist/chunks/ask-D7SOHJ6Z.js.map +7 -0
- package/dist/chunks/autoUpdater-CNESBOKO.js +19 -0
- package/dist/{chunk-EH34V7CY.js → chunks/chunk-2JN5MY67.js} +12 -14
- package/dist/chunks/chunk-2JN5MY67.js.map +7 -0
- package/dist/chunks/chunk-2QONJ5MG.js +14 -0
- package/dist/chunks/chunk-2QONJ5MG.js.map +7 -0
- package/dist/chunks/chunk-2WEXPKHH.js +903 -0
- package/dist/chunks/chunk-2WEXPKHH.js.map +7 -0
- package/dist/{chunk-K2MI4TPB.js → chunks/chunk-3BYE3ME6.js} +717 -792
- package/dist/chunks/chunk-3BYE3ME6.js.map +7 -0
- package/dist/chunks/chunk-3JDNWX7W.js +1264 -0
- package/dist/chunks/chunk-3JDNWX7W.js.map +7 -0
- package/dist/chunks/chunk-3OEJVB5A.js +906 -0
- package/dist/chunks/chunk-3OEJVB5A.js.map +7 -0
- package/dist/chunks/chunk-3TNIOEBO.js +369 -0
- package/dist/chunks/chunk-3TNIOEBO.js.map +7 -0
- package/dist/chunks/chunk-4A46ZXMJ.js +67 -0
- package/dist/chunks/chunk-4A46ZXMJ.js.map +7 -0
- package/dist/{chunk-4GAIJGRH.js → chunks/chunk-4ATBQOFO.js} +107 -55
- package/dist/chunks/chunk-4ATBQOFO.js.map +7 -0
- package/dist/chunks/chunk-4CRUCZR4.js +0 -0
- package/dist/{chunk-54DNHKOD.js → chunks/chunk-4EO6SIQY.js} +32 -75
- package/dist/chunks/chunk-4EO6SIQY.js.map +7 -0
- package/dist/chunks/chunk-53M46S5I.js +64 -0
- package/dist/chunks/chunk-53M46S5I.js.map +7 -0
- package/dist/{chunk-JC6NCUG5.js → chunks/chunk-54KOYG5C.js} +0 -2
- package/dist/{chunk-EZXMVTDU.js → chunks/chunk-6BAS4WY6.js} +29 -45
- package/dist/chunks/chunk-6BAS4WY6.js.map +7 -0
- package/dist/{chunk-BHGTA6JQ.js → chunks/chunk-6KRRFSDN.js} +4 -6
- package/dist/chunks/chunk-6KRRFSDN.js.map +7 -0
- package/dist/chunks/chunk-6LJNZK4K.js +39 -0
- package/dist/chunks/chunk-6LJNZK4K.js.map +7 -0
- package/dist/chunks/chunk-6ZWEOSEI.js +666 -0
- package/dist/chunks/chunk-6ZWEOSEI.js.map +7 -0
- package/dist/chunks/chunk-77XDJMBP.js +3326 -0
- package/dist/chunks/chunk-77XDJMBP.js.map +7 -0
- package/dist/chunks/chunk-7RRW4NTB.js +6454 -0
- package/dist/chunks/chunk-7RRW4NTB.js.map +7 -0
- package/dist/chunks/chunk-7X3TW4JB.js +4520 -0
- package/dist/chunks/chunk-7X3TW4JB.js.map +7 -0
- package/dist/chunks/chunk-B3MW3YGY.js +1409 -0
- package/dist/chunks/chunk-B3MW3YGY.js.map +7 -0
- package/dist/chunks/chunk-BBJFHTBC.js +28 -0
- package/dist/chunks/chunk-BBJFHTBC.js.map +7 -0
- package/dist/chunks/chunk-BHDHXOXB.js +24 -0
- package/dist/chunks/chunk-BHDHXOXB.js.map +7 -0
- package/dist/{chunk-OZNRLY3E.js → chunks/chunk-BTA7SZ26.js} +152 -223
- package/dist/chunks/chunk-BTA7SZ26.js.map +7 -0
- package/dist/chunks/chunk-CDGRYGPZ.js +103 -0
- package/dist/chunks/chunk-CDGRYGPZ.js.map +7 -0
- package/dist/{chunk-S6HRABTA.js → chunks/chunk-CP6E5UG6.js} +1 -4
- package/dist/chunks/chunk-CP6E5UG6.js.map +7 -0
- package/dist/{chunk-2PMO2FS2.js → chunks/chunk-DQ4JHXMT.js} +462 -424
- package/dist/chunks/chunk-DQ4JHXMT.js.map +7 -0
- package/dist/chunks/chunk-DXD76CMV.js +208 -0
- package/dist/chunks/chunk-DXD76CMV.js.map +7 -0
- package/dist/chunks/chunk-GCQCAXJZ.js +0 -0
- package/dist/chunks/chunk-GELCZWMB.js +42 -0
- package/dist/chunks/chunk-GELCZWMB.js.map +7 -0
- package/dist/{chunk-NQLEUHMS.js → chunks/chunk-HJYOH4HC.js} +23 -18
- package/dist/chunks/chunk-HJYOH4HC.js.map +7 -0
- package/dist/chunks/chunk-HPYNW6TT.js +744 -0
- package/dist/chunks/chunk-HPYNW6TT.js.map +7 -0
- package/dist/{chunk-2KWKUXLT.js → chunks/chunk-HRJ3ICQK.js} +59 -55
- package/dist/chunks/chunk-HRJ3ICQK.js.map +7 -0
- package/dist/{chunk-ZQU3TXLC.js → chunks/chunk-IFCIADS3.js} +571 -573
- package/dist/chunks/chunk-IFCIADS3.js.map +7 -0
- package/dist/chunks/chunk-IN7XZ7BC.js +27 -0
- package/dist/chunks/chunk-IN7XZ7BC.js.map +7 -0
- package/dist/chunks/chunk-L7P4M4KW.js +193 -0
- package/dist/chunks/chunk-L7P4M4KW.js.map +7 -0
- package/dist/chunks/chunk-LB6TCPDI.js +0 -0
- package/dist/{chunk-3RUXVV4S.js → chunks/chunk-LOCXPQNJ.js} +1 -4
- package/dist/{chunk-3RUXVV4S.js.map → chunks/chunk-LOCXPQNJ.js.map} +2 -2
- package/dist/{chunk-IE2CG2TV.js → chunks/chunk-LOD5ZHCI.js} +213 -208
- package/dist/chunks/chunk-LOD5ZHCI.js.map +7 -0
- package/dist/{chunk-S3J2TLV6.js → chunks/chunk-M7P3QNRU.js} +1 -4
- package/dist/{chunk-S3J2TLV6.js.map → chunks/chunk-M7P3QNRU.js.map} +2 -2
- package/dist/chunks/chunk-PPHLQVL7.js +4234 -0
- package/dist/chunks/chunk-PPHLQVL7.js.map +7 -0
- package/dist/{chunk-ABLVTESJ.js → chunks/chunk-QAXE37B5.js} +1 -4
- package/dist/chunks/chunk-QAXE37B5.js.map +7 -0
- package/dist/chunks/chunk-QHQOBUF6.js +60 -0
- package/dist/chunks/chunk-QHQOBUF6.js.map +7 -0
- package/dist/{chunk-SRZZFAS7.js → chunks/chunk-RPJXO7GG.js} +241 -214
- package/dist/chunks/chunk-RPJXO7GG.js.map +7 -0
- package/dist/{chunk-NPFOMITO.js → chunks/chunk-SWQV4KSY.js} +1 -4
- package/dist/{chunk-NPFOMITO.js.map → chunks/chunk-SWQV4KSY.js.map} +2 -2
- package/dist/chunks/chunk-SZLAPULP.js +28 -0
- package/dist/chunks/chunk-SZLAPULP.js.map +7 -0
- package/dist/{chunk-SDGKPKDK.js → chunks/chunk-T7RB5V5J.js} +23 -25
- package/dist/chunks/chunk-T7RB5V5J.js.map +7 -0
- package/dist/{chunk-HN4E4UUQ.js → chunks/chunk-TI2CTTMA.js} +25 -17
- package/dist/chunks/chunk-TI2CTTMA.js.map +7 -0
- package/dist/{chunk-G6I7XROM.js → chunks/chunk-TNGVRTO5.js} +45 -20
- package/dist/chunks/chunk-TNGVRTO5.js.map +7 -0
- package/dist/chunks/chunk-TNWB3U5Y.js +2077 -0
- package/dist/chunks/chunk-TNWB3U5Y.js.map +7 -0
- package/dist/chunks/chunk-U2IHWPCU.js +12 -0
- package/dist/chunks/chunk-U2IHWPCU.js.map +7 -0
- package/dist/{chunk-KAA5BGMQ.js → chunks/chunk-UNOY3VJ2.js} +1 -4
- package/dist/{chunk-KAA5BGMQ.js.map → chunks/chunk-UNOY3VJ2.js.map} +2 -2
- package/dist/{chunk-3TXNP6HH.js → chunks/chunk-UVDJL6ZZ.js} +97 -58
- package/dist/chunks/chunk-UVDJL6ZZ.js.map +7 -0
- package/dist/chunks/chunk-VNCW4C2Z.js +13452 -0
- package/dist/chunks/chunk-VNCW4C2Z.js.map +7 -0
- package/dist/chunks/chunk-W5EGGA44.js +15 -0
- package/dist/chunks/chunk-W5EGGA44.js.map +7 -0
- package/dist/chunks/chunk-XR2W3MAM.js +1533 -0
- package/dist/chunks/chunk-XR2W3MAM.js.map +7 -0
- package/dist/{chunk-QYFKRZQC.js → chunks/chunk-YIO5EBMQ.js} +423 -377
- package/dist/chunks/chunk-YIO5EBMQ.js.map +7 -0
- package/dist/chunks/chunk-ZBVLKZ5V.js +1062 -0
- package/dist/chunks/chunk-ZBVLKZ5V.js.map +7 -0
- package/dist/{chunk-E6YNABER.js → chunks/chunk-ZCLTZIVP.js} +1 -4
- package/dist/chunks/chunk-ZCLTZIVP.js.map +7 -0
- package/dist/chunks/client-SILZNM5N.js +42 -0
- package/dist/{config-6ZMBCL23.js → chunks/config-25HRTPSP.js} +48 -10
- package/dist/chunks/cost-tracker-Z2UZT2J5.js +28 -0
- package/dist/{customCommands-DNEJS3ZU.js → chunks/customCommands-TYMYZRG5.js} +11 -8
- package/dist/chunks/engine-MRVF6FK6.js +39 -0
- package/dist/{env-OFAXZ3XG.js → chunks/env-TJ5NOBEB.js} +7 -5
- package/dist/{kodeAgentSessionId-X6XWQW7B.js → chunks/kodeAgentSessionId-VTNISJ2L.js} +2 -4
- package/dist/chunks/kodeAgentSessionLoad-YB2RKBGJ.js +15 -0
- package/dist/chunks/kodeAgentSessionResume-DZSIVKVA.js +13 -0
- package/dist/chunks/kodeAgentStreamJson-X5PLS2S6.js +11 -0
- package/dist/{kodeAgentStreamJsonSession-GRWG3SPE.js → chunks/kodeAgentStreamJsonSession-RDXM4XYF.js} +38 -24
- package/dist/chunks/kodeAgentStreamJsonSession-RDXM4XYF.js.map +7 -0
- package/dist/{chunk-4RTX4AG4.js → chunks/kodeAgentStructuredStdio-SVGDSB4P.js} +14 -9
- package/dist/chunks/kodeAgentStructuredStdio-SVGDSB4P.js.map +7 -0
- package/dist/{kodeHooks-TDMXFWSO.js → chunks/kodeHooks-RVKYRJHG.js} +11 -9
- package/dist/{llm-XVXWYOHK.js → chunks/llm-62N6T5ZT.js} +1734 -1526
- package/dist/chunks/llm-62N6T5ZT.js.map +7 -0
- package/dist/chunks/llmLazy-ZUSSE3ZA.js +13 -0
- package/dist/{mentionProcessor-YD7YXYGF.js → chunks/mentionProcessor-RJW5UPJD.js} +46 -16
- package/dist/chunks/mentionProcessor-RJW5UPJD.js.map +7 -0
- package/dist/{messages-OFUJSPRV.js → chunks/messages-EEWWLPHN.js} +2 -6
- package/dist/chunks/model-5TIEKQPD.js +37 -0
- package/dist/{openai-5G5D5Q4B.js → chunks/openai-XXK3YZG4.js} +13 -10
- package/dist/{outputStyles-HLDXFQK3.js → chunks/outputStyles-FAJTXN2A.js} +6 -9
- package/dist/chunks/permissions-HO7INPWM.js +27 -0
- package/dist/{pluginRuntime-FPTKK6NY.js → chunks/pluginRuntime-C7K5ULK2.js} +31 -48
- package/dist/chunks/pluginRuntime-C7K5ULK2.js.map +7 -0
- package/dist/chunks/pluginValidation-DAM7WRTC.js +20 -0
- package/dist/chunks/registry-XYJXMOA5.js +60 -0
- package/dist/chunks/responsesStreaming-JNGE2P3D.js +8 -0
- package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js +577 -0
- package/dist/chunks/runNonTextPrintMode-SVBLCZQX.js.map +7 -0
- package/dist/chunks/server-REXXF5IK.js +46 -0
- package/dist/{skillMarketplace-PSNKDINM.js → chunks/skillMarketplace-N4HVHNST.js} +8 -6
- package/dist/chunks/src-OROQIWP3.js +44 -0
- package/dist/chunks/src-QXLGGMUW.js +1647 -0
- package/dist/chunks/src-QXLGGMUW.js.map +7 -0
- package/dist/{cli-SRV2INSL.js → chunks/src-SSDT6MVP.js} +2659 -3384
- package/dist/chunks/src-SSDT6MVP.js.map +7 -0
- package/dist/chunks/theme-YBJUIMWK.js +10 -0
- package/dist/{toolPermissionContext-65L65VEZ.js → chunks/toolPermissionContext-MOCTRR7N.js} +2 -4
- package/dist/chunks/toolPermissionSettings-EV2EJAXL.js +18 -0
- package/dist/chunks/toolPermissionSettings-EV2EJAXL.js.map +7 -0
- package/dist/chunks/uuid-6577SO6X.js +7 -0
- package/dist/chunks/uuid-6577SO6X.js.map +7 -0
- package/dist/chunks/webOnlyMode-ALXX7UQY.js +66 -0
- package/dist/chunks/webOnlyMode-ALXX7UQY.js.map +7 -0
- package/dist/entrypoints/cli.js +10 -0
- package/dist/entrypoints/cli.js.map +7 -0
- package/dist/entrypoints/daemon.js +10 -0
- package/dist/entrypoints/daemon.js.map +7 -0
- package/dist/entrypoints/mcp.js +71 -0
- package/dist/entrypoints/mcp.js.map +7 -0
- package/dist/index.js +6 -7
- package/dist/index.js.map +3 -3
- package/dist/sdk/client.cjs +391 -0
- package/dist/sdk/client.cjs.map +7 -0
- package/dist/sdk/client.js +364 -0
- package/dist/sdk/client.js.map +7 -0
- package/dist/sdk/core.cjs +19932 -0
- package/dist/sdk/core.cjs.map +7 -0
- package/dist/sdk/core.js +19893 -0
- package/dist/sdk/core.js.map +7 -0
- package/dist/sdk/daemon-client.cjs +257 -0
- package/dist/sdk/daemon-client.cjs.map +7 -0
- package/dist/sdk/daemon-client.js +221 -0
- package/dist/sdk/daemon-client.js.map +7 -0
- package/dist/sdk/protocol.cjs +170 -0
- package/dist/sdk/protocol.cjs.map +7 -0
- package/dist/sdk/protocol.js +140 -0
- package/dist/sdk/protocol.js.map +7 -0
- package/dist/sdk/runtime-node.cjs +236 -0
- package/dist/sdk/runtime-node.cjs.map +7 -0
- package/dist/sdk/runtime-node.js +222 -0
- package/dist/sdk/runtime-node.js.map +7 -0
- package/dist/sdk/runtime.cjs +17 -0
- package/dist/sdk/runtime.cjs.map +7 -0
- package/dist/sdk/runtime.js +0 -0
- package/dist/sdk/runtime.js.map +7 -0
- package/dist/sdk/tools.cjs +30300 -0
- package/dist/sdk/tools.cjs.map +7 -0
- package/dist/sdk/tools.js +30282 -0
- package/dist/sdk/tools.js.map +7 -0
- package/dist/webui/assets/index-5hlfByVS.css +1 -0
- package/dist/webui/assets/index-BR9lm1lA.js +82 -0
- package/dist/webui/index.html +28 -0
- package/package.json +93 -22
- package/scripts/binary-utils.cjs +12 -4
- package/scripts/cli-acp-wrapper.cjs +3 -17
- package/scripts/cli-wrapper.cjs +5 -7
- package/scripts/postinstall.js +8 -4
- package/dist/REPL-GIU4ZIXM.js +0 -42
- package/dist/acp-H3VJ77YG.js +0 -1357
- package/dist/acp-H3VJ77YG.js.map +0 -7
- package/dist/agentsValidate-XP3CFN6F.js.map +0 -7
- package/dist/ask-3G5H5KD5.js.map +0 -7
- package/dist/autoUpdater-DNRMJWFQ.js +0 -17
- package/dist/chunk-2KWKUXLT.js.map +0 -7
- package/dist/chunk-2PMO2FS2.js.map +0 -7
- package/dist/chunk-3TXNP6HH.js.map +0 -7
- package/dist/chunk-4GAIJGRH.js.map +0 -7
- package/dist/chunk-4RTX4AG4.js.map +0 -7
- package/dist/chunk-54DNHKOD.js.map +0 -7
- package/dist/chunk-67PY5IX6.js +0 -34
- package/dist/chunk-67PY5IX6.js.map +0 -7
- package/dist/chunk-6DRDLOLP.js +0 -2613
- package/dist/chunk-6DRDLOLP.js.map +0 -7
- package/dist/chunk-7CQVZNQV.js +0 -1609
- package/dist/chunk-7CQVZNQV.js.map +0 -7
- package/dist/chunk-ABLVTESJ.js.map +0 -7
- package/dist/chunk-AIMIPK4B.js +0 -835
- package/dist/chunk-AIMIPK4B.js.map +0 -7
- package/dist/chunk-BHGTA6JQ.js.map +0 -7
- package/dist/chunk-CIG63V4E.js +0 -72
- package/dist/chunk-CIG63V4E.js.map +0 -7
- package/dist/chunk-E6YNABER.js.map +0 -7
- package/dist/chunk-EH34V7CY.js.map +0 -7
- package/dist/chunk-EZXMVTDU.js.map +0 -7
- package/dist/chunk-FH5CHM6L.js +0 -148
- package/dist/chunk-FH5CHM6L.js.map +0 -7
- package/dist/chunk-G6I7XROM.js.map +0 -7
- package/dist/chunk-HN4E4UUQ.js.map +0 -7
- package/dist/chunk-HSPVVDIW.js +0 -30198
- package/dist/chunk-HSPVVDIW.js.map +0 -7
- package/dist/chunk-IE2CG2TV.js.map +0 -7
- package/dist/chunk-K2MI4TPB.js.map +0 -7
- package/dist/chunk-MN77D2F7.js +0 -2931
- package/dist/chunk-MN77D2F7.js.map +0 -7
- package/dist/chunk-NQLEUHMS.js.map +0 -7
- package/dist/chunk-OIFQB3S4.js +0 -515
- package/dist/chunk-OIFQB3S4.js.map +0 -7
- package/dist/chunk-OWTG2W3A.js +0 -164
- package/dist/chunk-OWTG2W3A.js.map +0 -7
- package/dist/chunk-OZNRLY3E.js.map +0 -7
- package/dist/chunk-QYFKRZQC.js.map +0 -7
- package/dist/chunk-S6HRABTA.js.map +0 -7
- package/dist/chunk-SDGKPKDK.js.map +0 -7
- package/dist/chunk-SRZZFAS7.js.map +0 -7
- package/dist/chunk-UKHTVRJM.js +0 -47
- package/dist/chunk-UKHTVRJM.js.map +0 -7
- package/dist/chunk-UYXEDKOZ.js +0 -24
- package/dist/chunk-UYXEDKOZ.js.map +0 -7
- package/dist/chunk-VBXVYQYY.js +0 -145
- package/dist/chunk-VBXVYQYY.js.map +0 -7
- package/dist/chunk-WVHORZQ5.js +0 -17
- package/dist/chunk-WVHORZQ5.js.map +0 -7
- package/dist/chunk-WWUWDNWW.js +0 -49
- package/dist/chunk-WWUWDNWW.js.map +0 -7
- package/dist/chunk-Z33T5YN5.js +0 -654
- package/dist/chunk-Z33T5YN5.js.map +0 -7
- package/dist/chunk-ZQU3TXLC.js.map +0 -7
- package/dist/cli-SRV2INSL.js.map +0 -7
- package/dist/commands-TWH6PGVG.js +0 -46
- package/dist/context-JQIOOI4W.js +0 -30
- package/dist/costTracker-6SL26FDB.js +0 -19
- package/dist/kodeAgentSessionLoad-6N27AC5K.js +0 -18
- package/dist/kodeAgentSessionResume-HUSAEO24.js +0 -16
- package/dist/kodeAgentStreamJson-NXFN7TXH.js +0 -13
- package/dist/kodeAgentStreamJsonSession-GRWG3SPE.js.map +0 -7
- package/dist/kodeAgentStructuredStdio-HGWJT7CU.js +0 -10
- package/dist/llm-XVXWYOHK.js.map +0 -7
- package/dist/llmLazy-7TD5N7XP.js +0 -15
- package/dist/loader-AUXIJTY6.js +0 -28
- package/dist/mcp-BXJ3K7NZ.js +0 -49
- package/dist/mentionProcessor-YD7YXYGF.js.map +0 -7
- package/dist/model-KPYCXWBK.js +0 -30
- package/dist/pluginRuntime-FPTKK6NY.js.map +0 -7
- package/dist/pluginValidation-DSFXZ4GF.js +0 -17
- package/dist/prompts-LWLAJRS2.js +0 -48
- package/dist/query-HVPWL27C.js +0 -50
- package/dist/responsesStreaming-AW344PQO.js +0 -10
- package/dist/ripgrep-YOPCY2GO.js +0 -17
- package/dist/state-KNRWP3FO.js +0 -16
- package/dist/theme-7S2QN2FO.js +0 -14
- package/dist/toolPermissionSettings-GPOBH4IV.js +0 -18
- package/dist/tools-FZU2FZBD.js +0 -47
- package/dist/userInput-VHNBN2MW.js +0 -311
- package/dist/userInput-VHNBN2MW.js.map +0 -7
- package/dist/uuid-QN2CNKKN.js +0 -9
- /package/dist/{REPL-GIU4ZIXM.js.map → chunks/Doctor-M3J7GRTJ.js.map} +0 -0
- /package/dist/{autoUpdater-DNRMJWFQ.js.map → chunks/REPL-RQ6LO6S7.js.map} +0 -0
- /package/dist/{chunk-JC6NCUG5.js.map → chunks/ResumeConversation-6DMVBEGH.js.map} +0 -0
- /package/dist/{commands-TWH6PGVG.js.map → chunks/agentLoader-FCRG3TFJ.js.map} +0 -0
- /package/dist/{config-6ZMBCL23.js.map → chunks/autoUpdater-CNESBOKO.js.map} +0 -0
- /package/dist/{context-JQIOOI4W.js.map → chunks/chunk-4CRUCZR4.js.map} +0 -0
- /package/dist/{costTracker-6SL26FDB.js.map → chunks/chunk-54KOYG5C.js.map} +0 -0
- /package/dist/{customCommands-DNEJS3ZU.js.map → chunks/chunk-GCQCAXJZ.js.map} +0 -0
- /package/dist/{env-OFAXZ3XG.js.map → chunks/chunk-LB6TCPDI.js.map} +0 -0
- /package/dist/{kodeAgentSessionId-X6XWQW7B.js.map → chunks/client-SILZNM5N.js.map} +0 -0
- /package/dist/{kodeAgentSessionLoad-6N27AC5K.js.map → chunks/config-25HRTPSP.js.map} +0 -0
- /package/dist/{kodeAgentSessionResume-HUSAEO24.js.map → chunks/cost-tracker-Z2UZT2J5.js.map} +0 -0
- /package/dist/{kodeAgentStreamJson-NXFN7TXH.js.map → chunks/customCommands-TYMYZRG5.js.map} +0 -0
- /package/dist/{kodeAgentStructuredStdio-HGWJT7CU.js.map → chunks/engine-MRVF6FK6.js.map} +0 -0
- /package/dist/{kodeHooks-TDMXFWSO.js.map → chunks/env-TJ5NOBEB.js.map} +0 -0
- /package/dist/{llmLazy-7TD5N7XP.js.map → chunks/kodeAgentSessionId-VTNISJ2L.js.map} +0 -0
- /package/dist/{loader-AUXIJTY6.js.map → chunks/kodeAgentSessionLoad-YB2RKBGJ.js.map} +0 -0
- /package/dist/{mcp-BXJ3K7NZ.js.map → chunks/kodeAgentSessionResume-DZSIVKVA.js.map} +0 -0
- /package/dist/{messages-OFUJSPRV.js.map → chunks/kodeAgentStreamJson-X5PLS2S6.js.map} +0 -0
- /package/dist/{model-KPYCXWBK.js.map → chunks/kodeHooks-RVKYRJHG.js.map} +0 -0
- /package/dist/{openai-5G5D5Q4B.js.map → chunks/llmLazy-ZUSSE3ZA.js.map} +0 -0
- /package/dist/{outputStyles-HLDXFQK3.js.map → chunks/messages-EEWWLPHN.js.map} +0 -0
- /package/dist/{pluginValidation-DSFXZ4GF.js.map → chunks/model-5TIEKQPD.js.map} +0 -0
- /package/dist/{prompts-LWLAJRS2.js.map → chunks/openai-XXK3YZG4.js.map} +0 -0
- /package/dist/{query-HVPWL27C.js.map → chunks/outputStyles-FAJTXN2A.js.map} +0 -0
- /package/dist/{responsesStreaming-AW344PQO.js.map → chunks/permissions-HO7INPWM.js.map} +0 -0
- /package/dist/{ripgrep-YOPCY2GO.js.map → chunks/pluginValidation-DAM7WRTC.js.map} +0 -0
- /package/dist/{skillMarketplace-PSNKDINM.js.map → chunks/registry-XYJXMOA5.js.map} +0 -0
- /package/dist/{state-KNRWP3FO.js.map → chunks/responsesStreaming-JNGE2P3D.js.map} +0 -0
- /package/dist/{theme-7S2QN2FO.js.map → chunks/server-REXXF5IK.js.map} +0 -0
- /package/dist/{toolPermissionContext-65L65VEZ.js.map → chunks/skillMarketplace-N4HVHNST.js.map} +0 -0
- /package/dist/{toolPermissionSettings-GPOBH4IV.js.map → chunks/src-OROQIWP3.js.map} +0 -0
- /package/dist/{tools-FZU2FZBD.js.map → chunks/theme-YBJUIMWK.js.map} +0 -0
- /package/dist/{uuid-QN2CNKKN.js.map → chunks/toolPermissionContext-MOCTRR7N.js.map} +0 -0
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
# Kode - 终端 AI 助手
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@shareai-lab/kode)
|
|
4
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
|
+
|
|
6
|
+
[English](README.md) | [贡献指南](CONTRIBUTING.md) | [文档](docs/README.md)
|
|
7
|
+
|
|
8
|
+
## 🎉 重磅消息:我们已切换至 Apache 2.0 开源协议!
|
|
9
|
+
|
|
10
|
+
**开发者社区的福音来了!** 为了推动 AI 智能体技术的民主化进程,构建充满活力的创新生态,我们激动地宣布:Kode 已正式从 AGPLv3 协议升级为 **Apache 2.0 开源协议**。
|
|
11
|
+
|
|
12
|
+
### 这对您意味着什么:
|
|
13
|
+
- ✅ **完全自由**:在任何项目中使用 Kode - 无论是个人项目、商业产品还是企业方案
|
|
14
|
+
- ✅ **无障碍创新**:构建专有解决方案,无需开源您的代码
|
|
15
|
+
- ✅ **极简要求**:仅需保留版权声明和许可信息
|
|
16
|
+
- ✅ **共创未来**:与全球开发者一起,加速世界向 AI 驱动生产的转型
|
|
17
|
+
|
|
18
|
+
让我们携手共建未来!🚀
|
|
19
|
+
|
|
20
|
+
## 📢 更新日志
|
|
21
|
+
|
|
22
|
+
**2025-12-22**:原生优先分发(Windows 开箱即用)。Kode 会优先使用缓存的原生二进制文件,并在需要时回退到 Node.js 运行时。详见 `docs/binary-distribution.md`。
|
|
23
|
+
|
|
24
|
+
## 🤝 AGENTS.md 标准支持
|
|
25
|
+
|
|
26
|
+
Kode 支持 [AGENTS.md 标准](https://agents.md):一个简单、开放的“项目指令”格式,用于指导各类 coding agent,在 60k+ 开源项目中被使用。
|
|
27
|
+
|
|
28
|
+
### 指令文件发现规则(兼容 Codex)
|
|
29
|
+
|
|
30
|
+
- Kode 会从 Git 仓库根目录一路走到当前工作目录(`cwd`)读取项目指令。
|
|
31
|
+
- 每一层目录最多读取一个文件:优先 `AGENTS.override.md`,否则读取 `AGENTS.md`。
|
|
32
|
+
- 指令会按 root → leaf 拼接(默认合并上限 32KiB;可通过 `KODE_PROJECT_DOC_MAX_BYTES` 覆盖)。
|
|
33
|
+
- 如果当前目录存在 `CLAUDE.md`,Kode 也会将其作为 legacy 指令文件读取(兼容 legacy `.claude` 格式)。
|
|
34
|
+
|
|
35
|
+
Kode 是一个强大的 AI 助手,运行在你的终端中。它能理解你的代码库、编辑文件、运行命令,并为你处理整个开发工作流。
|
|
36
|
+
|
|
37
|
+
> **⚠️ 安全提示**:Kode 默认以 YOLO 模式运行(等同于 `--dangerously-skip-permissions` 标志),跳过所有权限检查以获得最大生产力。YOLO 模式仅建议在安全可信的环境中处理非重要项目时使用。如果您正在处理重要文件或使用能力存疑的模型,我们强烈建议使用 `kode --safe` 启用权限检查和手动审批所有操作。
|
|
38
|
+
>
|
|
39
|
+
> **📊 模型性能建议**:为获得最佳体验,建议使用专为自主任务完成设计的新一代强大模型。避免使用 GPT-4o、Gemini 2.5 Pro 等较老的问答型模型,它们主要针对回答问题进行优化,而非持续的独立任务执行。请选择专门训练用于智能体工作流和扩展推理能力的模型。
|
|
40
|
+
|
|
41
|
+
## 网络与隐私
|
|
42
|
+
|
|
43
|
+
- 默认不发送产品遥测/分析数据。
|
|
44
|
+
- 仅在你显式使用相关能力时才会产生网络请求:
|
|
45
|
+
- 模型提供商请求(你配置的 Anthropic/OpenAI-compatible 等端点)
|
|
46
|
+
- Web 工具(`WebFetch`、`WebSearch`)
|
|
47
|
+
- 插件市场下载(GitHub/URL 来源)与 OAuth 流程(使用时)
|
|
48
|
+
- 可选的更新检查(需显式开启 `autoUpdaterStatus: enabled`)
|
|
49
|
+
|
|
50
|
+
## 功能特性
|
|
51
|
+
|
|
52
|
+
- 🤖 **AI 驱动的助手** - 使用先进的 AI 模型理解并响应你的请求
|
|
53
|
+
- 🔄 **多模型协同** - 灵活切换和组合使用多个 AI 模型,发挥各自优势
|
|
54
|
+
- 📝 **代码编辑** - 直接编辑文件,提供智能建议和改进
|
|
55
|
+
- 🔍 **代码库理解** - 分析项目结构和代码关系
|
|
56
|
+
- 🚀 **命令执行** - 实时运行 shell 命令并查看结果
|
|
57
|
+
- 🛠️ **工作流自动化** - 用简单的提示处理复杂的开发任务
|
|
58
|
+
- 🎨 **交互式界面** - 美观的终端界面,支持语法高亮
|
|
59
|
+
- 🔌 **工具系统** - 可扩展的架构,为不同任务提供专门的工具
|
|
60
|
+
- 💾 **上下文管理** - 智能的上下文处理,保持对话连续性
|
|
61
|
+
|
|
62
|
+
### 创作便捷
|
|
63
|
+
- `Option+G`(Alt+G)将消息打开到外部编辑器(优先 `$EDITOR`/`$VISUAL`,回退 code/nano/vim/notepad),关闭后内容自动回填到终端输入框。
|
|
64
|
+
- `Option+Enter` 在输入框内换行但不发送,普通 Enter 提交;`Option+M` 可快速切换模型。
|
|
65
|
+
|
|
66
|
+
## 安装
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install -g @shareai-lab/kode
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
开发版(最新特性):
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g @shareai-lab/kode@dev
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
安装后,你可以使用以下任一命令:
|
|
79
|
+
- `kode` - 主命令
|
|
80
|
+
- `kwa` - Kode With Agent(备选)
|
|
81
|
+
- `kd` - 超短别名
|
|
82
|
+
|
|
83
|
+
### 原生二进制(Windows 开箱即用)
|
|
84
|
+
|
|
85
|
+
- 无需 WSL / Git Bash。
|
|
86
|
+
- `postinstall` 会尽力从 GitHub Releases 下载原生二进制文件到 `${KODE_BIN_DIR:-~/.kode/bin}/<version>/<platform>-<arch>/kode(.exe)`。
|
|
87
|
+
- 入口包装器(`cli.js`)会优先使用原生二进制,并在需要时回退到 Node.js 运行时(`node dist/index.js`)。
|
|
88
|
+
|
|
89
|
+
可选覆盖:
|
|
90
|
+
- 镜像下载源:`KODE_BINARY_BASE_URL`
|
|
91
|
+
- 禁用下载:`KODE_SKIP_BINARY_DOWNLOAD=1`
|
|
92
|
+
- 缓存目录:`KODE_BIN_DIR`
|
|
93
|
+
|
|
94
|
+
详见 `docs/binary-distribution.md`。
|
|
95
|
+
|
|
96
|
+
### 配置 / API Key
|
|
97
|
+
|
|
98
|
+
- 全局配置(模型 profiles / 指针、主题等):默认在 `~/.kode.json`(如设置 `KODE_CONFIG_DIR`/`CLAUDE_CONFIG_DIR` 则为 `<KODE_CONFIG_DIR>/config.json`)。
|
|
99
|
+
- 项目/本地 settings(如输出风格):`./.kode/settings.json` 与 `./.kode/settings.local.json`(部分功能兼容 legacy `.claude`)。
|
|
100
|
+
- 模型推荐用 `/model`(交互 UI)或 `kode models import/export`(YAML)。详见 `docs/develop/configuration.md`。
|
|
101
|
+
|
|
102
|
+
## 使用方法
|
|
103
|
+
|
|
104
|
+
### 交互模式
|
|
105
|
+
启动交互式会话:
|
|
106
|
+
```bash
|
|
107
|
+
kode
|
|
108
|
+
# 或
|
|
109
|
+
kwa
|
|
110
|
+
# 或
|
|
111
|
+
kd
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 非交互模式
|
|
115
|
+
获取快速响应:
|
|
116
|
+
```bash
|
|
117
|
+
kode -p "解释这个函数" 路径/到/文件.js
|
|
118
|
+
# 或
|
|
119
|
+
kwa -p "解释这个函数" 路径/到/文件.js
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### ACP(Agent Client Protocol)
|
|
123
|
+
|
|
124
|
+
以 ACP Agent Server(stdio JSON-RPC)模式运行 Kode,供 Toad / Zed 等 ACP Client 使用:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
kode-acp
|
|
128
|
+
# 或
|
|
129
|
+
kode --acp
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Toad 示例:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
toad acp "kode-acp"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
更多说明:`docs/acp.md`。
|
|
139
|
+
|
|
140
|
+
### Docker 使用说明
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# 克隆仓库
|
|
144
|
+
git clone https://github.com/shareAI-lab/Kode.git
|
|
145
|
+
cd Kode
|
|
146
|
+
|
|
147
|
+
# 本地构建镜像
|
|
148
|
+
docker build --no-cache -t kode .
|
|
149
|
+
|
|
150
|
+
# 在你的项目目录中运行
|
|
151
|
+
cd your-project
|
|
152
|
+
docker run -it --rm \
|
|
153
|
+
-v $(pwd):/workspace \
|
|
154
|
+
-v ~/.kode:/root/.kode \
|
|
155
|
+
-v ~/.kode.json:/root/.kode.json \
|
|
156
|
+
-w /workspace \
|
|
157
|
+
kode
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### Docker 配置详情
|
|
161
|
+
|
|
162
|
+
该 Docker 配置包含以下内容:
|
|
163
|
+
|
|
164
|
+
* **卷挂载(Volume Mounts)**:
|
|
165
|
+
|
|
166
|
+
* `$(pwd):/workspace` - 挂载当前项目目录
|
|
167
|
+
* `~/.kode:/root/.kode` - 在运行间保留 kode 配置目录
|
|
168
|
+
* `~/.kode.json:/root/.kode.json` - 在运行间保留 kode 全局配置文件
|
|
169
|
+
|
|
170
|
+
* **工作目录**:容器内工作目录设置为 `/workspace`
|
|
171
|
+
|
|
172
|
+
* **交互模式**:使用 `-it` 标志以交互式终端方式运行
|
|
173
|
+
|
|
174
|
+
* **清理**:使用 `--rm` 在退出后自动删除容器
|
|
175
|
+
|
|
176
|
+
**注意**:
|
|
177
|
+
Kode 同时使用 `~/.kode` 目录(存放额外数据,如内存文件)和 `~/.kode.json` 文件(全局配置)。
|
|
178
|
+
|
|
179
|
+
第一次运行 Docker 命令时会构建镜像,之后的运行会使用缓存镜像以加快启动速度。
|
|
180
|
+
|
|
181
|
+
你可以通过引导流程(onboarding)来设置模型,或使用 `/model` 命令。
|
|
182
|
+
如果在列表中没有你想要的模型,可以在 `/config` 中手动设置。
|
|
183
|
+
只要你有一个 OpenAI 风格的 API 端点,就可以正常使用。
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
### 常用命令
|
|
187
|
+
|
|
188
|
+
- `/help` - 显示可用命令
|
|
189
|
+
- `/model` - 更改 AI 模型设置
|
|
190
|
+
- `/config` - 打开配置面板
|
|
191
|
+
- `/agents` - 管理 subagents
|
|
192
|
+
- `/output-style` - 设置输出风格
|
|
193
|
+
- `/statusline` - 配置自定义状态栏命令
|
|
194
|
+
- `/cost` - 显示 token 使用量和成本
|
|
195
|
+
- `/clear` - 清除对话历史
|
|
196
|
+
- `/init` - 初始化项目上下文
|
|
197
|
+
- `/plugin` - 管理插件/市场(技能、命令)
|
|
198
|
+
|
|
199
|
+
## Agents / Subagents
|
|
200
|
+
|
|
201
|
+
Kode 支持 subagents(agent 模版),用于任务委派与编排。
|
|
202
|
+
|
|
203
|
+
- Agents 会从 `.kode/agents` 与 `.claude/agents`(用户 + 项目)加载,并叠加 plugins/policy/`--agents`。
|
|
204
|
+
- 用 `/agents` 打开管理 UI(默认新建写入 `./.claude/agents` / `~/.claude/agents`)
|
|
205
|
+
- 用提及运行:`@run-agent-<agentType> ...`
|
|
206
|
+
- 用工具运行:`Task(subagent_type: "<agentType>", ...)`
|
|
207
|
+
- CLI flags:`--agents <json>`(本次运行注入 agents)、`--setting-sources user,project,local`(控制加载来源)
|
|
208
|
+
|
|
209
|
+
最小 agent 文件示例(`./.kode/agents/reviewer.md`):
|
|
210
|
+
|
|
211
|
+
```md
|
|
212
|
+
---
|
|
213
|
+
name: reviewer
|
|
214
|
+
description: "Review diffs for correctness, security, and simplicity"
|
|
215
|
+
tools: ["Read", "Grep"]
|
|
216
|
+
model: inherit
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
更严格一些:指出 bug / 风险点,优先推荐小而聚焦的修改。
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
`model` 字段说明:
|
|
223
|
+
- 兼容别名:`inherit`、`opus`、`sonnet`、`haiku`(会映射到 model pointers)
|
|
224
|
+
- Kode 选择器(通过 `/model` 配置):指针(`main|task|compact|quick`)、profile 名称、modelName,或 `provider:modelName`(例如 `openai:o3`)
|
|
225
|
+
|
|
226
|
+
校验 agent 模版:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
kode agents validate
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
详见 `docs/agents-system.md`。
|
|
233
|
+
|
|
234
|
+
## 技能与插件
|
|
235
|
+
|
|
236
|
+
Kode 支持:
|
|
237
|
+
- **Agent Skills** 格式(`SKILL.md`)用于分发可复用技能包
|
|
238
|
+
- **Marketplace 兼容**(`.kode-plugin/marketplace.json`,legacy `.claude-plugin/marketplace.json`)用于分享/安装技能包
|
|
239
|
+
|
|
240
|
+
### 从 marketplace 安装技能
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# 添加 marketplace(本地路径、GitHub owner/repo、或 URL)
|
|
244
|
+
kode plugin marketplace add ./path/to/marketplace-repo
|
|
245
|
+
kode plugin marketplace add owner/repo
|
|
246
|
+
kode plugin marketplace list
|
|
247
|
+
|
|
248
|
+
# 安装插件包(会安装 skills/commands)
|
|
249
|
+
kode plugin install document-skills@anthropic-agent-skills --scope user
|
|
250
|
+
|
|
251
|
+
# 项目范围安装(写入到当前项目的 ./.kode/...)
|
|
252
|
+
kode plugin install document-skills@anthropic-agent-skills --scope project
|
|
253
|
+
|
|
254
|
+
# 禁用/启用已安装插件
|
|
255
|
+
kode plugin disable document-skills@anthropic-agent-skills --scope user
|
|
256
|
+
kode plugin enable document-skills@anthropic-agent-skills --scope user
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
交互模式等价命令:
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
/plugin marketplace add owner/repo
|
|
263
|
+
/plugin install document-skills@anthropic-agent-skills --scope user
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 使用技能
|
|
267
|
+
|
|
268
|
+
- 交互模式下可直接运行:`/pdf`、`/xlsx` 等
|
|
269
|
+
- Kode 也可在合适时机通过 `Skill` 工具自动调用技能
|
|
270
|
+
|
|
271
|
+
### 创建技能(Agent Skills)
|
|
272
|
+
|
|
273
|
+
创建 `./.kode/skills/<skill-name>/SKILL.md`(项目)或 `~/.kode/skills/<skill-name>/SKILL.md`(用户):
|
|
274
|
+
|
|
275
|
+
```md
|
|
276
|
+
---
|
|
277
|
+
name: my-skill
|
|
278
|
+
description: 描述这个技能做什么、何时使用。
|
|
279
|
+
allowed-tools: Read Bash(git:*) Bash(jq:*)
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
# 技能说明
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
命名规则:
|
|
286
|
+
- `name` 必须与文件夹名一致
|
|
287
|
+
- 仅允许小写字母/数字/连字符,长度 1–64
|
|
288
|
+
|
|
289
|
+
兼容性:
|
|
290
|
+
- Kode 也会自动发现 `.claude/skills` 与 `.claude/commands`(legacy 兼容)。
|
|
291
|
+
|
|
292
|
+
### 分发技能
|
|
293
|
+
|
|
294
|
+
- Marketplace 仓库:在仓库根目录放置 `.kode-plugin/marketplace.json`,列出插件包与其 `skills` 目录(legacy `.claude-plugin/marketplace.json` 兼容)。
|
|
295
|
+
- Plugin 仓库:完整插件需在插件根目录包含 `.kode-plugin/plugin.json`,并确保路径均为相对路径(`./...`)。
|
|
296
|
+
|
|
297
|
+
详见 `docs/skills.md`。
|
|
298
|
+
|
|
299
|
+
### 输出风格
|
|
300
|
+
|
|
301
|
+
用输出风格切换 system prompt 行为。
|
|
302
|
+
|
|
303
|
+
- 选择:`/output-style`(菜单)或 `/output-style <style>`
|
|
304
|
+
- 内置:`default`、`Explanatory`、`Learning`
|
|
305
|
+
- 按项目存储在 `./.kode/settings.local.json` 的 `outputStyle`(legacy `.claude/settings.local.json` 兼容)
|
|
306
|
+
- 自定义风格:放在 `.claude/.kode` 的 `output-styles/` 下的 Markdown 文件
|
|
307
|
+
- 插件也可提供风格(`output-styles/` 或 manifest `outputStyles`);插件风格命名为 `<plugin>:<style>`
|
|
308
|
+
|
|
309
|
+
详见 `docs/output-styles.md`。
|
|
310
|
+
|
|
311
|
+
## MCP 服务器(扩展)
|
|
312
|
+
|
|
313
|
+
Kode 可通过 MCP(Model Context Protocol)接入外部工具服务器,扩展工具与上下文能力。
|
|
314
|
+
|
|
315
|
+
- 配置文件:项目根目录 `.mcp.json`(推荐)或 `.mcprc`。详见 `docs/mcp.md`。
|
|
316
|
+
- CLI:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
kode mcp add
|
|
320
|
+
kode mcp list
|
|
321
|
+
kode mcp get <name>
|
|
322
|
+
kode mcp remove <name>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
示例 `.mcprc`:
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"my-sse-server": { "type": "sse", "url": "http://127.0.0.1:3333/sse" }
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## 权限与审批
|
|
334
|
+
|
|
335
|
+
- 默认模式为 YOLO(等同于 `--dangerously-skip-permissions`),为效率跳过多数确认。
|
|
336
|
+
- 安全模式:`kode --safe` 会对 Bash 命令、文件写入/编辑等高风险操作进行手动审批。
|
|
337
|
+
- 计划模式(Plan Mode):助手可能请求进入计划模式先生成方案;计划模式下仅允许只读/规划类工具(以及写入计划文件),退出计划模式后才会执行改动。
|
|
338
|
+
|
|
339
|
+
## 粘贴与图片
|
|
340
|
+
|
|
341
|
+
- 大段/多行文本粘贴会以占位符形式插入,发送时自动展开。
|
|
342
|
+
- 粘贴多个已存在的文件路径会自动转换为 `@path` 引用(必要时自动加引号)。
|
|
343
|
+
- 图片粘贴(macOS):按 `Ctrl+V` 可附加剪贴板图片;支持一次粘贴多张后再发送。
|
|
344
|
+
|
|
345
|
+
## 系统级 Sandbox(Linux)
|
|
346
|
+
|
|
347
|
+
- 在 `--safe` 下(或 `KODE_SYSTEM_SANDBOX=1`),agent 触发的 Bash tool 会优先尝试在 `bwrap` 沙箱中运行(best effort)。
|
|
348
|
+
- 默认禁用网络;可用 `KODE_SYSTEM_SANDBOX_NETWORK=inherit` 放开网络。
|
|
349
|
+
- 可用 `KODE_SYSTEM_SANDBOX=required` 在无法启动沙箱时直接失败(fail closed)。
|
|
350
|
+
- 详见 `docs/system-sandbox.md`(包含 macOS/Windows 建议方案与取舍)。
|
|
351
|
+
|
|
352
|
+
## 常见排障
|
|
353
|
+
|
|
354
|
+
- 模型:用 `/model`,或 `kode models import kode-models.yaml` 导入团队共享模型配置;确认所需 API Key 环境变量已设置。
|
|
355
|
+
- Windows:若原生二进制下载失败/被阻断,可设置 `KODE_BINARY_BASE_URL`(镜像)或 `KODE_SKIP_BINARY_DOWNLOAD=1`(禁用下载);包装器会回退到 Node.js 运行时(`dist/index.js`)。
|
|
356
|
+
- MCP:用 `kode mcp list` 查看状态;若服务较慢可调 `MCP_CONNECTION_TIMEOUT_MS`、`MCP_SERVER_CONNECTION_BATCH_SIZE`、`MCP_TOOL_TIMEOUT`。
|
|
357
|
+
- Sandbox:Linux 安装 `bwrap`(bubblewrap),或设置 `KODE_SYSTEM_SANDBOX=0` 关闭。
|
|
358
|
+
|
|
359
|
+
## 多模型智能协同
|
|
360
|
+
|
|
361
|
+
与仅支持单一模型的终端助手不同,Kode 实现了**真正的多模型协同工作**,让你能够充分发挥不同 AI 模型的独特优势。
|
|
362
|
+
|
|
363
|
+
### 🏗️ 核心技术架构
|
|
364
|
+
|
|
365
|
+
#### 1. **ModelManager 多模型管理器**
|
|
366
|
+
我们设计了统一的 `ModelManager` 系统,支持:
|
|
367
|
+
- **模型配置文件(Model Profiles)**:每个模型都有独立的配置文件,包含 API 端点、认证信息、上下文窗口大小、成本等参数
|
|
368
|
+
- **模型指针(Model Pointers)**:用户可以在 `/model` 命令中配置不同用途的默认模型:
|
|
369
|
+
- `main`:主 Agent 的默认模型
|
|
370
|
+
- `task`:SubAgent 的默认模型
|
|
371
|
+
- `compact`:用于接近上下文窗口上限时的自动压缩模型
|
|
372
|
+
- `quick`:用于简单操作与工具调用的快速模型
|
|
373
|
+
- **动态模型切换**:支持运行时切换模型,无需重启会话,保持上下文连续性
|
|
374
|
+
|
|
375
|
+
#### 📦 可分享的模型配置(YAML)
|
|
376
|
+
|
|
377
|
+
你可以把模型配置(profiles + pointers)导出/导入为团队共享的 YAML 文件。默认导出不会包含明文 API Key(推荐用环境变量注入)。
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# 导出到文件(也可以省略 --output 直接打印到 stdout)
|
|
381
|
+
kode models export --output kode-models.yaml
|
|
382
|
+
|
|
383
|
+
# 导入(默认 merge)
|
|
384
|
+
kode models import kode-models.yaml
|
|
385
|
+
|
|
386
|
+
# 用导入内容替换本地已有 profiles(不 merge)
|
|
387
|
+
kode models import --replace kode-models.yaml
|
|
388
|
+
|
|
389
|
+
# 列出当前 profiles + pointers
|
|
390
|
+
kode models list
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
示例 `kode-models.yaml`:
|
|
394
|
+
|
|
395
|
+
```yaml
|
|
396
|
+
version: 1
|
|
397
|
+
profiles:
|
|
398
|
+
- name: OpenAI Main
|
|
399
|
+
provider: openai
|
|
400
|
+
modelName: gpt-4o
|
|
401
|
+
maxTokens: 8192
|
|
402
|
+
contextLength: 128000
|
|
403
|
+
apiKey:
|
|
404
|
+
fromEnv: OPENAI_API_KEY
|
|
405
|
+
pointers:
|
|
406
|
+
main: gpt-4o
|
|
407
|
+
task: gpt-4o
|
|
408
|
+
compact: gpt-4o
|
|
409
|
+
quick: gpt-4o
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
#### 2. **TaskTool 智能任务分发工具**
|
|
413
|
+
专门设计的 `TaskTool`(Architect 工具)实现了:
|
|
414
|
+
- **Subagent 机制**:可以启动多个子代理并行处理任务
|
|
415
|
+
- **模型参数传递**:用户可以在请求中指定 SubAgent 使用的模型
|
|
416
|
+
- **默认模型配置**:SubAgent 默认使用 `task` 指针配置的模型
|
|
417
|
+
|
|
418
|
+
#### 3. **AskExpertModel 专家咨询工具**
|
|
419
|
+
我们专门设计了 `AskExpertModel` 工具:
|
|
420
|
+
- **专家模型调用**:允许在对话中临时调用特定的专家模型解决疑难问题
|
|
421
|
+
- **模型隔离执行**:专家模型的响应独立处理,不影响主对话流程
|
|
422
|
+
- **知识整合**:将专家模型的见解整合到当前任务中
|
|
423
|
+
|
|
424
|
+
#### 🎯 灵活的模型切换
|
|
425
|
+
- **Option+M 快速切换**:在输入框按 Option+M 轮换主对话模型
|
|
426
|
+
- **`/model` 命令**:使用 `/model` 命令配置和管理多个模型配置文件,设置不同用途的默认模型
|
|
427
|
+
- **用户控制**:用户可以随时指定使用特定的模型进行任务处理
|
|
428
|
+
|
|
429
|
+
#### 🔄 智能的工作分配策略
|
|
430
|
+
|
|
431
|
+
**架构设计阶段**
|
|
432
|
+
- 使用 **o3 模型** 或 **GPT-5 模型** 探讨系统架构,制定犀利明确的技术方案
|
|
433
|
+
- 这些模型在抽象思维和系统设计方面表现卓越
|
|
434
|
+
|
|
435
|
+
**方案细化阶段**
|
|
436
|
+
- 使用 **gemini 模型** 深入探讨生产环境的设计细节
|
|
437
|
+
- 利用其在实际工程实践中的深厚积累和平衡的推理能力
|
|
438
|
+
|
|
439
|
+
**代码实现阶段**
|
|
440
|
+
- 使用 **Qwen Coder 模型**、**Kimi k2 模型** 、**GLM-4.5 模型** 或 **Claude Sonnet 4 模型** 进行具体的代码编写
|
|
441
|
+
- 这些模型在代码生成、文件编辑和工程实现方面性能强劲
|
|
442
|
+
- 支持通过 subagent 并行处理多个编码任务
|
|
443
|
+
|
|
444
|
+
**疑难问题解决**
|
|
445
|
+
- 遇到复杂问题时,可单独咨询 **o3 模型**、**Claude Opus 4.1 模型** 或 **Grok 4 模型** 等专家模型
|
|
446
|
+
- 获得深度的技术见解和创新的解决方案
|
|
447
|
+
|
|
448
|
+
#### 💡 实际应用场景
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
# 示例 1:架构设计
|
|
452
|
+
"用 o3 模型帮我设计一个高并发的消息队列系统架构"
|
|
453
|
+
|
|
454
|
+
# 示例 2:多模型协作
|
|
455
|
+
"先用 GPT-5 模型分析这个性能问题的根本原因,然后用 Claude Sonnet 4 模型编写优化代码"
|
|
456
|
+
|
|
457
|
+
# 示例 3:并行任务处理
|
|
458
|
+
"用 Qwen Coder 模型作为 subagent 同时重构这三个模块"
|
|
459
|
+
|
|
460
|
+
# 示例 4:专家咨询
|
|
461
|
+
"这个内存泄漏问题很棘手,单独问问 Claude Opus 4.1 模型有什么解决方案"
|
|
462
|
+
|
|
463
|
+
# 示例 5:代码审查
|
|
464
|
+
"让 Kimi k2 模型审查这个 PR 的代码质量"
|
|
465
|
+
|
|
466
|
+
# 示例 6:复杂推理
|
|
467
|
+
"用 Grok 4 模型帮我推导这个算法的时间复杂度"
|
|
468
|
+
|
|
469
|
+
# 示例 7:方案设计
|
|
470
|
+
"让 GLM-4.5 模型设计微服务拆分方案"
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### 🛠️ 关键实现机制
|
|
474
|
+
|
|
475
|
+
#### **配置系统(Configuration System)**
|
|
476
|
+
```typescript
|
|
477
|
+
// 支持多模型配置的示例
|
|
478
|
+
{
|
|
479
|
+
"modelProfiles": [
|
|
480
|
+
{ "name": "o3", "provider": "openai", "modelName": "o3", "apiKey": "...", "maxTokens": 1024, "contextLength": 128000, "isActive": true, "createdAt": 1710000000000 },
|
|
481
|
+
{ "name": "qwen", "provider": "alibaba", "modelName": "qwen-coder", "apiKey": "...", "maxTokens": 1024, "contextLength": 128000, "isActive": true, "createdAt": 1710000000001 }
|
|
482
|
+
],
|
|
483
|
+
"modelPointers": {
|
|
484
|
+
"main": "o3", // 主对话模型
|
|
485
|
+
"task": "qwen-coder", // SubAgent 模型
|
|
486
|
+
"compact": "o3", // 压缩模型
|
|
487
|
+
"quick": "o3" // 快速操作模型
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
#### **成本追踪系统(Cost Tracking)**
|
|
493
|
+
- **使用统计**:`/cost` 命令查看各模型的 token 使用量和花费
|
|
494
|
+
- **多模型成本对比**:实时追踪不同模型的使用成本
|
|
495
|
+
- **历史记录**:保存每个会话的成本数据
|
|
496
|
+
|
|
497
|
+
#### **上下文管理器(Context Manager)**
|
|
498
|
+
- **上下文继承**:切换模型时保持对话连续性
|
|
499
|
+
- **上下文窗口适配**:根据不同模型的上下文窗口大小自动调整
|
|
500
|
+
- **会话状态保持**:确保多模型协作时的信息一致性
|
|
501
|
+
|
|
502
|
+
### 🚀 多模型协同的优势
|
|
503
|
+
|
|
504
|
+
1. **效率最大化**:每个任务都由最适合的模型处理
|
|
505
|
+
2. **成本优化**:简单任务用轻量模型,复杂任务用强大模型
|
|
506
|
+
3. **并行处理**:多个模型可以同时处理不同的子任务
|
|
507
|
+
4. **灵活切换**:根据任务需求随时切换模型,无需重启会话
|
|
508
|
+
5. **取长补短**:结合不同模型的优势,获得最佳的整体效果
|
|
509
|
+
|
|
510
|
+
### 📊 与单模型 CLI 的对比
|
|
511
|
+
|
|
512
|
+
| 特性 | Kode | 单模型 CLI |
|
|
513
|
+
|------|------|---------|
|
|
514
|
+
| 支持模型数量 | 无限制,可配置任意模型 | 仅支持单一模型 |
|
|
515
|
+
| 模型切换 | ✅ Option+M 快速切换 | ❌ 需要重启会话 |
|
|
516
|
+
| 并行处理 | ✅ 多个 SubAgent 并行工作 | ❌ 单线程处理 |
|
|
517
|
+
| 成本追踪 | ✅ 多模型成本分别统计 | ❌ 单一模型成本 |
|
|
518
|
+
| 任务模型配置 | ✅ 不同用途配置不同默认模型 | ❌ 所有任务用同一模型 |
|
|
519
|
+
| 专家咨询 | ✅ AskExpertModel 工具 | ❌ 不支持 |
|
|
520
|
+
|
|
521
|
+
这种多模型协同能力让 Kode 成为真正的 **AI 开发工作台**,而不仅仅是一个单一的 AI 助手。
|
|
522
|
+
|
|
523
|
+
## 开发
|
|
524
|
+
|
|
525
|
+
Kode 使用现代化工具构建,开发需要 [Bun](https://bun.sh)。
|
|
526
|
+
|
|
527
|
+
### 安装 Bun
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
# macOS/Linux
|
|
531
|
+
curl -fsSL https://bun.sh/install | bash
|
|
532
|
+
|
|
533
|
+
# Windows
|
|
534
|
+
powershell -c "irm bun.sh/install.ps1 | iex"
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### 设置开发环境
|
|
538
|
+
|
|
539
|
+
```bash
|
|
540
|
+
# 克隆仓库
|
|
541
|
+
git clone https://github.com/shareAI-lab/kode.git
|
|
542
|
+
cd kode
|
|
543
|
+
|
|
544
|
+
# 安装依赖
|
|
545
|
+
bun install
|
|
546
|
+
|
|
547
|
+
# 在开发模式下运行
|
|
548
|
+
bun run dev
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
### 构建
|
|
552
|
+
|
|
553
|
+
```bash
|
|
554
|
+
bun run build
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### 测试
|
|
558
|
+
|
|
559
|
+
```bash
|
|
560
|
+
# 运行测试
|
|
561
|
+
bun test
|
|
562
|
+
|
|
563
|
+
# 测试 CLI
|
|
564
|
+
./cli.js --help
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
## 贡献
|
|
568
|
+
|
|
569
|
+
我们欢迎贡献!请查看我们的[贡献指南](CONTRIBUTING.md)了解详情。
|
|
570
|
+
|
|
571
|
+
## 许可证
|
|
572
|
+
|
|
573
|
+
Apache 2.0 许可证 - 详见 [LICENSE](LICENSE)。
|
|
574
|
+
|
|
575
|
+
## 支持
|
|
576
|
+
|
|
577
|
+
- 📚 [文档](docs/)
|
|
578
|
+
- 🐛 [报告问题](https://github.com/shareAI-lab/kode/issues)
|
|
579
|
+
- 💬 [讨论](https://github.com/shareAI-lab/kode/discussions)
|
package/cli-acp.js
CHANGED
|
@@ -39,21 +39,9 @@ function main() {
|
|
|
39
39
|
const packageRoot = findPackageRoot(__dirname)
|
|
40
40
|
const pkg = readPackageJson(packageRoot)
|
|
41
41
|
const version = pkg?.version || ''
|
|
42
|
-
const { getCachedBinaryPath } = require(path.join(
|
|
43
|
-
packageRoot,
|
|
44
|
-
'scripts',
|
|
45
|
-
'binary-utils.cjs',
|
|
46
|
-
))
|
|
47
42
|
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
const binPath = getCachedBinaryPath({ version })
|
|
51
|
-
if (fs.existsSync(binPath)) {
|
|
52
|
-
run(binPath, ['--acp', ...process.argv.slice(2)])
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 2) Node.js runtime fallback (npm install should work without Bun)
|
|
43
|
+
// Prefer native binary if present, but route through the JS entry with --acp
|
|
44
|
+
// so both dev and packaged layouts behave the same.
|
|
57
45
|
const distEntry = path.join(packageRoot, 'dist', 'index.js')
|
|
58
46
|
if (fs.existsSync(distEntry)) {
|
|
59
47
|
run(process.execPath, [distEntry, '--acp', ...process.argv.slice(2)])
|
|
@@ -64,12 +52,10 @@ function main() {
|
|
|
64
52
|
'❌ kode-acp is not runnable on this system.',
|
|
65
53
|
'',
|
|
66
54
|
'Tried:',
|
|
67
|
-
'- Native binary (postinstall download)',
|
|
68
55
|
'- Node.js runtime fallback',
|
|
69
56
|
'',
|
|
70
57
|
'Fix:',
|
|
71
|
-
'-
|
|
72
|
-
'- Or download a standalone binary from GitHub Releases',
|
|
58
|
+
'- Run from source: bun run apps/cli/src/dispatch.ts --acp',
|
|
73
59
|
'',
|
|
74
60
|
version ? `Package version: ${version}` : '',
|
|
75
61
|
]
|
package/cli.js
CHANGED
|
@@ -54,11 +54,9 @@ function main() {
|
|
|
54
54
|
const packageRoot = findPackageRoot(__dirname)
|
|
55
55
|
const pkg = readPackageJson(packageRoot)
|
|
56
56
|
const version = pkg?.version || ''
|
|
57
|
-
const { getCachedBinaryPath } = require(
|
|
58
|
-
packageRoot,
|
|
59
|
-
|
|
60
|
-
'binary-utils.cjs',
|
|
61
|
-
))
|
|
57
|
+
const { getCachedBinaryPath } = require(
|
|
58
|
+
path.join(packageRoot, 'scripts', 'binary-utils.cjs'),
|
|
59
|
+
)
|
|
62
60
|
|
|
63
61
|
if (hasFlag('--help-lite')) {
|
|
64
62
|
printHelpLite()
|
|
@@ -78,7 +76,7 @@ function main() {
|
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
// 2) Fallback: Node.js runtime (
|
|
79
|
+
// 2) Fallback: Node.js runtime (no Bun required)
|
|
82
80
|
const distEntry = path.join(packageRoot, 'dist', 'index.js')
|
|
83
81
|
if (fs.existsSync(distEntry)) {
|
|
84
82
|
run(process.execPath, [distEntry, ...process.argv.slice(2)])
|
|
@@ -95,7 +93,7 @@ function main() {
|
|
|
95
93
|
'',
|
|
96
94
|
'Fix:',
|
|
97
95
|
'- Reinstall (ensure network access), or set KODE_BINARY_BASE_URL to a mirror',
|
|
98
|
-
'- Or
|
|
96
|
+
'- Or run from source: bun run apps/cli/src/dispatch.ts',
|
|
99
97
|
'',
|
|
100
98
|
].join('\n'),
|
|
101
99
|
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Doctor
|
|
3
|
+
} from "./chunk-SZLAPULP.js";
|
|
4
|
+
import "./chunk-2QONJ5MG.js";
|
|
5
|
+
import "./chunk-T7RB5V5J.js";
|
|
6
|
+
import "./chunk-LB6TCPDI.js";
|
|
7
|
+
import "./chunk-XR2W3MAM.js";
|
|
8
|
+
import "./chunk-B3MW3YGY.js";
|
|
9
|
+
import "./chunk-54KOYG5C.js";
|
|
10
|
+
export {
|
|
11
|
+
Doctor
|
|
12
|
+
};
|