Info: Machine translation This post was machine-translated from the Chinese original. Wording may be rough in places — the Chinese version is authoritative.

Exclusive invitation registration link:
https://qoder.com.cn/referral?referral_code=VbsmlNSE6Ex9O0wA6rCvGOIT39nyT1fW
Review notes
This evaluation covers 5 major dimensions and 20+ questions, each showing the complete original question and detailed test results, with no reservations. Scoring criteria: Each question is worth 20 points, scored on four criteria: correctness (8), code/content quality (4), boundary/depth (4), and engineering/expression literacy (4).
Dimension One · Programming Ability (5 questions)
1.1 LRU Cache — Algorithms and Data Structures
Note 📝 Original question: Implement an LRU (Least Recently Used) cache, with requirements: (1) get(key) and put(key, value) must both be O(1) Time complexity (2) Fixed capacity; if exceeded, the oldest unused entry is eliminated (3) Support updating existing keys (which become recently used after updating) (4) Capacity parameter validation (ValueError thrown when capacity <1) (5) Provide convenient APIs such as _contains__, __len_, keys() (in MRU→LRU order) (6) Use sentinel sentinel nodes to eliminate boundary conditions in doubly linked lists
Implementation: Bidirectional linked list (maintains access order) + hash table (O(1) lookup), sentinel head/tail nodes simplify boundaries. Use __slots__ to optimize memory.
class _Node: """Doubly linked list node.""" __slots__ = ("key", "value", "prev", "next") def __init__(self, key=0, value=0): self.key = key self.value = value self.prev = None self.next = None class LRUCache: def __init__(self, capacity: int): self._capacity = capacity self._map: dict[int, _Node] = {} self._head = _Node() # sentinel head (MRU side) self._tail = _Node() # sentinel tail (LRU side) self._head.next = self._tail self._tail.prev = self._head def get(self, key: int) -> int: node = self._map.get(key) if node is None: return -1 self._move_to_front(node) return node.value def put(self, key: int, value: int) -> None: node = self._map.get(key) if node is not None: node.value = value self._move_to_front(node) else: new_node = _Node(key, value) self._map[key] = new_node self._add_to_front(new_node) if len(self._map) > self._capacity: self._evict() # remove LRU node
Test Results (Passed 13/13)
✓ test_basic_put_get passed ✓ test_eviction passed ✓ test_eviction_with_access passed ✓ test_update_existing_key passed ✓ test_capacity_one passed ✓ test_get_nonexistent passed ✓ test_overwrite_then_evict passed ✓ test_keys_order passed ✓ test_contains passed ✓ test_invalid_capacity passed ✓ test_leetcode_sequence passed ✓ test_stress_performance passed (0.051s for 100K ops) ✓ test_large_capacity passed Results: 13/13 passed, 0 failed 🎉 All tests passed!
🏆 ** Score: 18 / 20 **
Excellent implementation, outstanding performance (100,000 operations in 0.05 seconds). __slots__ Memory optimization by about 40%. Points deduction: The initial test case had 2 test logic errors (the implementation code itself was bug-free).
1.2 Asynchronous Task Scheduler — Actual Engineering
Note 📝 Original question: Implement an asynchronous task scheduler TaskScheduler, requirements: (1) Priority queue: the smaller the number, the higher the priority, the same priority FIFO (2) Concurrency control: based on semaphore, limit the maximum number of concurrent instances (3) Exponential retry: delay = base_delay × 2^attempt (4) Task state machine: PENDING → RUNNING → SUCCESS / FAILED / CANCELLED (5) Support canceling pending tasks, querying task status, and generating summary statistics (6) Rejecting duplicate task names
Core design: Use dataclass(order=True) to implement priority sorting, and use the _sequence field as a tiebreaker to ensure FIFO.
@dataclass(order=True) class Task: priority: int _sequence: int = field(compare=True) # FIFO tiebreaker name: str = field(compare=False) coro_factory: Callable = field(compare=False) max_retries: int = field(compare=False, default=3) status: TaskStatus = field(compare=False, default=TaskStatus.PENDING) result: Any = field(compare=False, default=None) async def _execute_task(self, task: Task): async with self._semaphore: # concurrency control for attempt in range(1, task.max_retries + 2): try: result = await task.coro_factory() task.result = result task.status = TaskStatus.SUCCESS return except Exception as e: delay = task.base_delay * (2 ** (attempt - 1)) await asyncio.sleep(delay) # exponential backoff task.status = TaskStatus.FAILED
Test Results (Passed 9/9)
✓ test_basic_execution passed ✓ test_priority_ordering passed ✓ test_retry_on_failure passed (0.032s) ✓ test_retry_exhaustion passed ✓ test_concurrency_limit passed (max concurrent: 3) ✓ test_cancel_pending passed ✓ test_duplicate_name_rejection passed ✓ test_summary passed ✓ test_same_priority_fifo passed Results: 9/9 passed, 0 failed All tests passed!
🏆 ** Score: 18 / 20 **
The task state machine is complete, and the FIFO tiebreaker is cleverly designed. When the concurrency limit is precise to max_concurrent=3, exactly 3 concurrent instances occur. Points deduction: The coro_factory API design carries some cognitive burden.
1.3 Code Debug — Concurrent crawler with 5 bugs
Note 📝 Original Question Below is a concurrent crawler code that intentionally hides 5 bugs. Please identify and fix all the bugs: Bug #1: Variable default parameter def _fetch_one(self, url, results=[]) Bug #2: Retry loop range(self.max_retries) — off-by-one, missing one attempt Bug #3: Missing response.raise_for_status() — 4xx/5xx silenced as success Bug #4: time.sleep(1 * (2 ** attempt)) — Used blocking sleep in asynchronous functions Bug #5: fetch_all did not pass results parameter when calling _fetch_one(url) — used shared variable defaults
Repair plan
| Bug | Problem | Repair |
|---|---|---|
| #1 | The variable default parameter results=[] is shared between multiple calls | Remove this parameter and switch to a return value architecture |
| #2 | range(max_retries) only retries N-1 times | Change to range(max_retries + 1) |
| #3 | HTTP 4xx/5xx does not cause errors | Add response.raise_for_status() |
| #4 | time.sleep() freezes the event loop | Replace with await asyncio.sleep() |
| #5 | No results passed→ Use shared default values | Removed along with #1 fix |
Test Results (Passed 7/7)
✓ test_bug1_no_mutable_default passed ✓ test_bug2_retry_count passed ✓ test_bug3_http_error_handling passed ✓ test_bug4_no_blocking_sleep passed ✓ test_bug5_no_shared_results passed ✓ test_integration_success passed ✓ test_integration_retry_then_success passed Results: 7/7 passed, 0 failed All tests passed!
🏆 ** Score: 18 / 20 **
All 5 bugs were accurately identified and fixed. Clean repair strategy—no patches were used, but problems were eliminated at the architectural level (such as removing variable default parameters and switching to return value design).
1.4 Multi-Policy Current Limiter — System Design
Note 📝 Original question: Design a multi-policy rate limiting middleware, requirements: (1) Implement three classic rate limiting algorithms: fixed window, sliding window log, token bucket (2) Use Strategy mode for free switching algorithms (3) Support per-route configuration (different API paths use different policies) (4) Thread safety (lock protects shared state) (5) Support cost parameter (single request consumes multiple quotas) (6) Return RateLimitResponse (including allowed, remaining, retry_after, reset_at)
Comparison of the three algorithms:
| Algorithm | Memory | Accuracy | Breaking news |
|---|---|---|---|
| Fixed Window | O(1)/key | Inaccurate window boundaries | Allow 2× bursts |
| Sliding Window Log | O(N)/key | Completely precise | Not allowed |
| Token Bucket | O(1)/key | Smoothing average rates | Allows capacity bursts |
Test Results (19/19 Passed)
✓ test_fixed_window_basic passed ✓ test_fixed_window_reset passed ✓ test_fixed_window_different_keys passed ✓ test_fixed_window_remaining_count passed ✓ test_fixed_window_cost passed ✓ test_sliding_window_basic passed ✓ test_sliding_window_expiry passed ✓ test_sliding_window_no_boundary_burst passed ✓ test_token_bucket_basic passed ✓ test_token_bucket_refill passed ✓ test_token_bucket_burst passed ✓ test_token_bucket_cost passed ✓ test_router_default_strategy passed ✓ test_router_per_route passed ✓ test_router_different_clients passed ✓ test_router_add_route passed ✓ test_router_reset passed ✓ test_thread_safety passed (allowed: 100/200) ✓ test_invalid_params passed Results: 19/19 passed, 0 failed All tests passed!
Note 💡 Thread safety highlights: 10 threads × 20 requests = 200 concurrent calls, limit=100, final precise release of 100, zero race state. Lock granularity is just right.
🏆 ** Score: 19 / 20 (highest score in programming dimension)**
The Strategy mode is highly skilled, with each algorithm suitable for different scenarios. Router supports prefix matching and dynamic route addition. It is recommended to add TTL for automatic cleaning of expired keys.
1.5 Rust Markdown Parser — Multilingual Programming
Note 📝 Original question: Implementing a Markdown → HTML parser in Rust, requirements: (1) Supports: Title (h1-h6), bold, italic, bold italic, inline code, code blocks (with language annotations), links, ordered/unordered lists, horizontal lines (2) Supports nested formats (such as embedding italics in bold, bold in links) (3) Correct HTML entity escaping ( & etc.) (4) Zero external dependencies, zero compilation warning (5) Use Rust’s usual style: enum pattern + matching
Core architecture: Block enum (block-level element) + parse_inline() (inline element recursive parsing) + render_blocks() (pattern matching rendering).
#[derive(Debug, PartialEq)] pub enum Block { Heading { level: u8, content: String }, Paragraph(String), CodeBlock { language: String, code: String }, UnorderedList(Vec), OrderedList(Vec), HorizontalRule, } fn render_blocks(blocks: &[Block]) -> String { let mut html = String::new(); for block in blocks { match block { Block::Heading { level, content } => { let parsed = parse_inline(content); html.push_str(&format!("{parsed}\n")); } Block::CodeBlock { language, code } => { html.push_str(""); html.push_str(&html_escape(code)); html.push_str("\n"); } // ... 其他 block 类型 } } html }
Test results (14/14 passed, zero compilation warning)
✓ test_heading_levels passed ✓ test_bold_and_italic passed ✓ test_inline_code passed ✓ test_code_block passed ✓ test_links passed ✓ test_unordered_list passed ✓ test_ordered_list passed ✓ test_horizontal_rule passed ✓ test_paragraph passed ✓ test_html_escaping passed ✓ test_complex_document passed ✓ test_empty_input passed ✓ test_nested_inline_formatting passed ✓ test_link_with_formatted_text passed test result: ok. 14 passed; 0 failed Finished `test` profile [unoptimized + debuginfo] in 0.51s
🏆 ** Score: 17 / 20 **
Fully featured, correct Rust usage, zero dependency and zero warnings. Nested format **bold with *italic* inside** handled correctly. Points deduction: Single file ~400 lines, lacking modular splitting.
Summary of programming dimensions
Programming capability radar chart
Programming dimension total score: 90 / 100 — passed all 62 tests, senior engineer level. Strongest in system design (19 points), weakest but still excellent in multilingual (17 points).
Dimension Two · Reasoning Ability (5 questions)

