Vì sao Pi thành coding agent hằng ngày, chạy trong container

Dựng pi-container để chạy Pi coding agent cô lập, cài extension web access, Context7, todo, chỉnh Open TUI, rồi build một app Next.js và sửa lỗi bằng Pi.

Đã duyệt độc lập · cập nhật 31/10/2026 · 16 min

1. Pi: một coding harness tối giản và dễ mở rộng

Pål-Kristian Hamre mở đầu video bằng việc giới thiệu Pi, mà anh gọi là một coding harness, hay coding agent, mã nguồn mở và tối giản (theo video đăng ngày 30/10/2026). Anh hứa sẽ giải thích Pi là gì, project cá nhân pi-container của anh là gì, rồi kể vì sao Pi đã trở thành coding agent yêu thích mới của anh và vì sao anh dùng nó mỗi ngày.

Pål-Kristian Hamre đeo tai nghe, nói trước camera, phía sau là dải đèn màu hồng
Pål-Kristian Hamre ở phần mở đầu, trước khi chuyển sang màn hình terminal và trình duyệt.

Theo anh (video đăng ngày 30/10/2026), Pi là một AI coding agent rất đơn giản, hay một coding harness, tuỳ cách bạn gọi. Thứ cuốn anh tới với Pi là sự đơn giản và khả năng mở rộng (extensibility). Ngay khi cài xong, Pi là một project rất gọn: bạn nối nó với một model, và nó có thể đọc file, sửa code, chạy lệnh. Nó hiểu context, gửi truy vấn tới model, đọc phản hồi, và về cơ bản chỉ có vậy. Để biến Pi thành của riêng mình, bạn cài thêm extension từ một kho rất lớn.

Anh mô tả agent loop của Pi thật ra khá đơn giản (theo video đăng ngày 30/10/2026): nó gom context lại và gửi request tới model, nhận phản hồi, rồi chạy tool hoặc lặp lại nếu cần. Pi lưu các session một cách bền vững dưới dạng JSONL với cấu trúc cây, nhờ đó bạn có thể rẽ nhánh (branching) từ những đoạn trước đó của cuộc hội thoại.

Gom context(assemble) Gửi requesttới model Nhận phản hồi(response) Chạy toolhoặc lặp lại session lưudạng JSONLcấu trúc cây,rẽ nhánh được
Hình 1.1Agent loop của Pi như Pål-Kristian Hamre mô tả trong video đăng ngày 30/10/2026: gom context, gửi request, nhận phản hồi, chạy tool hoặc lặp lại. Session được lưu dạng JSONL hình cây để rẽ nhánh từ một điểm trước đó.

2. pi-container: Pi chạy cô lập trong một container

Daily driver của anh là pi-container (theo video đăng ngày 30/10/2026): project này lấy Pi coding agent, cô lập nó bên trong một container và bọc thêm một lớp bảo mật quanh nó. Anh bắt đầu xem cách cài và cách chạy.

Project nằm trên GitHub. Anh mở trang repo trong trình duyệt và copy URL ở đó. Theo lời anh (video đăng ngày 30/10/2026), repo có tài liệu rất đầy đủ, gọn và dễ đọc nếu bạn muốn tìm hiểu thêm về cách nó hoạt động và những gì có thể tuỳ chỉnh.

Trang GitHub của repo pkhamre/pi-container với danh sách file và mục About
Repo pkhamre/pi-container trên GitHub trong video đăng ngày 30/10/2026: các file Dockerfile, Makefile, bootstrap.py, bộ script test, commit mới nhất "Update Pi to 1.4.0". Mục About ghi đây là môi trường container được làm cứng về bảo mật để chạy Pi coding agent CLI trong cô lập hoàn toàn; mục Contributors ghi pkhamre, Pål-Kristian Hamre.
Máy của bạn (host) pi-container: container + lớp bảo mật Pi coding agentđọc file, sửa code, chạy lệnh
Hình 2.1Ý tưởng của pi-container theo video đăng ngày 30/10/2026: Pi không chạy trực tiếp trên máy, mà nằm trong một container có lớp bảo mật bọc quanh.

