AI 应用开发

01 / BUILD

Turn model capabilities into useful software.

START HERE

Series overview · suggested reading order

  1. Tutorials

    Calling an LLM with Java 8 — from one request to a conversation

    Three runnable Java demos explain HTTP requests, JSON parsing, timeouts and conversation history.

    15 MINPublished
  2. Tutorials

    Java LLM Practice II: How to validate model JSON after HTTP 200

    Build a Java 8 output boundary from a real fenced response and three timeouts, with strict validation, a bounded format adapter and reproducible evidence.

    16 MINPublished
  3. Engineering cases

    Java LLM practice 3: don't let a failed request change conversation history

    Candidate snapshots, complete-pair commits and a UTF-8 request budget: 41 offline checks for history that survives failed requests.

    10 MINPublished
  4. Engineering cases

    Java LLM IV: which concurrent response may commit?

    Reproduce reversed response order with real Java threads, then enforce versioned commits, complete turns and bounded receipts.

    8 MINPublished
  5. Engineering cases

    Java LLM V: why can a timed-out tool keep running?

    Build an allowlisted read-only executor and reproduce the distinction between timeout, cancellation and termination.

    8 MINPublished
  6. Engineering cases

    Java LLM practice (8): should an interrupted stream enter conversation history?

    22 loopback HTTP cases separate incremental preview from committing history, testing UTF-8, SSE framing, cancellation and abnormal endings.

    11 MINPublished
  7. Engineering cases

    Java LLM practice (9): why can a cancelled answer overwrite a new conversation?

    18 controlled thread schedules test request ownership for streaming previews, completion and errors, with cancellation and bounded deduplication.

    10 MINPublished
  8. Engineering cases

    Java LLM practice (10): why is the reader still running after cancellation?

    30 local HTTP connections separate conversation invalidation, reader exit and server work, comparing Future interruption with socket closure.

    11 MINPublished
  9. Engineering cases

    Does TypeScript validate model output? A 32-case comparison with Java

    Assertions, unknown and raw JSON: 22 false accepts, four object-validation blind spots and a bounded Java/TypeScript comparison.

    11 MINPublished
  10. Engineering cases

    Inside AI Radar — from an RSS response to a published page

    Trace the site's actual collection windows, daily quotas, deduplication and publishing checks, then diagnose a successful run that produced no visible update.

    12 MINPublished
  11. Engineering cases

    Java history and request windows: can a trimmed fact return?

    Follow narrowing, commit, restart and expansion to separate durable conversation history from one request context.

    9 MINPublished
  12. Engineering cases

    Java retries: three timeouts are not one deadline

    Seven local HTTP conditions separate retryability, Retry-After, attempt limits and elapsed-time budgets.

    9 MINPublished
  13. Engineering cases

    Durable Java turns: what survives a process crash?

    Checksummed append records, 142 truncated prefixes and three halted JVMs distinguish local recovery from remote exactly-once execution.

    9 MINPublished
  14. Tutorials

    Java idempotent retries: no reply does not mean no effect

    Seven loopback HTTP fault cases explain idempotency keys, concurrent admission, payload conflicts and process-crash gaps.

    11 MINPublished
  15. Tutorials

    Durable idempotency: commit identity and result together

    Use a framed journal, process crashes and 99 truncated prefixes to explain durable idempotency.

    10 MINPublished
  16. Tutorials

    Outbox delivery: local durability is not remote exactly-once

    Compare keyed and unkeyed receivers to separate lost replies, missing receipts and duplicate remote effects.

    10 MINPublished
  17. Tutorials

    Conversation recovery: reconcile intent, receipt and whole turn

    Halt the JVM at three commit boundaries and rebuild whole-turn history from durable facts.

    10 MINPublished

AI ENGINEERING

From application to delivery

An engineering subdirection of AI applications.

  • AI Coding
  • Codex
  • MCP
  • Skills
  • Harness
  • Testing
  • Evals
  • Observability
  • Production
  • Performance
Engineering topics →

Knowledge retrieval and answer evaluation: explore RAG →

PROJECTS

Related projects

  1. PROJECT / 001

    Hohoo’s AI Lab

    A personal knowledge site for public learning, research signals and practice.

    Live
  2. PROJECT / 002

    Java LLM Practice

    Reproducible Java conversation, retry and persistence boundaries, alongside attention, cache-cost and quantization-error experiments.

    Building
