This is generally not how citations in BibTeX/biblatex work. It looks a bit like the approach in markdown. (With a bit of creativity manual thebibliography+\bibitem is a less flexible version of that approach.)
In the LaTeX world the idea is is that you assign a useful label to each source once BibTeX/biblatex in the .bib file and use that throughout your document (or even for all your documents loading the same .bib file). Often people pick the family name of the first author(s) and possibly the year, a keyword or a few important words from the title. For example sigfridsson, nussbaum1978, geer:thesis, worman:cast (adapted from biblatex-examples.bib). This label should be long enough so that it immediately tells you what it refers to, but short enough so it doesn't take up too much space in your source code and you can remember and type it quickly.
With biblatex and Biber it is possible to use the ids field to give a .bib entry several possible keys with which it can be cited, but those keys still reside in the .bib file and can not be changed dynamically from the .tex document. (See Renaming BibTeX keys without breaking existing documents.)
Here is a proof of concept that lets you define arbitrary aliases in your document. Define an alias with
\assigncite{<document cite key>}{<bib cite key>}
for example \assigncite{1}{sigfridsson} so you can use 1 in your document and get sigfridsson from the .bib file.
Then cite as usual with \jsmcite{<document cite keys>}.
Since we are writing the aliases to the .aux file this needs two compilation runs before you run BibTeX/Biber (so the full compile sequence is at least LaTeX, LaTeX, Biber/BibTeX, LaTeX, LaTeX), but the advantage is that you can define the alias everywhere in your document.
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage{etoolbox}
\makeatletter
\newcommand*{\jmsc@citekeys}{}
% {<document cite alias>}{<bib entry key>}
\newcommand{\assigncite}[2]{%
\ifinlist{#1}{\jmsc@citekeys}
{\PackageWarning{james-cite}
{Key for '#1' already defined.\MessageBreak
Overwriting urrent value '\csuse{jmsc@citekey@#1}'
with '#2'}}
{\listadd{\jmsc@citekeys}{#1}}%
\csdef{jmsc@citekey@#1}{#2}}
\newcommand*{\jmsc@aux@assigncite}[2]{%
\csgdef{jmsc@aux@citekey@#1}{#2}}
\newcommand*{\jmsc@write@liasestoaux}{%
\forlistloop{\jmsc@write@liastoaux}{\jmsc@citekeys}}
\newcommand*{\jmsc@write@liastoaux}[1]{%
\immediate\write\@mainaux{%
\string\jmsc@aux@assigncite{#1}{\csuse{jmsc@citekey@#1}}}}
\AtEndDocument{%
\jmsc@write@liasestoaux}
% allowing for all arguments of \...cite
% with the #{ "argument"
\newcommand*{\makejmscitecommand}{}
\protected\def\makejmscitecommand#1#2#{%
\def\jmsc@tempcite{#1#2}%
\jmscite@process}
\newcommand{\jmscite@process}[1]{%
\let\jmsc@tempa\@empty
\forcsvlist{\jmscite@preprocess@itm}{#1}%
\expandafter\jmsc@tempcite\expandafter{\jmsc@tempa}}
\def\jmscite@preprocess@itm#1{%
\ifcsundef{jmsc@aux@citekey@#1}
{\G@refundefinedtrue
\PackageWarning{james-cite}
{Citation key '#1' not defined}}
{\ifdefvoid\jmsc@tempa
{\letcs\jmsc@tempa{jmsc@aux@citekey@#1}}
{\eappto\jmsc@tempa{,\csuse{jmsc@aux@citekey@#1}}}}}
\makeatother
% defined the new cite command
\newcommand*{\jmscite}{\makejmscitecommand{\autocite}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem ipsum \jmscite{1}
\assigncite{1}{sigfridsson}
Lorem ipsum \jmscite[45]{1}
\printbibliography
\end{document}

You can define new \jmscite-like commands as \makejmscitecommand{<cite command>}. In the example we based \jmscite on biblatex's \autocite. But the implementation does not depend on biblatex and can easily be switched to natbib commands with
\newcommand*{\jmscitep}{\makejmscitecommand{\citep}}
\newcommand*{\jmscitet}{\makejmscitecommand{\citet}}
We only allowed alias keys in \jmscite. It would be possible to also allow normal entry keys, but then we would have to drop the warning for undefined aliases.
\def\jmscite@preprocess@itm#1{%
\ifcsundef{jmsc@aux@citekey@#1}
{\ifdefvoid\jmsc@tempa
{\def\jmsc@tempa{#1}}
{\appto\jmsc@tempa{,#1}}}
{\ifdefvoid\jmsc@tempa
{\letcs\jmsc@tempa{jmsc@aux@citekey@#1}}
{\eappto\jmsc@tempa{,\csuse{jmsc@aux@citekey@#1}}}}}
While I was looking for a good reference for ids I found Having several keys refer to the same bibliography entry, where Werner's answer uses a broadly similar approach (without the additional .aux file round trip).
\cite{abc}whereabcis an internal key used in the bib file, and then your bibliography style specifies if that is printed as [1] or [James et al] or whatever other style is needed. – David Carlisle May 28 '20 at 13:03showlabelsandshowkeys. Another possibility might be to create a command that triggers a dedicated footnote in which you could enter the reference info, that can be redefined to be ignored in the final run; this would, of course, change the paging, but wouldn't have the width problems that your long references might have when being set in the margin. – barbara beeton May 28 '20 at 13:21