3. Clone repo và build image

Quay lại terminal, anh tạo một thư mục git, clone project pi-container vào đó, rồi đi vào thư mục pi-container. Theo lời anh, ở đây có thể gõ lệnh build latest (README của repo ghi là make build-latest), hoặc thật ra chỉ cần gõ make build, vì bản Pi mới nhất đã nằm sẵn trong commit mới nhất của repo (tính đến video đăng ngày 30/10/2026). Trên màn hình, anh gõ make build.

Các lệnh trên màn hình:

mkdir git
cd git/
git clone https://github.com/pkhamre/pi-container
cd pi-container/
make build

Anh nói bước này sẽ mất vài phút. Theo anh (video đăng ngày 30/10/2026), image dựa trên một Debian distroless image: quá trình build dựng container, build mọi tool cần thiết và gói tất cả các binary vào trong image distroless đó. Kết quả là một image rất cô lập và an toàn hơn so với chạy Pi trực tiếp trên máy của bạn. Cách này rất giống cách anh chạy OpenCode trong container, và anh chỉ dựng lại cùng kiểu cô lập container đó cho Pi coding agent.

Trong lúc build chạy, anh quay lại trang repo trong trình duyệt để xem phần cần dùng tiếp: anh copy cả hai dòng lệnh ở đó, quay về terminal và dán vào. Sau đó pi-container đã được cài vào môi trường của anh (demo trong video đăng ngày 30/10/2026).

Terminal cuối quá trình build: 13 bước của Dockerfile, tag pi-container:latest, rồi lệnh export PATH và pi-container --version in ra 1.4.0
Cuối quá trình build trong demo (video đăng ngày 30/10/2026): 13 bước của image (WORKDIR /workspace, ENV PI_CODING_AGENT_DIR=/app/.pi/agent, ENTRYPOINT chạy bootstrap.py), image được tag localhost/pi-container:latest, rồi hai lệnh anh dán vào và dòng phiên bản 1.4.0.

Hai dòng lệnh anh dán vào, như trên màn hình:

export PATH="$PWD/bin:$PATH"
pi-container --version

4. Đăng nhập OpenAI Codex và chọn model

Anh khởi động pi-container lần đầu. Lúc này chưa có model nào khả dụng, nên phải đăng nhập: anh gõ login và chọn đăng nhập bằng OpenAI Codex (legacy). Anh chọn cách đăng nhập headless bằng device code, copy mã hiện ra, mở một trình duyệt khác và cấp quyền cho Codex trên tài khoản của mình (demo trong video đăng ngày 30/10/2026).

Anh kể mình đã bắt đầu dùng gói ChatGPT subscription, và theo anh, ít nhất là với anh, đó là lựa chọn tốt nhất lúc này (tính đến video đăng ngày 30/10/2026). Anh rất thích các model GPT: theo anh, Luna khá tốt, và 6.1 Terra rất tốt.

Khi đã được cấp quyền, mọi thứ sẵn sàng để bắt đầu build. Nhưng trước đó, anh chỉ cách gõ Ctrl+L để chọn model. Anh nói trong phần lớn video này anh có lẽ sẽ dùng GPT 6.1 Terra, vì với anh nó có vẻ đáng giá nhất lúc này (tính đến video đăng ngày 30/10/2026). Nếu cần thứ nâng cao hơn, anh có lẽ sẽ chọn 6.1 Sol; còn việc đơn giản thì GPT-6 Luna. Rồi anh nói "nhưng sao cũng được" và chuyển tiếp.

