<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bnguyen003</title>
    <description>The latest articles on DEV Community by Bnguyen003 (@bnguyen003).</description>
    <link>https://dev.to/bnguyen003</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3952848%2F5ef65378-4f45-4e13-be74-b9c247ce76ce.png</url>
      <title>DEV Community: Bnguyen003</title>
      <link>https://dev.to/bnguyen003</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bnguyen003"/>
    <language>en</language>
    <item>
      <title>Building DevTriage: An AI-Powered GitHub Issue Triage Assistant with Dify and EdgeOne</title>
      <dc:creator>Bnguyen003</dc:creator>
      <pubDate>Wed, 27 May 2026 16:43:10 +0000</pubDate>
      <link>https://dev.to/bnguyen003/building-devtriage-an-ai-powered-github-issue-triage-assistant-with-dify-and-edgeone-4fj3</link>
      <guid>https://dev.to/bnguyen003/building-devtriage-an-ai-powered-github-issue-triage-assistant-with-dify-and-edgeone-4fj3</guid>
      <description>&lt;h1&gt;
  
  
  Building DevTriage: An AI-Powered GitHub Issue Triage Assistant with Dify and EdgeOne
&lt;/h1&gt;

&lt;p&gt;Open-source maintainers spend a surprising amount of time reviewing GitHub issues manually.&lt;/p&gt;

&lt;p&gt;Reading bug reports, understanding issue context, assigning labels, estimating severity, and identifying possible root causes can quickly become repetitive and time-consuming — especially for fast-growing repositories.&lt;/p&gt;

&lt;p&gt;I wanted to explore whether AI workflows could simplify this process while also experimenting with edge-native deployment infrastructure.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;DevTriage&lt;/strong&gt; — an AI-powered GitHub issue triage assistant using &lt;strong&gt;Dify&lt;/strong&gt; and &lt;strong&gt;EdgeOne&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The workflow is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Paste a GitHub issue URL → instantly receive structured AI-powered analysis.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project was created for the &lt;strong&gt;Dify × EdgeOne Best Practices Contest&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is DevTriage?
&lt;/h1&gt;

&lt;p&gt;DevTriage is a lightweight AI developer tool that analyzes public GitHub issues and generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-powered issue summaries&lt;/li&gt;
&lt;li&gt;Severity estimation&lt;/li&gt;
&lt;li&gt;Suggested labels&lt;/li&gt;
&lt;li&gt;Root cause hints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of manually reading through long issue threads, developers can quickly understand the problem and prioritize faster.&lt;/p&gt;

&lt;p&gt;The goal was not to build another generic chatbot.&lt;/p&gt;

&lt;p&gt;I wanted to build a focused developer productivity tool with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight architecture&lt;/li&gt;
&lt;li&gt;Fast interaction flow&lt;/li&gt;
&lt;li&gt;Practical use case&lt;/li&gt;
&lt;li&gt;Real-world developer workflow&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why I Built This
&lt;/h1&gt;

&lt;p&gt;Most AI demos today focus heavily on chat interfaces.&lt;/p&gt;

&lt;p&gt;I wanted to create something more practical and developer-oriented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A tool maintainers could actually use&lt;/li&gt;
&lt;li&gt;Minimal frontend complexity&lt;/li&gt;
&lt;li&gt;Edge-native deployment&lt;/li&gt;
&lt;li&gt;Fast AI workflow iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub issue triage felt like a perfect use case because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is repetitive&lt;/li&gt;
&lt;li&gt;It consumes developer time&lt;/li&gt;
&lt;li&gt;It benefits from structured summarization&lt;/li&gt;
&lt;li&gt;It works well with LLM reasoning&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Tech Stack
&lt;/h1&gt;

&lt;p&gt;DevTriage uses a very lightweight stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dify Workflow&lt;/li&gt;
&lt;li&gt;EdgeOne Pages&lt;/li&gt;
&lt;li&gt;EdgeOne Edge Functions&lt;/li&gt;
&lt;li&gt;HTML / CSS / JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I intentionally avoided large frontend frameworks because the interaction flow itself is simple and speed-focused.&lt;/p&gt;




&lt;h1&gt;
  
  
  System Architecture
&lt;/h1&gt;

&lt;p&gt;The overall architecture is intentionally minimal:&lt;br&gt;
flowchart TD&lt;br&gt;
    A[Frontend HTML/CSS/JS] --&amp;gt; B[EdgeOne Edge Functions]&lt;br&gt;
    B --&amp;gt; C[Dify Workflow API]&lt;br&gt;
    C --&amp;gt; D[AI GitHub Issue Analysis]&lt;br&gt;
