schedule 12 phút đọc

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.

translate
Có sẵn bằng:
info Bài viết này được dịch bằng AI

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.mdCLAUDE.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_fileedit_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.

Kiến trúc song song: OpenWiki chạy một agent LLM duy nhất với subagents chỉ đọc trả kết quả tìm kiếm cho writer chính. QuotyAI chạy intent classifier, orchestrator agent, hai editing subagents (known-pattern-editor và general-cascade-editor), và 9 code generation subagents với HITL approval trên mỗi lần ghi file.

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)
Directed acyclic graph thể hiện dependency của locked skills trong QuotyAI: offerings_schema chảy đến order_schema, sau đó phân nhánh song song đến pricing_formula, scheduling_function, và validation_function. Router, callback, và system_prompt là các node độc lập không có cascade.

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:

  1. Load pricing-rules skill’s scripts/function.js từ MongoDB
  2. Load offerings skill’s schema/schema.ts cho type definitions
  3. Gọi quoteOrder({ items: [{ service: "deep-tissue", duration: 90, member: true }] })
  4. Nhận { total: 108, pricingCalculationBacktrace: { ... } } trong 24ms
  5. 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á.

So sánh runtime: OpenWiki ghi các file markdown vào thư mục repository — coding agents đọc chúng như context, không có thực thi xảy ra. QuotyAI ghi các file skill TypeScript vào MongoDB với versioned generations — tại runtime, sales pipeline load skills, thực thi các hàm router và pricing trong sandbox vm.createContext với timeout 5 giây, và trả về kết quả deterministic với audit trails.

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-miniClaude 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


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

Cảm ơn bạn đã đọc!
Đọc thêm bài viết