Pi v1.4.0 trong terminal với danh sách model openai-codex: gpt-6.1-sol, gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-6-astra, gpt-6-luna, gpt-6-sol, gpt-6.1-terra
Bảng chọn model của Pi trong demo (video đăng ngày 30/10/2026): sau khi đăng nhập OpenAI Codex (legacy), danh sách gồm gpt-6.1-sol (mặc định), gpt-5.6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-6-astra, gpt-6-luna, gpt-6-sol và gpt-6.1-terra.

5. Tìm extension trên pi.dev

Tiếp theo, anh xem các extension có thể cài vào môi trường Pi. Anh quay lại trình duyệt, gõ pi.dev, trang web chính thức của Pi, rồi vào mục Packages. Ở đó có thể sắp xếp theo lượt tải nhiều nhất (Most downloads), và theo anh, cách đó thường đưa lên một số extension tốt nhất (theo video đăng ngày 30/10/2026).

Trang chủ pi.dev: There are many agent harnesses but this one is yours, kèm lệnh cài bằng curl
Trang pi.dev trong video đăng ngày 30/10/2026: "There are many agent harnesses but this one is yours", "Pi is a minimal agent harness", kèm lệnh cài curl -fsSL https://pi.dev/install.sh | sh và các mục Documentation, Changelog, Models, Packages, Radius.

Extension đầu tiên anh dùng là web access. Trên trang package có sẵn dòng lệnh để copy; anh copy nó, quay lại terminal và dán vào, nhưng thay pi bằng pi-container. Theo anh (video đăng ngày 30/10/2026), extension này cho pi-container, hay Pi coding agent, quyền tìm kiếm trên internet, và nó đã tỏ ra rất hữu ích với anh để tìm tài liệu và những thứ khác.

Anh chọn thêm vài extension khác (mô tả theo lời anh, video đăng ngày 30/10/2026):

  • Open TUI: làm giao diện người dùng chi tiết hơn một chút (video đăng ngày 30/10/2026).
  • Context7: coding agent có thể lấy tài liệu mới nhất của các thư viện, hay bất cứ thứ gì nó cần (video đăng ngày 30/10/2026).
  • Ask user question (rpiv): bạn có thể bảo model hỏi lại bạn để hiểu context tốt hơn, và bạn có một phần tương tác rất gọn để trả lời câu hỏi (video đăng ngày 30/10/2026).
  • Todo: anh thấy extension to-do cũng khá hay (video đăng ngày 30/10/2026).

Anh nói thế là đủ cho lúc đầu. Ngoài ra, anh thích cài một bộ theme đẹp hơn theme mặc định, nên tìm thêm gói theme phù hợp.

6. Cài năm extension và một bộ theme

Anh quay lại terminal để cài các extension đã chọn. Hai gói ask user question và to-do list anh copy thẳng từ trang package. Bộ theme anh cài bằng gói pi-curated-themes. Các lệnh trên màn hình:

pi-container install npm:pi-web-access
pi-container install npm:pi-open-tui
pi-container install npm:@upstash/context7-pi
pi-container install npm:@juicesharp/rpiv-ask-user-question
pi-container install npm:@juicesharp/rpiv-todo
pi-container install npm:@victor-software-house/pi-curated-themes
Terminal với các lệnh pi-container install cho context7-pi, rpiv-ask-user-question, rpiv-todo và pi-curated-themes
Cài extension qua pi-container trong demo (video đăng ngày 30/10/2026): mỗi lệnh pi-container install npm:... in ra số package đã thêm và dòng "Installed npm:..." khi xong.

7. Chọn theme và chỉnh Open TUI

Anh mở lại pi-container và chỉnh giao diện một chút (demo trong video đăng ngày 30/10/2026). Vào settings, gõ themes và chọn theme bạn thích. Riêng anh thích theme Programmer, vì trông đẹp và đơn giản. Anh bấm Escape để quay lại màn hình chính.