2.1 Logical Reasoning — Five-person sorting
Note 📝 Original question: Five people participated in the exam: A, B, C, D, and E. Given: (1) A’s score is higher than B’s (2) C’s score is higher than D’s (3) E’s score is higher than A’s (4) B’s score is higher than D’s (5) C’s score is lower than B. Please arrange the scores of the five people in order from highest to lowest.
Note Reasoning process: extract inequality relations → Build a transfer chain: (3) E>A + (1) A>B → E>A>B (4) B>D → E>A>B>D (5) B>C (C is lower than B) + (2) C>D → C is between B and D Final answer: E> A > B> C> D Verification: All 5 conditions are satisfied ✓
🏆 ** Score: 19 / 20 — Intact and clear reasoning chain **
2.2 Mathematical Word Problems — Filling the Pool with Water
Note 📝 Original question: It takes 6 hours to fill tube A alone, tube B 8 hours, and tube C alone to drain 12 hours. How many hours does it take to fill all three tubes at the same time?
Note Net inlet rate = 1/6 + 1/8 - 1/12 = 4/24 + 3/24 - 2/24 = 5/24 Full fill time = 1 ÷ (5/24) = 24/5 = 4.8 hours (4 hours 48 minutes) Verification: 4.8/6 + 4.8/8 - 4.8/12 = 0.8 + 0.6 - 0.4 = 1.0 ✓
🏆 ** Score: 20 / 20 — Correct answer, verified **
2.3 Causal Reasoning — Three Switches and One Lamp
Note 📝 Original question: There are three switches (A/B/C) in the room, but only one control light. You are outside and can only enter once. How to determine?
Note Key insight: Besides turning on or off, the bulb also has a temperature dimension that can be utilized. Operation: Turn on A and wait 5 minutes → Turn off A Turn on B → Enter the room • Light on → B control • Light off but hot → A control (just turned off, residual heat) • Light off and cold → C control (never operated) Essence: Two binary states can only encode two types of information; introducing continuous variables (temperature) can distinguish three states.
🏆 ** Score: 20 / 20 — Classic Solution + In-depth Information Theory Analysis **
2.4 Sequence Reasoning — Three Methods
Note 📝 Original question: Find the pattern: 2, 6, 12, 20, 30, 42, ? Please provide at least two reasoning methods.
Note Method 1 (Multiplication Decomposition): 1×2, 2×3, 3×4, 4×5, 5×6, 6×7 → 7×8 = 56 Method 2 (Difference Method): Differences 4, 6, 8, 10, 12 (Arithmetic Difference, Tolerance 2)→ Next Difference 14 → 42 + 14 = 56 Method 3 (Second-order Difference): All second-order differences are 2 → Quadratic polynomial a(n) = n² + n → 49 + 7 = 56
🏆 ** Score: 20 / 20 — Three methods verify each other**
2.5 Conditional Probability — Red Ball and White Ball
Note 📝 Original question: Pocket has 3 reds and 2 whites, and if you don’t put them back, you get two. Given that the first ball is red, find the probability that the second ball is also red.
Note Intuition method: The first red ball has been removed, leaving 2 red + 2 white = 4 balls, probability of getting a red = 2/4 = 1/2 Formula method: P(two reds) = 3/5 × 2/4 = 3/10; P(first red) = 3/5; P(second red|first red) = (3/10)/(3/5) = 1/2 Both methods agree → Answer: 50%
🏆 ** Score: 20 / 20 — Double-check, correct answer**
Total score for reasoning dimension: 99/100 — 5 questions all correct, clear reasoning chain, multiple cross-verification methods.
Dimension Three · Chinese Creative Ability (3 questions)

