深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

share-image
中
ESC

From Paste to ClipVault: My 18 Hours Collaborating with AI

English 阅读中文版

From Paste to ClipVault: My 18 hours collaborating with AI

On Monday morning, I sat in front of my computer, staring blankly at an error message on the screen.

It was the tenth-something hour of my revamp of an open-source clipboard tool. From the initial “let’s give it a try,” to later fighting to the death with all kinds of bizarre bugs, to finally integrating the PicGo image-hosting feature as well — this experience gave me a clearer understanding of AI programming assistants.

Origin: A Handy Clipboard Tool

It all started with a computer switch.

When I used a MacBook, I relied on the software Paste. Good-looking UI, handy controls, well-organized history management. But it’s subscription-based — $29.99 a year, or $89.99 to buy outright.

Later I switched to a Windows laptop. The built-in clipboard worked, but it always felt lacking. I searched GitHub for alternatives and didn’t find anything I really liked. Then I found EcoPaste — built on Rust, modern UI, full-featured — but its style wasn’t the kind I liked.

Originally, the story should have ended there. EcoPaste is open-source; just download and use it.

But the problem was I had some needs of my own: I wanted to integrate the PicGo image-host feature to upload images directly when writing articles. And with this Rust codebase, I wanted to tweak the UI and interactions to my own habits.

In the past, I might have just given up. I basically don’t know Rust syntax, and relearning a whole language for a clipboard tool would cost too much time.

But this time I wanted to try: if I let AI assist, could I reshape this project into what I want without deeply learning Rust?

Project Architecture

First, let me understand the project structure before the revamp. This is a typical Tauri app, using a front-end/back-end separated architecture:

┌─────────────────────────────────────────────────────────────────┐
│ ClipVault Architecture │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Frontend (React) │◄──────►│ Backend (Rust/Tauri) │ │
│ ├──────────────────┤ IPC ├──────────────────────────────┤ │
│ │ • App.tsx │ │ • lib.rs (main entry) │ │
│ │ • Main page │ │ • Window management plugin │ │
│ │ • Preference │ │ • Clipboard listener plugin │ │
│ │ • Database store │ │ • Image-host upload plugin │ │
│ │ • State mgmt │ │ • Data sync plugin │ │
│ └──────────────────┘ │ • Autostart management plugin│ │
│ │ └──────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ SQLite database │ │ System clipboard API │ │
│ │ • history table │ │ • Windows: Win32 API │ │
│ │ • tag table │ │ • macOS: NSPasteboard │ │
│ │ • historyTag rel │ │ • Linux: xclip/xdotool │ │
│ └──────────────────┘ └──────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Image-host provider support │ │
│ │ Aliyun OSS │ Qiniu │ Tencent Cloud │ Upyun │ AWS S3 │ GitHub│
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

The data flow is roughly: system clipboard changes → Rust backend listens → stores to SQLite → React frontend reads and displays → user action → triggers the corresponding feature (like uploading to an image host).

Day One: From “Seems Doable” to “Nothing But Pitfalls”

I woke up at past five on Saturday morning, my head full of the code structure I’d read the night before. I just got up and started working.

First I sorted out my plan:

  1. Keep EcoPaste’s core clipboard listening and storage logic
  2. Adjust the UI layout to better fit my habits
  3. Integrate PicGo’s image-host upload feature

The first half went fairly smoothly. With AI’s help, I quickly understood the project structure, changed a few UI components, and got the basic skeleton up. By noon, a runnable base version had taken shape.

But the real torment started in the afternoon.

I hit my first bizarre problem: after copying an image, the preview list was blank. The logs clearly showed the image data had been captured, but the UI just wouldn’t display it.

I threw the problem at AI, and it gave several possible causes and fixes. I tried them — didn’t work.

Tried a second time, a third time. Each time AI confidently said “this should fix it,” but running it was the same as before.

