What I can do is to tell you how you can draw single quiver arrows at a predefined position. This can be done using a table. However, I am not convinced that these are tangents and normals of the surface. Apart from the fact that a two-dimensional surface has a two-dimensional tangent space (meaning that there is not a single tangent), the information of the value of the function is missing. To me the output of the below code is just the two tangents at the curves defined by x=0 or y=0, respectively, but attached at z=0 rather than z=f(x,y). (It might well be that I introduced a sign error. I will be happy to expand this further. IMHO there are two well-defined arrow-like objects that one could plot: gradient and normal. Are you secretly looking for those?) It also makes sense to use declare function if one is to deal with lengthy expressions that one wants to use multiple times.
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y)=exp(-\x*\x-\y*\y)*\x;
dfdx(\x,\y)=exp(-\x*\x-\y*\y)-2*exp(-\x*\x-\y*\y)*\x^2;
dfdy(\x,\y)=-2*exp(-\x*\x-\y*\y)*\x*\y;}]
\begin{axis}[
xlabel=$x$, ylabel=$y$,
domain=0:2,
domain y=-1.3:1.3,
]
\addplot3[
surf,
shader=interp,
]
{f(x,y)};
\addplot3 [color=blue,-stealth,
quiver={u={-dfdx(\thisrow{x},\thisrow{y})},v={-dfdy(\thisrow{x},\thisrow{y})},
w=1,scale arrows=0.2},
] table {
x y z
1 0 0
0.7 0.2 0
};
\addplot3 [color=blue,-stealth,
quiver={u={-dfdy(\thisrow{x},\thisrow{y})},v={dfdx(\thisrow{x},\thisrow{y})},
w=0,scale arrows=2},
] table {
x y z
1 0 0
0.7 0.2 0
};
\end{axis}
\end{tikzpicture}
\end{document}

As for the question in the comment: you can add the z coordinate. One possibility is
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y)=exp(-\x*\x-\y*\y)*\x;
dfdx(\x,\y)=exp(-\x*\x-\y*\y)-2*exp(-\x*\x-\y*\y)*\x^2;
dfdy(\x,\y)=-2*exp(-\x*\x-\y*\y)*\x*\y;}]
\pgfmathsetmacro{\fone}{f(1,0)}
\pgfmathsetmacro{\ftwo}{f(0.7,0.2)}
\begin{axis}[
xlabel=$x$, ylabel=$y$,
domain=0:2,
domain y=-1.3:1.3,
]
\addplot3[
surf,
shader=interp,
]
{f(x,y)};
\addplot3 [color=blue,-stealth,
quiver={u={-dfdx(\thisrow{x},\thisrow{y})},v={-dfdy(\thisrow{x},\thisrow{y})},
w=1,scale arrows=0.2}, % ,z={f(\thisrow{x},\thisrow{y})}
] table {
x y z
1 0 \fone
0.7 0.2 \ftwo
};
\addplot3 [color=blue,-stealth,
quiver={u={-dfdy(\thisrow{x},\thisrow{y})},v={dfdx(\thisrow{x},\thisrow{y})},
w=0,scale arrows=2},
] table {
x y z
1 0 \fone
0.7 0.2 \ftwo
};
\end{axis}
\end{tikzpicture}
\end{document}

I guess that there must be a simpler way to add the z coordinate. But I am still not sure that I know what I am doing here. I would be much more enthusiastic if I knew what you really want to plot. One can draw tangents of parametric curves in x and y directions, and their vector product yields the normal. So far, we add w by hand, but we could just calculate it, can't one?
\dcoumentclassand ends with\end{document}. – Oct 13 '18 at 14:41