Related experiments
  1. LAB / 002

    Tool failure recovery experiment

    Use controlled read-only tools; inject timeouts and empty results, then record completion and call counts.

    Running
  2. LAB / 010

    TypeScript / Output boundary comparison

    Which invalid inputs escape assertions and object validation?

    Completed
  3. LAB / 011

    A1 / The chat-history commit boundary

    How should committed history survive failures, truncation and candidate trimming?

    Completed
  4. LAB / 014

    A2 / Concurrent history commits

    Reproduce reversed response order with real Java threads, then enforce versioned commits, complete turns and bounded receipts.

    Completed
  5. LAB / 021

    Java LLM practice (8): should an interrupted stream enter conversation history?

    22 loopback HTTP cases separate incremental preview from committing history, testing UTF-8, SSE framing, cancellation and abnormal endings.

    Completed
  6. LAB / 024

    Java LLM practice (9): why can a cancelled answer overwrite a new conversation?

    18 controlled thread schedules test request ownership for streaming previews, completion and errors, with cancellation and bounded deduplication.

    Completed
  7. LAB / 027

    Java LLM practice (10): why is the reader still running after cancellation?

    30 local HTTP connections separate conversation invalidation, reader exit and server work, comparing Future interruption with socket closure.

    Completed
  8. LAB / 030

    Java history and request windows: can a trimmed fact return?

    Follow narrowing, commit, restart and expansion to separate durable conversation history from one request context.

    Completed
  9. LAB / 031

    Java retries: three timeouts are not one deadline

    Seven local HTTP conditions separate retryability, Retry-After, attempt limits and elapsed-time budgets.

    Completed
  10. LAB / 032

    Durable Java turns: what survives a process crash?

    Checksummed append records, 142 truncated prefixes and three halted JVMs distinguish local recovery from remote exactly-once execution.

    Completed
  11. LAB / 039

    Java idempotent retries: no reply does not mean no effect

    Seven loopback HTTP fault cases explain idempotency keys, concurrent admission, payload conflicts and process-crash gaps.

    Completed
  12. LAB / 042

    Durable delivery and history recovery

    17 scenarios and 193 child-process records. An unkeyed receiver duplicates the effect after a delivery crash; all three history recovery boundaries retain whole turns.

    Completed

Paper reading guides

Related news

Published updates from external sources.

NVIDIA Technical Blog · Original text · Translation unavailable

Build Specialized Agents on a Stack You Control with NVIDIA NemoClaw ↗

Building an autonomous agent requires a model, a harness, and domain-specific tools. To deploy an agent more securely, developers need a runtime that enforces... Building an aut…

Original source
AIHOT · Original text · Translation unavailable

Cursor 披露 Claude Code VS Code 扩展被植入恶意软件事件,最多影响 5000 用户 ↗

Cursor 发现通过其 IDE 扩展市场分发的 Claude Code VS Code 扩展被修改并植入恶意软件,最多影响 5000 用户,恶意版本并非 Anthropic 开发。Cursor 已于当日下午下线扩展市场,与相关提供方合作清除恶意软件并确认无进一步风险后重新上线,建议受影响用户参考博客说明排查,并升级到 Claude Code for …

Original source
AIHOT · Original text · Translation unavailable

Figma 讲解如何训练专用画布编辑模型 ↗

Figma 介绍其为 agent 自研 Figma 编辑模型的训练方法,先用超过 25 万条合成样本做 SFT,让早期 Llama 3.3 70B 在编辑任务上接近当时顶级模型,后转向 RL 并结合确定性校验器与视觉评委做评测。

Original source

Browse all AI news →

Learning path & planned topics

These are future topics, not completed experiments.

  1. Tool Calling · PLANNED
  2. Spring AI introduction · PLANNED
  3. Agent workflows · PLANNED
  4. Evaluate, record failures and iterate · PLANNED
  5. AI application observability · PLANNED
  6. Production · PLANNED
  7. AI Coding · PLANNED
  8. Codex · PLANNED
  9. MCP · PLANNED
  10. Skills · PLANNED
  11. Harness Engineering · PLANNED
  12. Testing · PLANNED
  13. Performance · PLANNED

Continue along a learning path →

Try it · Retrieval and ranking

Expand to explore in your browser. Link to this exercise ↗

Try it · Prompt repair shop

Expand to explore in your browser. Link to this exercise ↗

Try it · Agent permissions

Expand to explore in your browser. Link to this exercise ↗

Try it · Streaming output

Expand to explore in your browser. Link to this exercise ↗