The UI freezing when switching categories, abnormal image preview sizes, no prompt when an upload failed… problems popped up one after another. By three in the afternoon, I stared at the screen feeling like I was playing whack-a-mole — fix one, two more pop up.

That day I worked until eleven at night. In between I ate two meals; the rest of the time I was basically slogging it out with bugs. Eventually the main problems were solved, but I was completely exhausted.

Day Two: Integrating PicGo, Closing the Last Mile

On Sunday morning, once I’d recovered, I started thinking about integrating the PicGo image host.

This feature is important to me. When writing a blog, I’d screenshot, then manually open PicGo to upload, then copy the link back to insert. If I could do it directly in the clipboard tool, it’d be much more efficient.

But there was a pitfall: EcoPaste’s original architecture didn’t account for external API calls, so I needed to find the right entry point. And PicGo’s API spec, error handling, and callback notifications all had to be redesigned.

Another day of repeated debugging. How to refresh the UI after uploading to Aliyun OSS, how to prompt the user when an upload fails, how to compress large images… the details were endless.

By evening, I finally got the whole chain working. Copy image → auto/manual upload → get URL → one-click copy in Markdown format. Testing on Windows was basically fine.

The project is open-sourced as ClipVault, currently supporting Windows, Linux, and macOS on x86 and ARM architectures. But honestly, I’ve only deeply tested it on Windows; I can’t guarantee the other platforms are problem-free.

Reflections After Calming Down

After finishing this project, my biggest takeaway is: don’t mythologize AI.

Nowadays all kinds of marketing accounts hype OpenAI and Claude as godlike, as if with AI, people who can’t program could build complex software. But my real experience is — AI really can help, but its limitations are very obvious.

What AI Is Good At

  • Quick onboarding: I don’t know Rust, but through AI’s explanations I quickly understood the project structure and where the key code was
  • Generating boilerplate: Repetitive template code, AI generates quickly and accurately
  • Providing ideas: When stuck, AI can offer multiple possible solutions to open up my thinking

What AI Is Not Good At

  • Solving complex bugs: That image-not-displaying problem — AI gave four or five different fixes without solving it. In the end I diagnosed it myself by adding logs and breakpoint debugging, tracing it to a timing issue in asynchronous data sync
  • Context understanding: When a problem involves interactions across multiple modules, AI tends to “fix the head and ignore the tail” — fixing A but breaking B
  • Validating assumptions: AI gives plausible explanations, but they aren’t necessarily correct

The most typical was the UI-freezing-on-switch problem. AI first said it was a state-management issue and had me change this and that, wasting two hours. Later I discovered it was actually a memory leak from an event listener — the listener wasn’t removed properly, so after the component unmounted it was still trying to update an already-destroyed UI.

A skilled Rust developer could probably pinpoint the problem in minutes. But someone like me, unfamiliar with Rust, even given a whole day plus AI assistance, might not locate the root cause.

That’s what I want to say: professional knowledge still matters.

AI Hallucination: The Answer You Think Is Right May Be Wrong

While looking up open-source licenses, I also hit a classic AI-hallucination case.

An example of an incorrect AI answer

In the image above, I asked AI about the specific terms of the Apache License 2.0. AI’s answer looked professional and organized, but part of it was inaccurate. For example, some restrictions it mentioned don’t actually exist in Apache 2.0, or were described incorrectly.

This is the classic manifestation of AI hallucination — confidently giving a wrong answer that looks especially convincing.

If you don’t have the relevant expertise, or haven’t formed the habit of verifying, you can easily be led astray. Just like learning to program — if you copy and paste AI’s code without testing it, it could cause big problems once deployed.

So my advice is:

  • Cross-verify important information, especially legal and security-related content
  • Always run the code AI gives you, to see whether it really works
  • Keep a skeptical mind, even top models like GPT-4 and Claude can make mistakes
  • Build a basic knowledge framework, so you can judge whether AI’s answer is reasonable

AI is a powerful assistant, but it’s not a god. It errs too, and its errors are often more subtle and harder to notice than a person’s.