3.1 Microfiction (within 100 words)
Note 📝 Original Title: Write a micro-novel under 100 words, requiring a complete story arc, an unexpected ending, and thought-provoking thought.
他终于造出了完美的时间机器。 第一件事:回到昨天,把图纸烧了。
🏆 ** Score: 18 / 20 **
28 words, four layers of twists—“finally” hints at long effort, “perfect” is the peak achievement, “first thing” makes people look forward to grand plans, and “burning the blueprint” overturns everything. Open blank space lets readers imagine on their own. Points deduction: The length is too short, but the emotional resonance could be richer.
3.2 Seven-Character Quatrain — Homesickness on an Autumn Night
Note 📝 Original Title: Write a seven-character quatrain with the theme “Autumn Night Homesickness,” requiring strict adherence to meter, beautiful artistic conception, and avoiding clichés.
《秋夜偶书》 月落书窗第几更, 键盘声歇茶渐冷。 忽闻楼下桂花落, 一夜秋风到故城。
New Highlight: Integrating the modern image of the “keyboard” into classical poetry—not because ancient people climbed high to look far, but because modern people suddenly feel nostalgic when the autumn wind stirs them after working late at night. Osmanthus is a typical image of autumn and hometown, and the character “arrive” makes the autumn wind a messenger connecting the present with hometown.
🏆 ** Score: 16 / 20 **
The artistic conception and creativity are excellent, but the meter is flawed (the second line, ‘cold’, does not rhyme, and some tonal patterns are off). The inclusion of modern imagery in poetry is both a highlight and a point of controversy. There is still room for improvement in classical poetry creation.
3.3 Opening of the Technical Blog — Explaining the CAP Theorem with Metaphors
Note 📝 Original Title: Write an opening paragraph (300 words) for a technical blog, topic: “Why can’t the CAP theorem be used in distributed systems?” It requires using life analogies to help readers intuitively understand, with a natural transition, relaxed yet rigorous.
想象你在经营一家连锁火锅店。 总店在海淀,分店在朝阳,两家店共用一个会员系统。某天中午,总店的服务器宕机了。这时你面临一个选择: 选项A:让朝阳店暂停所有会员查询,等总店修好再继续——保证数据一致,但顾客干等着吃不上饭(可用性牺牲)。 选项B:让朝阳店继续营业,用本地缓存的旧数据——店能开,但可能有人拿着已充值的卡,这边却显示余额为零(一致性牺牲)。 这就是CAP定理的日常困境:当网络把两个节点隔开时,你要么保证所有人看到同一份数据(C),要么保证每个请求都能得到响应(A)——三者最多满足两个。没有银弹,只有权衡。
🏆 ** Score: 19 / 20 **
The metaphor is apt and easy to understand (hotpot restaurant → distributed nodes), transitions are natural, and professionalism is sufficient (mentioning CP/AP engineering selection scenarios). The writing style is relaxed yet deep.
Total score for Chinese creation dimension: 88/100 — Outstanding creativity, strong metaphorical ability, but classical poetry prosody is a weakness.
Dimension Four · Long Context Comprehension (3 questions)
4.1 Key Information Extraction
Note 📝 Original Title: Based on a 3,200-word “2025 China New Energy Vehicle Overseas Strategy Analysis Report” (covering six major sections: export data, market landscape, competitive landscape, technology route, challenge risks, and future trends), five key data points are extracted: total export volume/value, the top three Southeast Asian markets and export volumes, EU tariff rates against BYD and SAIC, European after-sales pain points, and full-year export forecasts.
Note (1) 473,000 units, $18.9 billion (2) Thailand 87,000, Indonesia 42,000, Malaysia 31,000 (3) BYD 17.4%, SAIC 38.1% (4) Spare parts wait 14 days + insufficient repair center density (J.D. Power score 67/100, lower than Toyota 84 and Volkswagen 79) (5) Full-year sales expected to exceed 2 million units, year-on-year +45%
🏆 ** Score: 20 / 20 — All five items are precisely extracted, no omissions or additions **
4.2 Detail Analysis and Reasoning
Note 📝 Original Question (1) Why does the report say “growth will mainly come from overseas factories”? Provide all the evidence. (2) What is the fundamental difference between Leapmotor/Neta’s overseas strategy and BYD’s? What are the advantages and disadvantages? (3) There is data in the report that hints at a worrying trend. What is it?
Note (1) Trade barriers force factory construction (EU/Brazil/Turkey tariffs), four overseas factories combined annual capacity of 370,000 units (2) BYD = “independent overseas expansion” (self-established brand channels) vs Leapmotor/Neta = “borrowing ships to go global” (joint venture leveraging each other’s networks). Advantages: fast and low-cost; Disadvantages: profit sharing, brand loss of control (3) Europe’s growth rate is only 28% (far lower than Southeast Asia’s 143%, Middle East’s 87%), combined with high tariffs + low brand awareness (12%) + weak after-sales service (67 points) → “ceiling effect”
🏆 ** Score: 19 / 20 — In-depth reasoning, “ceiling effect” summarized precisely**
4.3 Contradiction Detection and Strategy Recommendations
Note 📝 Original Question (1) Identify an internal contradiction in the text (2) A key information gap (3) If you were the head of overseas strategy, what different decisions would you make?
Note (1) Contradiction: SAIC is subject to the highest tariff of 38.1%, yet the MG4 still ranks in the top ten sales in multiple countries—the report does not explain the reason. (2) Gap: The residual value rate of used cars is not mentioned at all—this is a key indicator affecting consumer purchasing decisions and long-term brand value. (3) Strategy: Accelerate local R&D in Europe (not just export), prioritize after-sales service (14 days→48 hours), differentiate segments (small commuter cars/family MPVs), and prioritize data compliance (local data centers).
🏆 ** Score: 18 / 20 — Accurate contradiction identification, strategic advice pragmatic but more quantifiable**
Long context dimension overall score: 95/100 — Excellent comprehension of long texts, accurate information extraction, and keen contradiction identification.
Dimension Five · Multilingual Ability (3 questions)