Sau đó anh gõ open và chọn Open TUI settings (demo trong video đăng ngày 30/10/2026). Tab General có vài thiết lập chung đơn giản; anh để mặc định. Rồi anh sang tab Appearance. Ở đây anh thích chọn nerd fonts; bạn cũng có thể chọn font Unicode hoặc ASCII, nhưng anh thích nerd fonts. Anh đổi kiểu con trỏ (cursor style) sang underline.

Theo lời anh, Open TUI settings là nơi anh tuỳ chỉnh nhiều nhất. Những gì anh chọn (demo trong video đăng ngày 30/10/2026):

  • Không in thư mục làm việc hiện tại: vì pi-container chạy cô lập, thư mục làm việc luôn là /workspace, nên không cần hiện (video đăng ngày 30/10/2026).
  • Không hiện hostname, vì đó là một hostname ngẫu nhiên của Podman (video đăng ngày 30/10/2026).
  • Git branch: nên hiện. Session name: anh không quan tâm lúc này. Git status: nên hiện. Git tag: bật nếu bạn muốn, bình thường anh không bật (demo trong video đăng ngày 30/10/2026).
  • Project runtime: không hiện. Context usage: rất nên xem. Session token và session cost: hay (demo trong video đăng ngày 30/10/2026).
  • Capitalize provider name: anh đặt Off. Extra space after Nerd icons: anh nói có thể dùng, "sao lại không" (demo trong video đăng ngày 30/10/2026).
  • Footer in editor border (trên màn hình nằm ở tab General): anh thấy cái này hay (demo trong video đăng ngày 30/10/2026).
Hộp Open TUI Settings, tab Footer, danh sách Session name, Git branch, Git status, Context usage, Session cost, Capitalize provider name
Tab Footer của Open TUI Settings trong demo (video đăng ngày 30/10/2026): Session name Off, Git branch On, Git status On, Git tag Off, Project runtime Off, Context usage On, Session tokens On, Session cost On, Live TPS On, Capitalize provider name Off. Phía sau là màn hình chào của Pi v1.4.0 với các skill, prompt và extension đã nạp.

Thế là xong. Trong demo (video đăng ngày 30/10/2026), màn hình chào của Pi ghi "Let's build something great", và anh nói giờ đã sẵn sàng để build một thứ thật tuyệt như dòng chữ đó. Từ đây có thể bắt đầu dùng nó làm daily driver: build project, nhờ nó giúp công việc.

8. Prompt cho Awesome Blossom

Để trình diễn (demo trong video đăng ngày 30/10/2026), anh build một app tên là Awesome Blossom: một ứng dụng web đơn giản tạo và hiển thị các tác phẩm generative art dạng lưới chấm, theo phong cách các bố cục chấm tròn pointillist hay kiểu bảng thử mù màu Ishihara, giống những bản in mỹ thuật phiên bản giới hạn. Anh yêu cầu bootstrap app bằng Next.js bản mới nhất và bảo Pi hỏi anh để nắm đúng context. Prompt trên màn hình:

Today we are building awesome-blossom with extra awesome. This is a simple web application that generates and displays generative dot-grid artworks in the style of circular pointillist / Ishihara-test compositions. like limited edition fine-art prints. Bootstrap the app with NextJS latest version. Ask me questions to get the context right.

Anh gửi prompt tới model và đoán sẽ nhận lại khoảng bốn câu hỏi (demo trong video đăng ngày 30/10/2026), rồi build một thứ cho vui ngay tại đó.

Pi hỏi Which features should the first version include, với các lựa chọn Curated palettes, Composition controls, Print-ready export, Saved editions
Extension ask user question và todo hoạt động trong demo (video đăng ngày 30/10/2026): danh sách Todos (0/3) ở trên, và câu hỏi thứ ba "Which features should the first version include?" với Curated palettes và Composition controls đã được tick.

9. Bốn câu hỏi, danh sách todo và Context7