The frontend sends the GitHub issue URL to an Edge Function.&lt;/p&gt;

&lt;p&gt;The Edge Function securely communicates with the Dify Workflow API while keeping the API key hidden from the client.&lt;/p&gt;

&lt;p&gt;The Dify workflow processes the issue and returns structured AI analysis results.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexo8c4xo0apxbzlz8363.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexo8c4xo0apxbzlz8363.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Building the AI Workflow with Dify
&lt;/h1&gt;

&lt;p&gt;The Dify workflow receives a GitHub issue URL and performs several reasoning steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting issue context&lt;/li&gt;
&lt;li&gt;Understanding bug descriptions&lt;/li&gt;
&lt;li&gt;Detecting severity indicators&lt;/li&gt;
&lt;li&gt;Suggesting GitHub labels&lt;/li&gt;
&lt;li&gt;Identifying possible root causes&lt;/li&gt;
&lt;li&gt;Generating concise summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing I particularly liked about Dify was how quickly workflows could be tested and refined.&lt;/p&gt;

&lt;p&gt;Instead of constantly rebuilding backend logic, I could directly iterate prompts and workflow steps inside the Dify editor.&lt;/p&gt;

&lt;p&gt;This made experimentation extremely fast.&lt;/p&gt;




&lt;h1&gt;
  
  
  Dify Workflow
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4f7jfzwin8x0v5a8kq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4f7jfzwin8x0v5a8kq7.png" alt=" " width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Example GitHub Issues for Testing
&lt;/h1&gt;

&lt;p&gt;Here are several public GitHub issues that work well with DevTriage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/facebook/react/issues/29900" rel="noopener noreferrer"&gt;https://github.com/facebook/react/issues/29900&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vercel/next.js/issues/54157" rel="noopener noreferrer"&gt;https://github.com/vercel/next.js/issues/54157&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/vscode/issues/204095" rel="noopener noreferrer"&gt;https://github.com/microsoft/vscode/issues/204095&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These examples contain enough technical detail for the AI workflow to generate meaningful analysis.&lt;/p&gt;




&lt;h1&gt;
  
  
  Frontend Design Decisions
&lt;/h1&gt;

&lt;p&gt;I intentionally kept the UI minimal and developer-oriented.&lt;/p&gt;

&lt;p&gt;The interface includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single issue input field&lt;/li&gt;
&lt;li&gt;Example issue shortcuts&lt;/li&gt;
&lt;li&gt;Loading states&lt;/li&gt;
&lt;li&gt;Markdown-rendered AI responses&lt;/li&gt;
&lt;li&gt;Lightweight dark-mode styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to make the experience feel more like a focused developer utility rather than a generic AI chatbot.&lt;/p&gt;

&lt;p&gt;I wanted users to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Paste a link&lt;/li&gt;
&lt;li&gt;Click Analyze&lt;/li&gt;
&lt;li&gt;Get immediate value&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;without unnecessary complexity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Live Application
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcaqnfpp0v7lq5vc1wc1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcaqnfpp0v7lq5vc1wc1f.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pr6u2ac5htp92oysecx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pr6u2ac5htp92oysecx.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Deploying with EdgeOne
&lt;/h1&gt;

&lt;p&gt;One of the most interesting parts of this project was deployment.&lt;/p&gt;

&lt;p&gt;I deployed DevTriage using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EdgeOne Pages&lt;/li&gt;
&lt;li&gt;EdgeOne Edge Functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deployment flow looks like this:&lt;br&gt;
flowchart LR&lt;br&gt;
    A[GitHub Repository] --&amp;gt; B[EdgeOne Pages]&lt;br&gt;
    B --&amp;gt; C[Edge Functions]&lt;br&gt;
    C --&amp;gt; D[Global Production Deployment]&lt;br&gt;
Deployment was surprisingly straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push the project to GitHub&lt;/li&gt;
&lt;li&gt;Import the repository into EdgeOne Pages&lt;/li&gt;
&lt;li&gt;Configure deployment settings&lt;/li&gt;
&lt;li&gt;Add environment variables&lt;/li&gt;
&lt;li&gt;Deploy globally&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The application was online within minutes.&lt;/p&gt;




&lt;h1&gt;
  
  
  EdgeOne Deployment
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gux0jxd58o21n6ja1vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gux0jxd58o21n6ja1vw.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic8q5ovn7t4kw634fml9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic8q5ovn7t4kw634fml9.png" alt=" " width="799" height="406"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Edge Functions and API Security
&lt;/h1&gt;