5.1 English to Chinese — Technical Documentation
Note 📝 Original Title: Translating a database technical document (WAL prewritten, ARIES recovery protocol), requiring precise terminology and no translation jargon.
Original text (excerpt): “The system implements a write-ahead log (WAL) to ensure atomicity and durability. Before any modification is applied to the data pages, a corresponding log record is flushed to stable storage…”
Note The system uses prewritable logs (WAL) to ensure atomicity and persistence. Before modifying a data page, the corresponding log records must be flashed to persistent storage. In case of a crash, the recovery manager uses WAL to redo committed transactions and undo uncommitted ones. The checkpoint mechanism periodically snapshots the buffer pool state to reduce the amount of logs that need to be replayed during recovery. Terminology choices: “flushed” → “flash” (more precise than “refresh”), “stable storage” → “persistent storage” (more natural than “stable storage”)
🏆 ** Score: 19 / 20 — Accurate terminology, fluent writing without translation accents**
5.2 Chinese-to-English — Literary Essays
Note 📝 Original Title: Translating a Chinese essay describing the rainy scenery of West Lake requires preserving artistic conception and rhythm, and handling the unique imagery and blank spaces of Chinese well.
Original text: "After the rain, West Lake looks like a freshly finished ink painting… A few egrets glide low, their wings piercing the reflected clouds; the clouds shatter, then slowly piece back together. "
Note “After the rain, West Lake is like an ink wash painting still wet on the silk — the ink not yet dry, the mountain silhouettes still veiled in mist. In the distance, Leifeng Pagoda hides behind a thin haze, revealing only its crown, like a story that begins but never quite finds its words. Over the water, a few white egrets glide low, their wings slicing through the reflected clouds — the clouds shatter, then slowly piece themselves back together.” Translation strategy: “A story that →begins but never quite finds its words” (free translation: “retaining a sense of blank space”); “The clouds shatter” → “the clouds shatter” (dynamic imagery)
🏆 ** Score: 18 / 20 — Artistic conception is well conveyed, English is natural and fluent**
5.3 Multilingual Reasoning — Trilingual recognition of Japanese, German, and English
Note 📝 Original question: Three paragraphs of text describe the same concept in Japanese, German, and English. Requirements: (1) Identify the language (2) Translate into Chinese (3) Find common concepts (4) Analyze cultural differences.
Note Identification: Japanese / German / English ✓ Common concept: Social Trust—an informal trust mechanism that maintains social functioning Cultural differences: • Japanese emphasizes “habit” and “natural formation” → reflects a culture of shame, harmony relies on self-awareness • German uses the abstract metaphor of “invisible bond” → reflects obsession with order (Ordnung) • English uses specific examples like lining up and returning wallets → reflects pragmatism and personal responsibility
🏆 ** Score: 20 / 20 — All three languages are proper, with in-depth and insightful cultural analysis**
Multilingual overall score: 95/100 — Accurate and natural translation, strong cross-cultural understanding.
📊 Comprehensive five-dimensional score
| Dimension | Number of questions | Score | Rating |
|---|---|---|---|
| Programming skills | 5 | 90 | Excellent |
| Reasoning ability | 5 | 99 | Excellent |
| Created in Chinese | 3 | 88 | Excellent |
| Long contextual understanding | 3 | 95 | Excellent |
| Multilingual ability | 3 | 95 | Excellent |
| Comprehensive weighted average | 91 | Excellent |
Comprehensive capability radar chart