Ngay lúc đó, extension to-do và extension hỏi câu hỏi hiện ra trong thực tế (demo trong video đăng ngày 30/10/2026). Pi tạo ba việc: làm rõ hướng nghệ thuật và phạm vi app, kiểm tra workspace và bootstrap Next.js bản mới nhất, rồi build và kiểm chứng trải nghiệm artwork. Sau đó Pi hỏi bốn câu, mỗi câu một tab (Art direction, Experience, Features, Artwork):

  • Awesome Blossom nên mang cảm giác thế nào? Anh chọn luôn phương án đầu tiên (demo trong video đăng ngày 30/10/2026).
  • Người xem nên tạo và khám phá artwork ra sao? Anh chọn Studio + Collection, thấy khá ổn (demo trong video đăng ngày 30/10/2026).
  • Phiên bản đầu nên có những tính năng nào? Curated palettes (anh nói "ổn"), Composition controls ("ổn"), Print-ready export và Saved editions: anh nói như vậy là được (demo trong video đăng ngày 30/10/2026).
  • Artwork: anh chọn Abstract organic, rồi submit các câu trả lời để xem nhận lại gì (demo trong video đăng ngày 30/10/2026).

Vì prompt có chuỗi "Bootstrap the app with NextJS latest version", model đã tự truy vấn Context7 để lấy tài liệu của Next.js. Theo anh (demo trong video đăng ngày 30/10/2026), như vậy là anh đã tận dụng được tất cả các extension vừa cài.

Kết quả Context7 cho thư viện /vercel/next.js, query-docs về create-next-app, và lệnh kiểm tra phiên bản node và next
Context7 trong demo (video đăng ngày 30/10/2026): Pi tra library ID /vercel/next.js, gọi query-docs về các tuỳ chọn của create-next-app, rồi chạy lệnh kiểm tra phiên bản Node (v24.22.2) và Next (16.4.3). Thanh dưới cùng hiện tốc độ tok/s, context đã dùng trên 500k và chi phí của lượt chạy.

Trong lúc agent chạy, anh chỉ vào thanh trạng thái: có thể thấy context window, thấy mình đang đốt bao nhiêu token mỗi giây, và chi phí của các truy vấn tới lúc đó. Anh thấy như vậy khá hay. Giờ chỉ việc chờ và để model làm hết. Nó bắt đầu dựng các bảng màu; anh nhận xét chúng có lẽ mang kiểu bảng màu rất "AI", nhưng vẫn ổn, vì đây chỉ là một proof of concept để cho thấy các extension khác nhau hoạt động thế nào trong lúc build một thứ gì đó (demo trong video đăng ngày 30/10/2026).

10. Đổi theme trong lúc chờ, và tốc độ token

Trong lúc Pi làm việc (demo trong video đăng ngày 30/10/2026), anh đổi theme ngay giữa chừng để cho thấy chúng rất khác nhau. Theo anh, có rất nhiều theme đẹp, cứ chọn cái nào bạn thấy hợp. Anh cũng thích một theme khác, và nói nhiều theme trong số đó thật ra rất đẹp. Cuối cùng anh chọn jellybeans, vì anh thích cái tên.

Vẫn đang chờ build thì anh phát hiện mình đã huỷ thao tác (aborted) (demo trong video đăng ngày 30/10/2026). Anh nói "Continue" và cho chạy tiếp. Anh không biết vì sao mình huỷ; có lẽ anh đã bấm Escape thừa một lần, và theo lời anh, chuyện này tiếc là xảy ra suốt.

Theo số đo anh đọc trong video đăng ngày 30/10/2026, model chạy khoảng 50 đến 60 token mỗi giây, có lúc 70 (dòng tổng kết cuối lượt build trên màn hình ghi TPS 43.0 tok/s). Anh đoán tốc độ này phụ thuộc vào thời điểm trong ngày bạn dùng. Anh háo hức xem chuyện gì sẽ xảy ra và project trông thế nào. Như đã nói, đây chỉ là bản demo, để cho thấy bạn có thể build bằng Pi và bằng những extension anh thích nhất như thế nào.

