Tech Blog

AI Assistant Operation Notes — Practical record for raising Copilot/Claude Code as a companion (series table of contents)

GitHub Copilot Claude Code AIアシスタント RAG MCP ChromaDB Ollama シリーズ

About this series

This series is a personal practice record written from the perspective of developing AI assistants (GitHub Copilot and Claude Code) as companions rather than tools.

Throughout my career in IT, I write code with an AI assistant every day. It all started one night when I said “please” to Copilot and 24 PATCHs ran at once and hit the Qiita API rate limit.

**I don't want to make the same mistake twice**'' With that in mind, I switched from using” my AI assistant to “nurturing” it. I created a personal RAG, automatically classified lessons using LLM, provided Copilot with external memory using the MCP server, and even observed the differences in the personalities of the two AI assistants through comparison with Claude Code.

This series is a record of what we saw in the process including failure stories, implementation code, and operational effects. I hope this will provide some clues for those who are also looking to have a long-term relationship with an AI assistant.

This series is still ongoing. New articles will be added sequentially.


Why is it called a “sidekick” and not a “tool”

One of the first problems you will encounter when using an AI assistant is that it keeps making the same mistakes over and over again.

Write a code of conduct on instructions.md and have them read it every time. Yet if the context of the conversation changes, the AI ​​steps into the same trap. Even if you get angry, they will just send you an apology. In the next session, he makes the same mistake again as if nothing had happened.

There are two attitudes here.

  1. Use it as a tool — Don’t expect too much and only ask for small tasks each time. Don’t tolerate failure, but limit what you can do
  2. Nursing as a buddy — Create a system to record failures, remember the context, and refer to it next time.

I chose number 2. The reason is simple: If you take the No. 1 stance, you won’t be able to bring out the true value of an AI assistant (self-propelled multi-step tasks, complex investigations on your behalf). If you don’t allow failure, you won’t be able to take risks.

However, in order to raise it as a companion, a mechanism that allows the AI ​​to have long-term memory is required. I have no memories of LLM alone. So make it outside. That is the implementation theme of this series.


Series composition

List the current series articles in order of reading.

📘 Comparison edition — Learn the personalities of the two AI assistants| Article | Contents |

|---|---| | I used GitHub Copilot for a month and Claude Code for two days — coding partners and agents are two different things | Copilot is a coding partner type, and Claude Code is an agent type/delegation type. Strengths, weaknesses, and how to properly use both systems. The starting point for viewing AI assistants as a “nurturing relationship” |

🔧 Implementation version — Creating external memory

This is a concrete implementation record to realize “Raising as a partner”.

ArticleContents
[A mechanism that prevents Copilot from making the same mistake twice — A design that allows RAG + MCP to have a “memory of discussions”] (/blog/copilot-memory-rag-mcp)An implementation that turns ChromaDB + Ollama into an MCP server and allows Copilot to search and record past lessons in real time. Six design decisions for Recency Boost / Priority / session_context automatic export / Activity Log / Dynamic threshold / Atomic Lock
Input the conversation history of Copilot Chat and Claude Code into ChromaDB and search for your “past self”VSCode Copilot Chat and Claude Code, differences between two types of JSONL format and their absorption design. Noise removal improves search accuracy by 30%. Claude Code even does automatic input with Stop hook
Automatically classify personal notes into 5 categories using LLM (Ollama) — distill pipeline design and pitfallsA pipeline that automatically promotes unwritten notes to lesson / idea / knowledge / profile / conclusion. If you create it sloppily, “I’m sorry” will be classified as a lessonnone 3-layer countermeasure: category clear + thought process embedding + pre-filter

🧭 Design philosophy edition — Principles for creating a companion that will last for 5 years| Article | Contents |

|---|---| | [The night I was corrected 5 times by AI - A design philosophy that will make your personal RAG your companion for 5 years] (/blog/rag-5year-companion-design-philosophy) | Synthesis through the trap of distilled faith/observer-dependent signal-noise/Google Maps that showed me the vicinity of the base of Mt. Fuji, as seen in an overnight conversation with Claude Code. Four things you shouldn’t do and tips for improving your design by collaborating with AI |

📅 More will be added in the future

  • AI operation pitfalls — “LLM guess > API response” incident and AI consent rule (Execution Consent) design
  • Add as needed

Overall architecture

If you summarize the entire system created in the series into one piece, it will look like this.```` [Daily conversations/notices/discussions] ↓ Various entrances ┌──────────────────────────────────────────┐ │ rag note (manual note) │ │ rag conv (Copilot Chat transcript) │ │ rag claude (Claude Code transcript, Stop hook) │ └──────────────────────────────────────────┘ ↓ [data/diary/ data/ai_notes/] ↓ rag distill (Ollama automatic classification) ┌──────────────────────────────────────────┐ │ data/lessons/ (recurrence prevention rule) │ │ data/ideas/ (future concept) │ │ data/knowledge/ (technical specifications) │ │ data/profile/ (values/motivation) │ │ data/conclusions/(conclusions of discussion) │ └──────────────────────────────────────────┘ ↓ Vectorization (nomic-embed-text) [ChromaDB (persistence)] ↑ Search [my-rag-brain MCP Server] ↑ MCP protocol (stdio) [GitHub Copilot Chat / Claude Code] ↑ [me]


The key point is that it is a ``unidirectional pipeline'' of ``**accumulation → automatic classification → vectorization → searchable by AI via MCP**''. When AI gets to the point where it can draw on the past using autonomous judgment during a conversation, the quality of the relationship changes.

---

## Viewpoints that are important in this series

### 1. Don't hide your failure storiesTechnical blogs are filled with ``cleanly written final forms,'' but it's the ``sloppy steps'' that lead to that point that are helpful to others. The "Please" incident, the "LLM guess > API response" incident, the "apology letter was classified as a lesson" incident - I will write them all honestly.

### 2. Attachment to AI assistants

Treat them not as useful tools, but as ``partners who work in the same workplace''**. When we fail, we look back together, write down norms, and accumulate memories. The metaphor of "nurturing" may sound strange in the context of a technical article, but it feels like the longer you've been with it, the more natural it becomes.

### 3. Prioritize “for yourself”

The system I created in this series was first created to prevent myself from making the same mistake twice. It's not an implementation to please someone, but an implementation to protect your own effort and mental strength.
So it's not perfect, it has its limitations, and we're constantly improving. Readers are encouraged to use it by **adjusting it to their own needs**.

---

## Other related series

There are also articles that are continuations of this series.

- [Comparison of implementing the same business web UI using Vanilla HTML / Vue / React / Thymeleaf] (/blog/banklink-web-stacks-comparison) — 4 stack comparison article. Example of a long article written with an AI assistant
- [Building and understanding electric scooter sharing in the city — Record series of design, implementation, and operation] (/blog/e-scooter-sharing-overview) — Table of contents for series in another genre (self-made mobility)

---

## Conclusion

If you just want to **use** the AI assistant, you only need to read the documentation.
The only way to **nurturing an AI assistant as a companion** is to create a system yourself.

This series is a record of how this system was created. I would be happy if you could read it as a story in progress, rather than as a finished product.

There's bound to be some funny failures tomorrow too. If that happens, I'll post again.

Feel free to send a message

Please send a message if you have any technical questions, feedback, or inquiries.