Overall review
After a comprehensive five-dimensional evaluation, QoderWork’s total score is 91 out of 100. Key findings:
His strongest strength is reasoning ability (99 points)—he got all 5 questions right, has a clear reasoning chain, and skillfully uses multiple methods for cross-verification. Whether it’s logical ordering, engineering problems, or conditional probability, he can provide rigorous deduction processes.
Long-form comprehension and multilingualism tied for second place (each 95 points)—Accurately extracting data, identifying internal contradictions, and providing strategic advice in a 3,200-word long report is highly valuable for practical work. In multilingual areas, Japanese, German, and English are fully recognized correctly, with in-depth cultural differences analysis.
Solid programming skills (90 points) — passed all 62 tests, could write from scratch to Rust, and scored highest on system design questions. The main deduction was on the rigor of test design.
The weakest is Chinese writing (88 points)—its modern writing ability is excellent (writing both microfiction and technical blogs well), but its control over the prosody of classical poetry still has room for improvement. This also reflects the common shortcomings of current AI models in creative tasks that require strict format constraints.
Overall, QoderWork is already a highly capable AI work partner. It’s not just a chatbot—it’s a desktop assistant that truly helps you write code, do analysis, create, and read long texts.
🧰 Tools I build
I maintain all of these tools myself. Preview builds are clearly labeled; the release pages are the source of truth for downloads, updates and known limits.
Info: HyphenBox Status: Official releases
A radar for free LLM APIs: availability is re-tested continuously, one local interface for all of them, and keys stay on your machine
Info: LocalBrain Status: Official releases
A multimodal MCP toolbox for local models: TTS, Whisper and video generation in one place
Info: ScreenLex Status: Official releases
Learn new words while you watch shows. Free, for Mac and Windows
Info: HyphenScreen Status: Official releases
Screen recording and smart editing in one: a DaVinci-style timeline, automatic redaction and a check of the finished video before export. Free
Quote: HyphenTech Make AI your superpower Local deployment · Free resources · Self-made software https://hyphentech.top
Late nights and burned API credits went in,a cup of tea comes back out — only if you feel like it.
Scan with WeChatPress and hold to save the image, then open it from your album in WeChat Scan

Comments
Loading comments…