11. Một video quay không có kịch bản

Trong lúc chờ, anh kể video này (đăng ngày 30/10/2026) thật ra là video đầu tiên anh cứ thế bấm quay và ứng biến. Anh không dùng tool AI nào để giúp làm nội dung hay bất cứ thứ gì. Anh chỉ bấm record, bắt đầu nói, và cố làm video tự nhiên hơn, con người hơn.

Anh nói có lẽ sẽ tiếp tục làm vậy với mọi video để giữ được, theo lời anh, "phần con người", dù anh không biết gọi nó là gì cho đúng. Lý do anh đưa ra: rất nhiều video trên YouTube ngày nay có nội dung do AI viết, kịch bản do AI viết, có quá nhiều AI, quá nhiều bài blog do AI viết (nhận xét của anh trong video đăng ngày 30/10/2026). Anh muốn làm mọi thứ mang tính cá nhân, cứ thuận theo dòng, nói đúng điều anh thực sự muốn nói và nghĩ ra để nói.

Anh hy vọng người xem thích cách này, vì chính anh thích nó: anh đang làm những video mà bản thân anh muốn xem.

12. Chạy app và dán lỗi console trở lại cho Pi

Pi báo hoàn tất, và anh nói "giờ nó đã build xong, hoàn hảo". Bản tổng kết trên màn hình ghi app được build trong /workspace/awesome-blossom với Next.js 16.4.3, gồm bốn bảng màu chọn sẵn và ba bố cục organic, điều khiển lưới chấm trực tiếp với seed tái lập được, lưu edition cục bộ, export SVG và PNG 3600px, thiết kế responsive kiểu xưởng in; phần Verified ghi production build, lint, năm unit test và bốn browser test (demo trong video đăng ngày 30/10/2026).

Anh sang tab terminal còn lại, gõ npm install (anh đoán việc này có lẽ đã xong), rồi npm run dev. Anh copy network URL, mở một tab mới trong trình duyệt, dán vào và bấm Enter. Awesome Blossom hiện ra, theo lời anh, "đúng như tôi hình dung" (demo trong video đăng ngày 30/10/2026). Collection của anh lúc này đang là không.

App awesome blossom trong trình duyệt: tiêu đề A little chance. A lot of possibility., một vòng tròn chấm màu đất, bảng điều khiển Room to play
Bản đầu tiên của Awesome Blossom trong demo (video đăng ngày 30/10/2026): tiêu đề "A little chance. A lot of possibility.", một vòng tròn kết từ các chấm màu, và bảng "Room to play" với Color story, Composition và các thanh trượt chi tiết.

Nhưng các nút điều khiển không làm gì cả, và anh không biết vì sao. Anh mở Inspect và xem console: hoá ra trình duyệt không kết nối được tới web socket (demo trong video đăng ngày 30/10/2026). Anh dán thẳng các thông báo lỗi đó vào terminal, vào Pi, không kèm thêm context gì ngoài chính các thông báo lỗi từ console, và đoán nó có lẽ sẽ tự tìm ra.

Tổng kết build của Pi, bên dưới là các dòng lỗi Firefox can't establish a connection to the server at ws://..., và Pi đọc file next.config.ts
Bản tổng kết build và lỗi được dán vào trong demo (video đăng ngày 30/10/2026): các dòng "Firefox can't establish a connection to the server at ws://…/_next/hmr", rồi Pi mở next.config.ts để tìm nguyên nhân. Dòng số liệu của lượt build ghi TPS 43.0 tok/s và 8m 47s.

Anh nói dù đây chỉ là một project demo, đó thường là vòng lặp làm việc của anh (theo video đăng ngày 30/10/2026): deploy một thứ, tìm ra vài bug hay vài thông báo lỗi, rồi dán thông báo lỗi vào, cho nó thêm một chút context, và về cơ bản là vậy.