AI is a powerful tool, but it can’t replace your understanding of underlying principles. When you don’t know how to describe a problem or which direction to investigate, AI can’t help you either. At times, a wrong direction from AI even wastes more of your time.

A Few Suggestions for Friends Wanting to Try AI Programming

  1. AI can lower the entry barrier, but it can’t remove the learning cost. If you want to seriously build a project, you still need some foundation — at least enough to judge whether AI’s suggestions are reasonable

  2. Be prepared for complex projects. AI assistance ≠ automation; you’ll still need a lot of debugging and verification time

  3. When stuck, try analyzing it quietly yourself. Sometimes stepping away from the screen and drawing the data flow on paper is more effective than repeatedly chatting with AI

  4. Move in small steps and verify promptly. Don’t change too much at once, or when a problem appears it’s hard to tell whether it’s AI’s approach or your implementation that’s wrong

Choosing an Open-Source License

Before deciding to open-source the project, I actually hesitated.

After all, this thing is based on EcoPaste, and EcoPaste inherits from yet another open-source project. About open-source licenses, I actually only half-understood — what’s the difference between all these letter combinations like GPL, MIT, Apache? If I modify someone else’s code, can I keep it closed-source and commercial?

So I just had AI give me a crash course. From copyleft to permissive, from virality to patent grants, I spent an evening going through the entire open-source license system.

It turns out EcoPaste uses the Apache License 2.0 — a permissive license, which means I can choose to go closed-source and commercialize, as long as I keep the copyright notice. In other words, even if I made ClipVault paid software, there’d be no legal obstacle.

But in the end I decided to open-source it anyway.

On one hand, to thank EcoPaste and the other open-source projects for their contributions; on the other, because I feel: since I stood on the shoulders of those before me, those after me should be able to stand on my shoulders too. This experience of collaborating with AI and figuring out Rust from scratch might have a little reference value for others wanting to try something similar.

So ClipVault is fully open-source, also under the Apache License 2.0. Anyone can use, modify, and distribute it freely, and even commercialize it — as long as they keep the copyright notice and mark their modifications. If you find it useful, just take it; if you find a bug, PRs are welcome; if you want to build on it, no problem at all.

Technology should be open, and knowledge should flow.

Final Thoughts

This experience of developing ClipVault was essentially a “reinventing the wheel” exercise. There are already plenty of good clipboard tools on the market; I did this mainly to practice, and to satisfy my own needs along the way.

But the process gave me a more concrete understanding of AI’s boundaries. It really has changed the way I write code and made me dare to try tech stacks I wouldn’t have touched before. But it hasn’t, and can’t, replace a person’s judgment and debugging ability.

So, if you see all kinds of anxious articles about “AI replacing programmers,” don’t take them too seriously. However powerful the tool, it still depends on who’s using it.

Professional knowledge, problem-decomposition ability, debugging experience — these are your real core competitiveness.


Project URL: ClipVault

If you’ve also had a similar experience with AI-assisted development, feel free to share in the comments. What pitfalls you hit, what insights you gained — let’s talk.

文章作者:阿文
文章链接: https://www.awen.me/post/1a1d0847.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客!
本文于 2026-03-07 21:30 发布,已超过半年(223天),请注意甄别内容是否已过期。

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️✋ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐⛎ ♈♉♊ ♋♌♍ ♎♏♐ ♑♒♓ 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘❌⭕ 🛑⛔📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭❗ ❕❓❔ ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️✅ 🈯💹❇️ ✳️❎🌐 💠Ⓜ️🌀 💤🏧🚾 ♿🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
加载中...

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️✋ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐⛎ ♈♉♊ ♋♌♍ ♎♏♐ ♑♒♓ 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘❌⭕ 🛑⛔📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭❗ ❕❓❔ ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️✅ 🈯💹❇️ ✳️❎🌐 💠Ⓜ️🌀 💤🏧🚾 ♿🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️