OpenWiki vs QuotyAI: Hai Dự Án LangChain DeepAgents, Hai Kiến Trúc
OpenWiki sử dụng LangChain DeepAgents để tạo tài liệu agent cho codebase. QuotyAI sử dụng cùng API createDeepAgent để tạo business logic TypeScript có thể thực thi. So sánh kỹ thuật về kiến trúc agent, pattern subagent, và runtime execution.
OpenWiki, được xây dựng bởi LangChain AI, là một CLI mã nguồn mở đọc codebase và viết tài liệu markdown cho coding agents. QuotyAI là một nền tảng sales AI đọc các quy tắc kinh doanh và viết các hàm pricing TypeScript có thể thực thi, JSON schema, và logic xác thực. Cả hai đều sử dụng cùng hàm createDeepAgent, cùng orchestration LangChain, và TypeScript.
Nền tảng chung là thật. Cả hai dự án đều gọi cùng một hàm factory, sử dụng cùng pattern subagent delegation, và checkpoint conversations với LangGraph. Sự phân tách xảy ra ở thứ mà agent tạo ra và điều gì xảy ra với output đó sau khi được tạo.
OpenWiki viết các file markdown nằm trong repository. QuotyAI viết các hàm TypeScript chạy trong sandboxed VM trên mỗi tin nhắn khách hàng đến. Sự khác biệt duy nhất đó — tài liệu tham khảo vs code production — tạo ra cascade thành các kiến trúc agent khác nhau, các mô hình an toàn khác nhau, và các kết quả kinh doanh khác nhau.
Cách OpenWiki tạo tài liệu agent với LangChain
OpenWiki giải quyết một vấn đề cụ thể: khi bạn chỉ Claude Code hoặc Cursor vào một repository mới, agent không biết gì về kiến trúc, quy ước, hoặc domain model. OpenWiki đọc codebase, tổng hợp hiểu biết, và viết markdown có cấu trúc vào thư mục openwiki/:
openwiki/
quickstart.md # Entrypoint với liên kết đến tất cả các phần
.last-update.json # Git head, timestamp, metadata model
architecture/
overview.md
data-flow.md
api/
endpoints.md
authentication.md
domain/
entities.md
business-rules.md
Một GitHub Action chạy openwiki --update hàng ngày. Agent diff git, xác định những trang tài liệu bị ảnh hưởng bởi các thay đổi source gần đây, và chỉ viết lại những trang đó. Các file AGENTS.md và CLAUDE.md trong root repository chỉ coding agents đến wiki như entrypoint của họ.
CLI chạy cục bộ, lưu checkpoints trong SQLite tại ~/.openwiki/openwiki.sqlite, và hỗ trợ năm nhà cung cấp LLM (OpenAI, Anthropic, OpenRouter, Fireworks, Baseten). Nó được cấp phép MIT và miễn phí.
Cách QuotyAI tạo TypeScript có thể thực thi với DeepAgents
QuotyAI giải quyết một vấn đề khác: khi một AI agent xử lý pricing cho doanh nghiệp, trả lời sai nghĩa là mất doanh thu. Chủ spa gõ “massage deep tissue của chúng tôi giá 90 cho 60 phút, 120 cho 90 phút, và chúng tôi giảm 10% cho thành viên.” Nền tảng tạo một hàm quoteOrder() trả về $108 cho booking thành viên 90 phút. Mỗi lần.
Output nằm trong các thư mục skill có cấu trúc lưu trong MongoDB với các thế hệ được version:
/sales-assistant/skills/
offerings/
skill.md # YAML frontmatter + hướng dẫn
reference.md # Catalog sản phẩm có cấu trúc
schema/
schema.json # JSON Schema (nguồn sự thật)
schema.ts # TypeScript types (tự động suy ra, readonly)
pricing-rules/
skill.md
reference.md # Quy tắc giá trong markdown có cấu trúc
scripts/
function.js # quoteOrder(order) -> QuoteResult
scheduling/
skill.md
reference.md
scripts/
function.js # transformToCheckAvailability(order)
Tám locked skills tạo thành lõi: offerings schema, order schema, pricing formula, scheduling function, validation function, router, callback, và system prompt. Mỗi cái có một vai trò xác định trong pipeline cuộc hội thoại bán hàng.
Nền tảng chạy như multi-tenant SaaS trên GCP, tính $50/tháng cho mỗi doanh nghiệp, và thực thi code được tạo trong sandboxed Node.js VM với timeout 5 giây và không có quyền truy cập require, import, fetch, process, filesystem, hoặc network.
Cả hai dự án đều gọi createDeepAgent — đây là cách code khác nhau
Cả hai dự án đều gọi createDeepAgent từ package npm deepagents. Hàm cung cấp các built-in filesystem tools (ls, read_file, write_file, edit_file, glob, grep), sub-agent delegation qua tool task, planning qua write_todos, checkpointing, và streaming với subgraph support.
OpenWiki truyền một mảng tools: [] trống và dựa hoàn toàn vào các default:
import { createDeepAgent, LocalShellBackend } from 'deepagents';
import { SqliteSaver } from '@langchain/langgraph-checkpoint-sqlite';
const checkpointer = SqliteSaver.fromConnString(checkpointPath);
const agent = createDeepAgent({
model,
tools: [],
checkpointer,
backend: new LocalShellBackend({
maxOutputBytes: 100_000,
rootDir: cwd,
timeout: 120,
virtualMode: true,
}),
systemPrompt: createSystemPrompt(command),
});
System prompt dài khoảng 800 dòng. Nó bao gồm các quy tắc chất lượng tài liệu, kỷ luật git, ràng buộc subagent delegation, và hành vi theo chế độ cho các lệnh init, update, và chat. Không có tool tùy chỉnh. Không có định nghĩa subagent trong code. Prompt chính là sản phẩm.
QuotyAI truyền các custom file tools, 11 subagents, HITL interrupts, và một composite backend ánh xạ /memories/ đến LangGraph store và /patterns/ đến cùng skill file backend:
import { createDeepAgent, CompositeBackend, StoreBackend } from 'deepagents';
import { initChatModel } from 'langchain/chat_models/universal';
const model = await initChatModel(p.llmConfig.model, {
modelProvider: p.llmConfig.provider,
temperature: 0.1,
});
const backend = new CompositeBackend(p.backend, {
'/memories/': new StoreBackend({ namespace: memoryNamespace }),
'/patterns/': p.backend,
});
const agent = createDeepAgent({
model,
backend,
checkpointer: p.checkpointer,
store: p.store,
systemPrompt: buildOrchestratorPrompt({ ... }),
memory: ['/memories/AGENTS.md'],
interruptOn: p.mode === DeepAgentRunMode.APPROVAL_REQUIRED
? { eval: { allowedDecisions: [AllowedDecision.APPROVE, AllowedDecision.REJECT] } }
: undefined,
middleware: [createCodeInterpreterMiddleware({ ptc: ['read_file', 'ls', 'grep', 'glob'] })],
subagents: [
knownPatternEditor,
generalCascadeEditor,
...codeGenSubagents,
],
});
Checkpoint nằm trong MongoDB, không phải SQLite. Backend là một virtual filesystem được backing bởi MongoDB object storage với versioning theo thế hệ. Orchestrator không bao giờ gọi write_skill_file hoặc edit_skill_file trực tiếp — tất cả các sửa đổi file đều thông qua các editing subagents được dispatch qua task().
Agent đơn lẻ của OpenWiki vs orchestrator 11-subagent của QuotyAI
Agent của OpenWiki là một LLM duy nhất đọc code, lập kế hoạch cấu trúc tài liệu, và viết file. Nó có thể spawn subagents qua task() để parallel hóa nghiên cứu, nhưng system prompt áp đặt một ràng buộc: “Subagents chỉ được phép inspect và tóm tắt — chúng KHÔNG được tạo, sửa, xóa, hoặc di chuyển file.” Subagents trả về kết quả tìm kiếm. Agent chính viết tài liệu.
Agent của QuotyAI là một orchestrator phân loại intent trước khi hành động. Một LLM call nhẹ với structured output phân loại tin nhắn người dùng thành query (chỉ đọc) hoặc update (sửa file), và nếu là update, xác định pattern known nào khớp: add-offering, remove-offering, update-price, add-user-skill, hoặc null cho các thay đổi tùy ý.
Đối với known patterns, orchestrator dispatch subagent known-pattern-editor đọc SKILL.md của pattern từ /patterns/{pattern-name}/SKILL.md và làm theo hướng dẫn từng bước. Đối với các thay đổi tùy ý, nó dispatch general-cascade-editor tự suy luận về những gì cần thay đổi.
Cả hai editing subagents đều dispatch các code generation subagents — 9 trình tạo chuyên biệt, mỗi cái là một LLM call riêng với system prompt và validation responseFormat riêng:
| Subagent | Đọc | Ghi |
|---|---|---|
offerings-schema-generator |
/offerings/reference.md |
/offerings/schema/schema.json |
order-schema-generator |
/order-schema/reference.md + offerings schema |
/order-schema/schema/schema.json |
pricing-formula-generator |
/pricing-rules/reference.md + offerings types + order types |
/pricing-rules/scripts/function.js |
scheduling-function-generator |
/scheduling/reference.md + offerings + order types |
/scheduling/scripts/function.js |
validation-function-generator |
/validation/reference.md + offerings + order types |
/validation/scripts/function.js |
router-function-generator |
skill.md + reference.md + order types + routeActions.json | skill’s scripts/function.js |
callback-function-generator |
skill.md + reference.md + order types | skill’s scripts/function.js |
condition-function-generator |
skill.md + order types | skill’s scripts/condition.js |
instruction-tool-generator |
skill.md + reference.md + order types | skill’s scripts/function.js + tools/tool.json |
Mọi lệnh write_skill_file và edit_skill_file từ editing subagent đều kích hoạt HITL interrupt. Frontend IDE hiển thị thay đổi được đề xuất với ba nút: Chấp thuận, Sửa, Từ chối. Agent tạm dừng cho đến khi người dùng quyết định.
Skill dependency cascade trong kiến trúc DeepAgents của QuotyAI
Các locked skills trong QuotyAI tạo thành directed acyclic graph. Khi một skill thay đổi, các skill downstream phải tạo lại:
offerings_schema ──────> order_schema ──────> pricing_formula
├───> scheduling_function
└───> validation_function
router (độc lập)
callback (độc lập)
system_prompt (độc lập)
Orchestrator dispatch các code generation subagents theo thứ tự topo. offerings-schema-generator chạy đầu tiên, sau đó là order-schema-generator. Sau đó, pricing-formula-generator, scheduling-function-generator, và validation-function-generator chạy song song — chúng phụ thuộc vào order_schema nhưng không phụ thuộc lẫn nhau.
OpenWiki không có pattern tương đương. Khi codebase thay đổi, agent diff git, xác định các trang bị ảnh hưởng, và viết lại chúng. Các trang markdown không phụ thuộc lẫn nhau theo cách mà các schema và hàm có thể thực thi làm. Một thay đổi offerings schema không cascade đến hàm pricing sẽ tạo ra giá không nhất quán. Một trang tài liệu cũ chỉ tạo ra một developer bối rối.
Runtime execution: file markdown vs sandboxed TypeScript
Output của OpenWiki không bao giờ thực thi. Các file markdown nằm trong repository. Coding agents đọc chúng như context. Không có sandbox, không có môi trường thực thi, không có validation ngoài “file có tồn tại không.”
Output của QuotyAI chạy trên mỗi cuộc hội thoại bán hàng đến. Pipeline load skills từ MongoDB, thực thi các hàm router để quyết định cách xử lý tin nhắn, gọi LLM nếu cần, và chạy các hàm callback sau khi LLM phản hồi. Môi trường thực thi là sandbox vm.createContext với allowlist nghiêm ngặt:
- Được phép:
Date,Math,Array,Object,String,Number,Boolean,RegExp,JSON,Error,TypeError,ReferenceError,RangeError,parseInt,parseFloat,isNaN,isFinite - Bị chặn:
require,import,eval,fetch,process,fs,net,setTimeout,setInterval - Timeout: 5 giây. Vòng lặp vô hạn trong code được tạo bởi AI xảy ra thường xuyên hơn bạn nghĩ.
Khi khách hàng hỏi “massage deep tissue 90 phút cho thành viên giá bao nhiêu?”, pipeline:
- Load
pricing-rulesskill’sscripts/function.jstừ MongoDB - Load
offeringsskill’sschema/schema.tscho type definitions - Gọi
quoteOrder({ items: [{ service: "deep-tissue", duration: 90, member: true }] }) - Nhận
{ total: 108, pricingCalculationBacktrace: { ... } }trong 24ms - Trả về giá với audit trail đầy đủ về cách tính
Một trang OpenWiki cũ nghĩa là một coding agent bối rối. Một hàm QuotyAI bị lỗi nghĩa là khách hàng bị tính sai giá.
Xử lý lỗi: git revert vs HITL approval interrupts
OpenWiki được thiết kế cho developer workflows nơi git là lưới an toàn. Agent ghi vào openwiki/, bạn review diff trong PR, và merge hoặc reject. Agent tự động retry khi gặp lỗi 5xx từ OpenRouter với model fallback — model chính cộng GPT-5.4-mini và Claude Sonnet 5 được gửi như fallbacks qua tính năng route: "fallback" của OpenRouter. Nếu agent ghi một trang tài liệu xấu, git revert sửa nó.
QuotyAI được thiết kế cho chủ doanh nghiệp nơi output ảnh hưởng đến doanh thu. Mọi thay đổi file đều thông qua HITL interrupt — người dùng thấy chính xác những gì sẽ được ghi, có thể sửa tại chỗ, hoặc từ chối hoàn toàn. Codebase sử dụng versioning theo thế hệ với atomic compare-and-swap pointer swaps. Nếu một hàm được tạo ra trả về kết quả sai, người dùng có thể rollback về thế hệ trước mà không chạm vào môi trường live.
Chi phí lỗi khác nhau: một trang tài liệu gây confusion lãng phí thời gian developer. Một tính giá sai tốn tiền.
Tác động kinh doanh: thời gian developer vs độ chính xác doanh thu
Sự khác biệt về methodology thay đổi ai sử dụng sản phẩm và lỗi tốn bao nhiêu:
| OpenWiki | QuotyAI | |
|---|---|---|
| Người dùng | Developers, coding agents | Doanh nghiệp nhỏ, solo entrepreneurs |
| Chi phí lỗi | Developer bối rối | Khách hàng bị tính sai giá |
| Kích hoạt cập nhật | Hàng ngày (GitHub Action) | Theo yêu cầu (người dùng kích hoạt) |
| Xác minh output | Con người đọc diff | HITL chấp thuận mỗi file + sandbox validates code được tạo |
| Mô hình mở rộng | Nhiều repo = nhiều tài liệu | Nhiều doanh nghiệp = nhiều doanh thu ($50/tháng mỗi cái) |
| Chi phí | Miễn phí (MIT) | $50/tháng |
OpenWiki tiết kiệm thời gian developer. Một coding agent có tài liệu tốt viết code tốt hơn, nhanh hơn — ít lỗi hơn, onboard nhanh hơn, ít thời gian giải thích codebase cho thành viên mới.
QuotyAI tiết kiệm tiền chủ doanh nghiệp. Một sales agent với pricing deterministic không bao giờ ảo giác giá, không bao giờ giảm giá trái phép, và không bao giờ double-book lịch hẹn. Pricing chính xác nghĩa là không rò rỉ doanh thu.
Khi nào sử dụng OpenWiki vs QuotyAI cho agent workflows
Lựa chọn phụ thuộc vào việc agent của bạn cần làm gì với kiến thức nó tạo ra.
OpenWiki phù hợp khi agent cần context. Chỉ Claude Code vào một repository không có tài liệu (hoặc tài liệu cũ), chạy openwiki --init, và coding agent có ghi chú kiến trúc, tài liệu API, và domain concepts trong vài phút. GitHub Action giữ chúng cập nhật. Output là tài liệu tham khảo — nó inform quyết định của agent nhưng không thực thi.
QuotyAI phù hợp khi agent cần chạy code. Chủ spa mô tả quy tắc giá bằng ngôn ngữ tự nhiên, và nền tảng tạo một hàm quoteOrder() deterministic thực thi trong sandboxed VM trên mỗi yêu cầu booking. Output là code production — nó chạy, tính toán, và trả về kết quả với audit trails.
Cả hai sản phẩm đều không phải RAG pipeline. Cả hai đều không thay thế chatbot đơn giản. OpenWiki không tạo code có thể thực thi. QuotyAI không tài liệu hóa codebase. Chúng chia sẻ framework vì framework là đa mục đích. Định dạng output quyết định kiến trúc.
Tech stack: Node.js + SQLite vs Bun + MongoDB
| Layer | OpenWiki | QuotyAI |
|---|---|---|
| Agent framework | deepagents ^1.10.5 |
deepagents (cùng package) |
| Orchestration | LangChain + LangGraph | LangChain + LangGraph |
| Ngôn ngữ | TypeScript | TypeScript |
| Runtime | Node.js | Bun |
| HTTP framework | Không (chỉ CLI) | Hono |
| WebSocket | Không | Socket.IO |
| Database | Không (filesystem) | MongoDB |
| Checkpoint | SQLite | MongoDB |
| Streaming | LangGraph stream protocol | SSE qua Hono + LangChain Agent Protocol |
| Tracing | LangSmith tùy chọn | OpenTelemetry + LogTape |
| Frontend | React + Ink (terminal UI) | Angular 21 |
| Voice | Không | LiveKit + Deepgram |
| Nhà cung cấp LLM | OpenAI, Anthropic, OpenRouter, Fireworks, Baseten | OpenAI, Anthropic, Google Gemini (BYOK) |
| Package manager | pnpm | pnpm (Nx monorepo) |
Đọc thêm
- Hono + Bun cho AI Platforms: 6 Production Patterns Đáng Học — backend stack đằng sau skill builder của QuotyAI
- Open Knowledge Format (OKF) vs Agent Skills — tại sao thực thi deterministic thắng knowledge files tĩnh
- Determinism như Hạ Tầng — tại sao AI platforms cần thực thi deterministic
- Tại Sao Tôi Chọn Bun và Hono — phân tích quyết định ban đầu cho stack của QuotyAI
Câu Hỏi Thường Gặp
OpenWiki và QuotyAI khác nhau như thế nào? OpenWiki là một CLI mã nguồn mở tạo và duy trì tài liệu markdown cho codebase sử dụng DeepAgents + LangChain. QuotyAI là một nền tảng SaaS sử dụng cùng stack DeepAgents + LangChain để xây dựng agent skills có thể thực thi — các hàm TypeScript được tạo ra, JSON schema, và dữ liệu tham khảo có cấu trúc chạy trong sandboxed VM.
OpenWiki và QuotyAI có thể sử dụng cùng nhà cung cấp LLM không?
Có. Cả hai đều hỗ trợ OpenAI, Anthropic, và OpenRouter. OpenWiki còn hỗ trợ Fireworks và Baseten. QuotyAI hỗ trợ Google Gemini qua BYOK. Cả hai đều sử dụng abstraction initChatModel của LangChain, nên thêm nhà cung cấp mới chỉ cần thay đổi một dòng.
Tại sao QuotyAI cần 9 subagent sinh code trong khi OpenWiki không dùng tool tùy chỉnh nào? OpenWiki tạo tài liệu markdown — một loại nội dung duy nhất được viết trực tiếp bởi orchestrator. QuotyAI tạo code có thể thực thi, JSON schema, và dữ liệu có cấu trúc trên 8 locked skills với dependency cascade. Mỗi loại code (công thức tính giá, hàm lịch trình, logic xác thực) yêu cầu một subagent chuyên biệt với prompt engineering và validation đặc thù cho lĩnh vực đó.
DeepAgents chỉ dành cho công cụ tài liệu thôi sao?
Không. DeepAgents cung cấp các nguyên tắc composable — createDeepAgent, SubAgent, Backend, checkpointing, đăng ký tool — hoạt động cho bất kỳ workflow agent nào. OpenWiki sử dụng nó để tạo tài liệu. QuotyAI sử dụng nó để tạo business logic deterministic với HITL interrupts, dependency cascade, và sandboxed execution. Framework là đa mục đích; methodology mới tạo nên sản phẩm.
Dependency cascade trong skill builder của QuotyAI là gì?
Khi một locked skill thay đổi (ví dụ: offerings schema), tất cả các skill downstream phải tạo lại. Cascade tuân theo DAG: offerings_schema -> order_schema -> pricing_formula + scheduling_function + validation_function. Orchestrator dispatch các subagent sinh code theo thứ tự topo, parallel hóa các nhánh độc lập.
Tags: deepagents langchain openwiki quotyai ai-agents deterministic-ai typescript agent-skills
Bài viết hữu ích? Hãy chia sẻ.
Bài viết liên quan
Codex for Sales: Chạy Logic Kinh Doanh Do AI Tạo Trong Môi Trường Sản Xuất
Mã nguồn về định giá và lên lịch do AI tạo ra cần quản lý vòng đời kiểu git: staging, xác thực, phê duyệt, rollback. Các mẫu thiết kế thực tế từ một hệ thống đa tác tử trong sản xuất.
Đọc bài viếtHono + Bun cho nền tảng AI: 6 pattern sản phẩm đáng học hỏi
Xây dựng nền tảng AI trên Hono + Bun: 100+ services, SSE streaming, sandboxed code execution, real-time WebSocket. 6 pattern sản phẩm từ codebase thực tế.
Đọc bài viếtTại sao tôi chọn Bun và Hono cho backend của QuotyAI
Xây dựng backend nhanh hơn bằng cách từ bỏ NestJS để chuyển sang Bun và Hono - hoàn hảo cho solo founders đang xây dựng sản phẩm AI trong 2026
Đọc bài viết