Deploy Tìm bug haythông báo lỗi Dán lỗi vào Pi,thêm chút context Pi sửa vòng lặp làm việc thường ngày của anh (video đăng ngày 30/10/2026)
Hình 12.1Vòng lặp lặp đi lặp lại mà Pål-Kristian Hamre kể là cách anh thường làm việc, theo video đăng ngày 30/10/2026: deploy, tìm lỗi, dán lỗi kèm một chút context cho agent.

Pi sửa bằng cách thêm allowedDevOrigins vào cấu hình Next.js (demo trong video đăng ngày 30/10/2026). Trên màn hình, Pi giải thích log của server cho thấy Next.js đang chặn hai LAN origin, vì dev server chạy bên ngoài network namespace của container, và nó cho phép hai origin phát triển cụ thể đó; lint và kiểm tra TypeScript đều qua. Anh chạy lại project bằng npm run dev, quay lại trình duyệt và hard refresh. Giờ thì app chạy được. Anh nói "hoàn hảo".

13. Sửa lỗi lưu vào collection và export SVG

Anh thử các điều khiển (demo trong video đăng ngày 30/10/2026): đổi mật độ (density), đổi kích thước chấm, chỉnh organic flow, và anh thấy ổn. Nút "A new possibility" đổi seed. Anh nói rất thích bản này và bấm lưu vào collection. Việc lưu lại không chạy.

Anh lại xem console, thấy một lỗi, copy lỗi đó, quay lại Pi và gõ "I tried to save to my collection, but got this", rồi dán lỗi vào. Anh đoán nó có lẽ sẽ sửa khá nhanh. Lần này anh cho thêm context cùng với chính thông báo lỗi. Anh nói đôi khi anh chỉ dán đúng thông báo lỗi và nó cứ thế chạy, vì phần lớn thời gian thông báo lỗi đã khá rõ ràng (nhận xét của anh trong video đăng ngày 30/10/2026).

I tried to save to my collection, but got this

Lỗi được sửa (demo trong video đăng ngày 30/10/2026). Anh quay lại terminal chạy lại, sang trình duyệt hard refresh, rồi lưu: tác phẩm đã vào collection. Anh tạo thêm một bản mới với kiểu xoáy (swirl), mật độ thấp hơn nhiều, chấm to hơn, organic flow khác, đổi seed, rồi lưu. Anh cũng tải bản in xuống dưới dạng SVG, và nó có vẻ chạy được. Các bản đều nằm trong collection của anh, lưu cũng được.

Mục Your collection của awesome blossom với ba tác phẩm chấm tròn: Plum and petal hai bản và Terracotta garden
Collection sau khi sửa lỗi lưu trong demo (video đăng ngày 30/10/2026): ba tác phẩm, hai bản Plum & petal và một bản Terracotta garden, phía trên là nút Save edition, lựa chọn SVG và Download print.

Anh khép lại video đăng ngày 30/10/2026: đó là một phần trình diễn rất đơn giản về Pi và cách dùng nó để build project, biến ý tưởng thành hiện thực. Anh hy vọng người xem thích video và học được điều gì đó, và cảm ơn mọi người.

Nguồn và liên kết 6 nguồn

  1. Tên gốc: Why I Switched to Pi as My Daily AI Coding Agent
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=y9V8Lh_28Ek youtube.com
  4. Kênh YouTube Pål-Kristian Hamre (Pål-Kristian Hamre): youtube.com/channel/UCymDFAeODxFLf1mhSoJztmw youtube.com
  5. Repo pi-container, mô tả là môi trường container được làm cứng về bảo mật để chạy Pi coding agent CLI trong cô lập hoàn toàn, README có các lệnh build và phần Troubleshooting (đọc ngày 31/10/2026): github.com/pkhamre/pi-container github.com
  6. Trang chính thức của Pi, "a minimal agent harness", có mục Documentation và Packages (đọc ngày 31/10/2026): pi.dev pi.dev