2025-07-13 · Ryan X. Charles
The ultimate developer tool should let the developer manage state and context
for AI chats in a way maximally compatible with existing tools and workflows.
Basically, it should save chats as Markdown files.
Detailed Overview
In detail, the way it should work is like this:
- Store individual chats as Markdown files. Metadata can be included as TOML or
YAML. If you need to store binary data like images, link to the image file in
the Markdown. If you need indexed, structured data, link to a SQLite database
file in the Markdown.
- Provide access to Markdown file-based chats in every environment where the
developer lives:
- The terminal (CLI),
- Their editor (plugins for Neovim and VSCode),
- Their browser (browser extensions for Chrome, Firefox, Safari, etc.),
- Their desktop operating system (system tray app for macOS, Windows, and
Linux).
- The fundamental UI is a chat with tools to include context automatically and
perform actions automatically, all at the discretion of the user. For
instance, in Neovim, the user can press a hotkey to insert the current date,
or the current file name, or the contents of the current file, or a link to
the current file for uploading. They should also be able to perform actions
automatically, such as by providing a list of functions such as “create file”
or “overwrite file”. The AI will suggest these actions and the user can select
one to perform it.
- The tool is not agentic by default. In the same way that
git
does not
automatically create commits, the developer tool should provide all the tools
necessary to manage state and extract functionality, but never perform actions
automatically, unless specifically requested by the user, such as by running a
loop from an external script.
Example
Using Markdown files to store state is maximally compatible with existing tools
and workflows.
Let’s consider the case of copying a chat.
A chat is just a file. Therefore, you can copy a chat by:
- Command line:
cp chat.md chat-copy.md
- Neovim:
:w chat-copy.md
- VSCode: Right-click the file in the file explorer and select “Copy”
- System file manager: Right-click the file and select “Copy”
Other common operations, such as moving, backing up, diffing, find/replace,
versioning, and so on, all have common ubiquitous solutions that work on the
command line, in editors, and in file managers. All of these tools are
compatible with the Markdown-centric state storage approach.
Conclusion
I am currently building these features into Chatvim and
hope to gradually roll out a fully-featured developer tool that meets these
requirements.