This notes is for using AI services and tools. For working with APIs, please refer this note.
- Plan with Opus, review with Codex.
- Implement with either Grok (extremely fast), GLM, Sonnet (and maybe Kimi K3) then review with Claude.
- Small tasks with Grok / GLM / Sonnet / K3.
This is based on my personal experience with each service at the time I tried it, so it may be outdated later. This list may also change significantly in the future.
- Summarize YouTube videos: Notebook LM or ask Grok with a URL.
- Check references/sources: Perplexity then Grok / ChatGPT.
- Record and summarize live meetings: use meetily for transcription, then summarize with Grok / ChatGPT.
- Summarize Vietnamese books (outdated): ChatGPT
- Voice Mode (for English speaking practice): ChatGPT
- AI IDE: (Updated: whatever with Claude Code extension) Cursor, then VSCode.
- Image / Video editing/generation: Grok Imagine (⭐)
- Goon's Solo Playbook | Substack (Vietnamese)
- cc-lens — Local analytics dashboard for Claude Code. No cloud, no telemetry. Alternative: claude-devtools (it’s heavier when running)
- CCS - Claude Code Switch — I use this to quickly switch between GLM in Claude and Claude itself.
- Claude Design — Design tool from Anthropic. Offline alternative - Open Design (use your existing coding agent)
- CLIProxyAPI — Wrap Gemini CLI, Antigravity, ChatGPT Codex, Claude Code, Qwen Code, iFlow as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini 2.5 Pro, GPT 5, Claude, Qwen model through API
- CodexBar — Show usage stats for OpenAI Codex and Claude Code, without having to login. Alternative: Claude-Usage-Tracker (only Claude)
- https://github.com/AlexsJones/llmfitllmfit — Hundreds of models & providers. One command to find what runs on your hardware.
- OpenCode Go: login → go to usage page (where it shows 5-hour, weekly,…) → Dev Tool (Inspect Elements) → Network tab → filter with “go” → Header find “Cookie” and copy all
auth=Fe26....→ Open CodexBar settings → OpenCode Go → Cookie source “Manual” → whatever label and paste the copied cookie there.
- Cursor: login to the web dashboard
- ⭐ coding-friend plugin — a tool I build for disciplined engineering workflows
- Use Codex as a reviewer, use codex-plugin-cc.
- Some useful skills (some for quick checking): XcodeBuildMCP, mcp-server-tauri, ui-ux-pro-max-skill
- Use old version of a model:
/model claude-opus-4-8[1m]
- In the Claude Code extension for VSCode/Cursor, long prompts can make the pinned prompt area cover the whole panel, hiding the response. Workaround: cancel the task after it starts, then enter ”Try again” or ”Continue.” The new prompt replaces the old one at the top, freeing space for the response.
- Using
/btwor/forkto ask about the current conversation but don’t want to dilute the current conversation.
- Ask about Claude Code, ask
claude-code-guideagent.
- Use
cmd+escto automatically focus in the claude code input field in IDE.
- Use
opt+kon a selection to mention this in the Claude chat.
- Prompt Repetition Improves Non-Reasoning LLMs (from Google)
- To add MCP servers to different scopes (global, local, project), read this doc.
- To fix warning “Warning: Running native installation but config install method is 'global’”, run
claude install.
- To use
shift + enter, run/terminal-setupin claude. Note that, iTerms supportshift+enterbut Terminal.app supportalt+enterinstead.
- When coding CLI with Claude, if you want to add something to
CLAUDE.md, just add#before what you want to say, e.g.# Response in Vietnamese every question.
- In the new version of Cursor, there is an option called “Open chat as editor tabs”. If this option is enabled, we cannot show the Claude tab in the sidebar, so we should disable it.
- Aug 7, 2026 New workaround: If “Claude Code: Open in Side bar” only shows Claude in the left sidebar while the right sidebar shows the history, let’s drag and drop Claude from the left sidebar to the vertical left sidebar (where the main icons are). Then right-click the new Claude icon there and choose move to the second sidebar.
- When using the Claude Code extension with VSCode or Cursor, organize multiple folders under a single parent folder and create your project from that parent—rather than importing separate folders into one VSCode project. This makes it easier to reference files and folders in Claude Code.
- In case you use ESLint, create
.vscode/settings.jsonin the root of the project and put
1{
2 "eslint.workingDirectories": [
3 "child_folder_1",
4 "child_folder_2"
5 ]
6}- Another idea: Using symlink (I tried on macOS)
1# Create a new "parent" folder
2mkdir parent/
3
4# Create symlinks
5ln -s folder-1/ parent/folder-1
6ln -s folder-2/ parent/folder-2
7
8# Then just open the folder parent in the cursor/vscode
9# and work on this folder1# Example
2~/git/inbox-symlink-aio using ☁️ Azure subscription 1 via 🅒 base
3➜ ln -s /Users/thi/git/ideta/ideta-cross-platform-lib ./ideta-lib- Check the official guide but it’s not enough.
- CCS - Claude Code Switch — Instant switch between Claude Subscription profile and GLM Coding Plan profile with one command.
- Different from VSCode, all
cmd+kis replaced bycmd+r!
- If you prefer a vertical activity bar like VSCode’s (for search, extensions, and other icons) instead of the horizontal layout, navigate to Settings → Workbench → Activity Bar → Orientation and change it there.
- Don’t use GLM with Cursor, it hits the limit error very quickly.
- Using GLM inside ZCode is terrible: there are too many confirmations, and we cannot disable them, even if we set “Edit automatically” or “Full access,” use
/goal, or set ignore in the settings. None of them works.
- Use GLM with Claude Code instead. Use ccs for quickly switch between Claude (using GLM) with Claude itself.
- Usage limits (how many requests per month and per week for each model)
- Check the model list on the home page.
- To download model (cannot do with the desktop app):
ollama pull <model_name> - Models I use:
qwen3:8b(for tasks need a quick response),qwen3-coder:30b(to use with claude code on my Mac M4),gpt-oss:20b(daily chat).
- Run with API endpoints, check this official doc.
- Ollama Cloud with Claude
1ollama launch claudeDon’t worry it will affect the current Claude profile, you can run
claude normally. No need to use something like --restore in the case of Codex!- Ollama Cloud model with Codex
1# active with codex app
2ollama launch codex-app
3
4# restore to default
5ollama launch codex-app --restore
6
7# active with codex cli
8ollama launch codex- Ollama with Cursor
- Enable “OpenAI API Key” and put your Ollama API Key here
- Override OpenAI Base URL with
https://ollama.com/v1 - Add a new model with
glm-5.2:cloud(the same model key as on ollama site)
If you wanna use Claude Code with local AIs or enable web (more easily), use Ollama instead.
- Need to enable server before using endpoints (⚠️ Make sure to enable CORS)
- No need to load the model before using request to endpoints, it will be loaded automatically.
- Example of curl
1curl http://127.0.0.1:1234/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -d '{
4 "model": "google/gemma-3-27b", // or: openai/gpt-oss-20b
5 "messages": [
6 { "role": "system", "content": "Always answer in rhymes." },
7 { "role": "user", "content": "Introduce yourself." }
8 ],
9 "temperature": 0.7,
10 "max_tokens": -1,
11 "stream": true
12 }'- In your IDE (VSCode or Cursor), install the Continue extension.
- In LM Studio, navigate to the Developer tab, select your downloaded model → Settings → enable "Serve on Local Network" → enable the server.
- In your IDE, select the "Continue" tab on the left sidebar → Choose "Or, configure your own model" → "Click here to view more providers" (or select the Ollama icon tab if you're using Ollama) → in the provider list, select LM Studio → Set Model to "Autodetect" → Connect → a config file will open at
~/.continue/config.yaml, keep the default settings and save.
- That's it!
- As another option, you can use Granite.code (from IBM)
I’m using Claude Code, if you use another Coding CLI service, modify the codes. Insert below codes in
.bashrc or .zshrc and then source ~/.zshrc:1claude_execute() {
2 emulate -L zsh
3 setopt NO_GLOB
4 local query="$*"
5 local prompt="You are a command line expert. The user wants to run a command but they don't know how. Here is what they asked: ${query}. Return ONLY the exact shell command needed. Do not prepend with an explanation, no markdown, no code blocks - just return the raw command you think will solve their query."
6 local cmd
7 # use Claude Code
8 cmd=$(claude --dangerously-skip-permissions --disallowedTools "Bash(*)" --model default -p "$prompt" --output-format text | tr -d '\000-\037' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
9 if [[ -z "$cmd" ]]; then
10 echo "claude_execute: No command found"
11 return 1
12 fi
13 echo -e "$ \033[0;36m$cmd\033[0m"
14 eval "$cmd"
15}
16alias ask="noglob claude_execute"1# Usage
2ask "List all conda env in this computer"