&lt;p&gt;One important architectural decision was keeping the Dify API key secure.&lt;/p&gt;

&lt;p&gt;Instead of exposing the API key in the frontend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend requests are sent to Edge Functions&lt;/li&gt;
&lt;li&gt;Edge Functions securely call Dify&lt;/li&gt;
&lt;li&gt;API keys remain protected server-side&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This architecture also creates a cleaner separation between frontend logic and AI workflow orchestration.&lt;/p&gt;




&lt;h1&gt;
  
  
  Runtime Challenges During Deployment
&lt;/h1&gt;

&lt;p&gt;During deployment, I encountered an issue related to environment variables inside Edge Functions.&lt;/p&gt;

&lt;p&gt;Initially, I used:process.env.DIFY_API_KEY&lt;br&gt;
However, Edge runtimes behave differently from traditional Node.js environments.&lt;br&gt;
The correct implementation was:context.env.DIFY_API_KEY&lt;br&gt;
After updating the runtime handling, the deployment worked correctly.&lt;br&gt;
This was a useful reminder that edge-native runtimes and traditional server runtimes are not always interchangeable.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Dify + EdgeOne Worked Well Together
&lt;/h1&gt;

&lt;p&gt;One thing I appreciated during development was how naturally Dify and EdgeOne complemented each other.&lt;/p&gt;

&lt;p&gt;Dify made AI workflow iteration extremely fast:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt tuning&lt;/li&gt;
&lt;li&gt;Workflow experimentation&lt;/li&gt;
&lt;li&gt;Structured AI outputs&lt;/li&gt;
&lt;li&gt;Rapid testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, EdgeOne simplified deployment and edge execution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub integration&lt;/li&gt;
&lt;li&gt;Global deployment&lt;/li&gt;
&lt;li&gt;Edge Functions&lt;/li&gt;
&lt;li&gt;Lightweight infrastructure management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination allowed me to move from idea to production deployment very quickly without managing traditional backend infrastructure.&lt;/p&gt;

&lt;p&gt;For lightweight AI-native tools, this workflow felt surprisingly efficient.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example User Flow
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;User pastes a GitHub issue URL&lt;/li&gt;
&lt;li&gt;Frontend sends request to Edge Function&lt;/li&gt;
&lt;li&gt;Edge Function securely calls Dify Workflow API&lt;/li&gt;
&lt;li&gt;AI workflow analyzes the issue&lt;/li&gt;
&lt;li&gt;Structured results are returned instantly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The entire experience feels lightweight and responsive.&lt;/p&gt;




&lt;h1&gt;
  
  
  Live Demo
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Demo URL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://devtriage-dify.edgeone.dev" rel="noopener noreferrer"&gt;https://devtriage-dify.edgeone.dev&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  GitHub Repository
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/Bnguyen003/devtriage-dify" rel="noopener noreferrer"&gt;https://github.com/Bnguyen003/devtriage-dify&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;p&gt;This project reinforced several ideas for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI workflows can become practical products very quickly&lt;/li&gt;
&lt;li&gt;Edge deployment significantly simplifies infrastructure&lt;/li&gt;
&lt;li&gt;Lightweight architectures are often enough for AI-native tools&lt;/li&gt;
&lt;li&gt;Developer-focused AI tools do not require overly complex interfaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also realized how effective Dify is for rapidly prototyping production-ready AI workflows.&lt;/p&gt;




&lt;h1&gt;
  
  
  Future Improvements
&lt;/h1&gt;

&lt;p&gt;Some features I would like to explore next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub OAuth integration&lt;/li&gt;
&lt;li&gt;Automatic issue labeling&lt;/li&gt;
&lt;li&gt;Repository-wide analytics&lt;/li&gt;
&lt;li&gt;Multi-language support&lt;/li&gt;
&lt;li&gt;Team collaboration workflows&lt;/li&gt;
&lt;li&gt;Historical issue trend analysis&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Building DevTriage with Dify and EdgeOne was a genuinely smooth experience.&lt;/p&gt;

&lt;p&gt;Dify made workflow iteration fast and flexible, while EdgeOne simplified deployment and edge execution.&lt;/p&gt;

&lt;p&gt;For developers interested in building lightweight AI-native tools, this combination is definitely worth exploring.&lt;/p&gt;

&lt;p&gt;This project also reminded me that practical AI applications do not always require massive complexity.&lt;/p&gt;

&lt;p&gt;Sometimes a focused workflow and a clean deployment pipeline are enough to create something genuinely useful.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>dify</category>
      <category>edgeone</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
