代码工作流AI 是 AI Skill Hub 本期精选Agent工作流之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
代码工作流AI 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
代码工作流AI 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:npm 全局安装 npm install -g dvalincode # 方式二:npx 直接运行(无需安装) npx dvalincode --help # 方式三:项目依赖安装 npm install dvalincode # 方式四:从源码运行 git clone https://github.com/arthurpanhku/dvalincode cd dvalincode npm install npm start
# 命令行使用
dvalincode --help
# 基本用法
dvalincode [options] <input>
# Node.js 代码中使用
const dvalincode = require('dvalincode');
const result = await dvalincode.run(options);
console.log(result);
# dvalincode 配置说明 # 查看配置选项 dvalincode --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export DVALINCODE_CONFIG="/path/to/config.yml"
<p align="center"> <img src="assets/logo.png" alt="DvalinCode" width="480"> </p>
<p align="center"> <b>English</b> · <a href="README.zh-CN.md">中文</a> · <a href="https://dvalincode.dev">🌐 dvalincode.dev</a> </p>
<p align="center"> <a href="https://github.com/arthurpanhku/dvalincode/releases/latest"><img src="https://img.shields.io/github/v/release/arthurpanhku/dvalincode?style=for-the-badge&color=818cf8&label=Release" alt="Release"></a> <a href="https://github.com/arthurpanhku/dvalincode/releases"><img src="https://img.shields.io/github/downloads/arthurpanhku/dvalincode/total?style=for-the-badge&color=blue&label=Downloads" alt="Downloads"></a> <a href="#-tests"><img src="https://img.shields.io/badge/Tests-584%20%2F%20584%20%E2%9C%93-success?style=for-the-badge" alt="Tests"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License"></a> <a href="https://scorecard.dev/viewer/?uri=github.com/arthurpanhku/dvalincode"><img src="https://api.scorecard.dev/projects/github.com/arthurpanhku/dvalincode/badge" alt="OpenSSF Scorecard"></a> <a href="#-quick-install"><img src="https://img.shields.io/badge/Platforms-macOS%20·%20Windows%20·%20Linux-blue?style=for-the-badge" alt="Platforms"></a> <a href="#-providers"><img src="https://img.shields.io/badge/LLM-OpenAI%20·%20Claude%20·%20DeepSeek%20·%20Ollama%20·%20Groq-7C3AED?style=for-the-badge" alt="LLM Support"></a> <a href="README.zh-CN.md"><img src="https://img.shields.io/badge/i18n-EN%20·%20中文-orange?style=for-the-badge" alt="English / 中文"></a> </p>
<p align="center"> <b>Open security engineering for code written by humans and AI agents.</b><br> <b>Every repair carries its own proof.</b> </p>
When an agent fixes a security finding, someone has to decide whether the fix worked. Almost every tool asks the model that wrote it — which is the one question a model cannot answer against its own interest.
Dvalin decides instead, and hands you the proof. It re-scans, runs your project's own tests itself, and reads the exit codes from processes it started. Who wrote the repair — our agent, Claude Code, Codex, Copilot, a person — is recorded and never consulted. The result is a Verified Fix Record: a small JSON file anyone can re-check offline, on a laptop with no network and no Dvalin state.
dvalin verify-fix fix-record.json Fix record 2c9d71ac03e0 · VERIFIED · scan-and-checks
executor: claude-code (recorded, not consulted)
targets: 1 before · 0 remaining
coverage: complete → complete
introduced: 0 (gate high/new)
outcome: verified
✓ test: npm run test (exit 0)
audit: run verify-36509f42 @ 414644c75af0
That record says something narrow on purpose: these findings were gone, and these checks were observed to pass. It is not a claim that your code is safe, and Dvalin will not let it be read as one — every record carries what the scan actually covered, and a repair no check could confirm does not pass. The open profile →
A repair is a change, and a change can add as well as remove. So the record also carries what the re-scan saw that the first scan did not, and the gate threshold the verdict was reached under: a fix that removes an eval and introduces an SQL injection is recorded as regressed and does not verify. Neither does a record whose issuer never looked — introduced: not determined fails, because a verifier that skips the question must not score better than one that asks it and finds something.
Dvalin is the independent security runtime between code generation and merge. Humans, coding agents, and CI call the same versioned contract for discovery, remediation, and verification. It runs independently, or interoperates with specialist systems such as Codex Security through portable SARIF. Its built-in coding capability is a remediation executor — not the trust boundary, and not an attempt to compete with every general-purpose coding agent. See the security-agent strategy.
---
- Home unifies Chat and Cowork — the GUI now has a single Home workspace with read-only Ask and approval-gated Collaborate intents, while keeping the same project and conversation context. - Code is focused again — the old Security and Routines panels have been removed from Code so its sidebar is dedicated to projects and autonomous implementation. - Dvalin is a first-class workspace — orchestrate the built-in scanner plus installed Semgrep CE, Trivy, and OSV-Scanner; import SARIF; score and triage findings; persist remediation cases; and create isolated repair worktrees. - One flow from evidence to draft PR — selected findings can launch an evidence-backed Agent fix, run focused tests/typecheck/build and a fresh scan, review the diff, and explicitly publish a draft PR without automatic merge. - Agent loops converge sooner and cost less — investigation-before-edit and stall detection reduce repeated failed actions, general tool output is bounded, prompts remain append-only for cache reuse, and provider usage now accounts for cache hits/misses. - Provider and evaluation upgrades — native Anthropic prompt caching and cache accounting are supported, and the SWE-bench Docker harness reports official scores, policy violations, stalls, and token/cache metrics.
---
- Process narration no longer ends a task — responses such as “let me verify the file” are recognized as pending work, and the agent immediately continues with the promised action instead of treating them as a final answer. - Truncated responses automatically recover — provider finish reasons are preserved, so output cut off by a token limit triggers another model step. - Normal coding turns get room to finish — the per-turn action limit is now an emergency 100-action guard rather than a routine 15-action stopping point; stricter organization policy limits still take precedence. - Completion is explicit — Code mode is instructed to return a tool-free answer only after the requested work and focused validation are complete.
---
- Long coding turns keep going — Code mode now compacts context during an active tool loop, accounts for the full provider request when estimating tokens, and raises the default iteration checkpoint from 10 to 40. - Interruptions are resumable — completed tool state is persisted when a turn is interrupted or its connection closes, so a follow-up continue resumes from the actual workspace progress. - Visible, quieter agent activity — running sessions show a sidebar loading state, each response reports elapsed work time, and its Action timeline is available on click while raw Tool Calls stay collapsed by default. - GitHub workflows from Code mode — network-aware git and GitHub CLI (gh) operations now support pull, push, PR creation, and Actions/repository commands through the governed shell approval path. - Safer releases — package and CLI versions are synchronized, and prepublishOnly runs the build, typecheck, and test suite before publishing. - Simple tasks stay simple — the Action budget is enforced across the whole turn instead of resetting on every model iteration, and Code mode is prompted to take the shortest direct path and stop when focused validation passes.
---
- 🖥️ The native desktop app now works out of the box on macOS — DvalinCode.app opens a real dock window (WKWebView, no Electron) over the embedded engine. Two threading bugs that shipped in every earlier desktop build are fixed: the blocking webview loop no longer starves the embedded server (blank window), and the webview runs on the main thread as macOS requires (no window at all) — the server now lives in a child process of the same binary. - 📦 The one-line installer installs the app — on macOS, curl … install.sh | bash now also puts DvalinCode.app (with the DvalinCode icon) into /Applications, so the desktop window launches straight from Launchpad after a CLI install. Opt out with DVALINCODE_NO_APP=1; pin with DVALINCODE_GUI_VERSION. - ✅ Desktop is no longer "experimental" on macOS — the window and the embedded server are verified working; Windows and Linux desktop builds are cross-compiled and remain a preview.
<details> <summary>v0.9.0 — 🛡️ Secure remediation · Skills · CodeQL hardening</summary>
- 🛡️ Secure remediation workflow — run a built-in local scan or import SARIF from CodeQL, GitHub Code Scanning, Semgrep, and compatible scanners; findings become local remediation cases with source context, verification guidance, and isolated worktree repair tasks. - 📚 Skills — upload, download, inspect, and reuse local skill bundles. DvalinCode now ships built-in secure-code-scan and secure-code-remediation skills, plus agent tools for listing skills, reading instructions, scanning, listing remediation cases, and preparing remediation worktrees. - 🔐 CodeQL path hardening — user-controlled workspace, remediation, and skill paths now go through explicit root-containment checks, with regression tests covering traversal-safe resolution and skill import boundaries. - 🎨 App icons — dark and light theme application icons now ship with the web bundle and desktop build inputs.
</details>
<details> <summary>v0.8.0 — 🔒 Governance: controllable · transparent · auditable</summary>
dvalin.policy.json lets a company, not the developer, bound the agent: which modes, shell commands, file paths, tools, and models are allowed. Two layers (machine ~/.dvalincode/policy.json + repo) resolve by narrowing — a repo policy can only ever make the machine policy stricter, never widen it. With no policy file, behavior is identical to before. Enforced at a single chokepoint; every denial is an inline ⛔ Blocked by policy plus a policy_violation audit event. Policy reference →dvalincode trust — prints this install's live security posture in one command — active policy + source hashes, audit status, runtime, dependencies — so a reviewer can verify what the agent may and may not do directly, instead of taking claims on trust. --json for tooling.dvalincode policy check — validates dvalin.policy.json against the schema, prints the resolved policy + canonical hash (after narrowing with the machine layer), and exits non-zero on failure — for CI and policy authoring. Policy reference →run_start, so the tamper-evident log proves which rules were in force.</details>
<details> <summary>v0.7.0 — 🧪 Desktop app (beta)</summary>
dvalincode export / dvalincode import, or the Export / Import buttons in the GUI Settings panel.dvalincode session md <id>, or GET /api/sessions/:id/markdown.DvalinCode.app on macOS, plus Windows/Linux builds. Built with webview-bun using the OS-native webview (WKWebView / WebView2 / WebKitGTK) — no Electron, stays a small self-contained binary.dvalincode binary is now positioned purely as the CLI (terminal + serve).</details>
<details> <summary>v0.6.0 — terminal agent · <code>serve</code> · shared turn-runner</summary>
dvalincode bare for an interactive terminal coding agent, Claude-Code-style: streaming responses, inline [y/N] write approvals with red/green diffs, /mode · /clear · /git · /plan · /compact · /undo · /help, Ctrl-C to interrupt, and a guided first-run provider setup. Defaults to read-only Chat, switchable live.dvalincode serve — the web GUI now lives behind a command, so the same binary deploys headless on a server: dvalincode serve --host 0.0.0.0 --no-open.src/agent/session.ts), keeping them at feature parity.</details>
<details> <summary>v0.5.0 — security-grade audit trail · Run Report · theme switcher</summary>
- 🛡️ Security-grade audit trail — every Cowork/Code run writes a tamper-evident, hash-chained JSONL log to ~/.dvalincode/audit/ (run_start, every tool_call / file_* / shell_exec / approval, run_end). The hash chain makes any after-the-fact edit detectable. No local coding agent ships verifiable behavior logs. Format + threat model → - 📋 Run Report + dvalincode report CLI — a Markdown summary of each run (files read/changed, commands, decisions, test result), rendered as a collapsible card in the GUI and from the CLI:
dvalincode report --last # render the most recent run
dvalincode report <run-id> --format json
dvalincode report verify <run-id> # ✓ chain intact / ✗ broken at seq N
- 🎨 Theme switcher — choose dark / light / system in Settings. system follows your OS live; the choice persists across sessions.
</details>
<details> <summary>v0.4.0 — <code>/compact</code> · <code>dvalin.json</code> team playbook · self-contained binaries</summary>
/compact — LLM-based context compaction: replaces conversation history with a structured five-section summary (Goal / Completed / Decisions / Current State / Pending). A divider in the chat thread shows the token reduction (e.g. 8,412 → 1,203 tokens −85%).dvalin.json team playbook — commit a shared set of automation prompts to your repo. The sidebar loads them automatically and lets teammates run the same one-click routines without any manual setup. Export button converts your personal routines to dvalin.json in one click.bun --compile so the web UI is bundled alongside the server binary.</details>
<details> <summary>v0.3.0 — Mode-aware sidebar · one-line installer · multi-profile LLM config</summary>
localStorage.curl … | bash auto-detects your OS + arch, drops the binary into ~/.dvalincode/, and patches your PATH. No package manager dependencies.</details>
---
| Category | Feature | Notes |
|---|---|---|
| **Modes** | Home / Code / Dvalin | Home contains read-only Ask and approval-gated Collaborate; Code is focused autonomous development; Dvalin is the scan-to-fix security workspace |
| **Code permissions** | Ask Permissions / Plan Mode / Auto Mode / Bypass permissions | Verified behavior: Ask requests approval before writes/commands, Plan is read-only and does not write files, Auto runs operations automatically, Bypass runs without confirmation prompts |
| **Workspaces** | Open folder / Import Git / Add worktree | Cowork and Code can switch to a local folder, clone a Git project, or create a Git worktree from the UI |
| **Governance** | OpenSSF Scorecard / ISO 42001 AIMS alignment | Scorecard, CodeQL, Dependabot, pinned Actions, AI impact assessment, risk register, and review cadence are documented under docs/security/ and docs/governance/ |
| **Secure remediation** | Built-in + Semgrep CE + Trivy + OSV-Scanner / SARIF / cases / worktrees / tests / draft PR | Dvalin detects installed engines, normalizes SARIF, scores risk, persists cases, drives evidence-backed fixes, verifies changes, and publishes only after an explicit user action |
| **Skills** | Upload / download / built-in security skills | Skills live under ~/.dvalincode/skills; built-ins guide security scanning and remediation with dedicated agent tools. [Format →](docs/SKILLS.md) |
| **Composer** | @ file references | Type @ for a fuzzy file search; selected files get inlined into the prompt |
/ slash commands | /clear /compact /git /plan /undo /help | |
| Multiline + interrupt | <kbd>Shift</kbd>+<kbd>Enter</kbd> for newline, stop button to abort mid-stream | |
| **Tool UI** | Inline diffs | edit_file and write_file results render as red/green unified diff, default folded |
| Approval dialog with diff | Cowork mode shows the diff *before* the change is applied | |
| Live tool counter + token + cost | Topbar shows session totals in real time | |
| **Agent** | LLM-based context compaction | /compact summarises into Goal / Completed / Decisions / Pending |
| Persistent undo stack | /undo [N] reverses the last N tool calls | |
| Run Report | Markdown summary per run (files, commands, decisions, test result) — GUI card + dvalincode report | |
| Git awareness | Branch name in topbar; git_status tool; git context auto-injected into prompt | |
AGENTS.md project memory | Per-repo persistent instructions, auto-loaded each turn | |
| **Security** | Tamper-evident audit trail | Hash-chained JSONL per run in ~/.dvalincode/audit/; dvalincode report verify detects edits |
| macOS shell sandbox | sandbox-exec denies network; allows writes only inside cwd + /tmp | |
.dvalincodeignore | gitignore-style exclusion; blocks read_file / list_files / search_text | |
| Per-action approval | Approve/deny each write / delete / shell call in Cowork mode | |
| **Appearance** | Theme switcher | Dark / light / system, persisted; system follows the OS live |
| **Providers** | OpenAI-compatible endpoints | DeepSeek · OpenAI · Groq · OpenRouter · Ollama · custom |
| Multi-profile config | Save and switch between named (provider, model, API key) sets | |
| **Sessions** | Auto-save + restore | All sessions persisted to ~/.dvalincode/sessions/ as JSON |
| LLM summary memory | Cross-session summary keeps the agent oriented after restart | |
| **Memory** | Local user/project memory | Searchable facts, preferences, and decisions in ~/.dvalincode/memory/; import from Claude/Hermes/Markdown |
| **Data portability** | Export / import all data | One bundle of memory + sessions + config + audit — dvalincode export / import, or GUI Settings → Export / Import |
| Markdown transcript | Download any conversation as Markdown — sidebar download icon, dvalincode session md <id>, or /api/sessions/:id/markdown |
---
```sh npx dvalincode security scan .
That is the whole thing. It runs the built-in rules for injection, hardcoded
secrets, XSS, `eval`, and unsafe shell use against the current directory and
prints what it found. No account, no model, no config, no code leaves your
machine. The default policy runs only Dvalin Built-in, so the first scan always
works. Add optional engines explicitly, or inspect their fixed install commands:
sh dvalin scanners list dvalin scanners install semgrep # review the command dvalin scanners install semgrep --yes # execute it under Dvalin policy
For an incremental “no new high-risk findings” gate, commit the policy and
baseline with the repository:
sh dvalin init dvalin baseline dvalin scan ```
This creates dvalin.security.json and .dvalin/baseline.json. Suppressions require a reason and may have an owner and expiry date. Scan output is a versioned envelope with a deterministic gate result and a resumable workflow ID.
```yaml
Terminal (default): run dvalincode. On first launch it walks you through a one-time provider setup (pick a provider, paste your API key, choose a model) and saves it to ~/.dvalincode/config.json. Then you're at the prompt — type to chat, /mode to switch between Chat / Cowork / Code / Dvalin, /help for commands. In the GUI, Chat and Cowork are grouped under Home.
Web GUI: run dvalincode serve and:
http://localhost:3000 and your browser opens automatically.fast, cheap, local-ollama) to switch quickly later.Both share the same config and sessions in ~/.dvalincode/.
---
Requires Bun (curl -fsSL https://bun.sh/install | bash).
git clone https://github.com/arthurpanhku/dvalincode
cd dvalincode
npm install
npm run dev:all # start backend (3001) + Vite (5173)
Build release binaries for every platform:
bash scripts/build-release.sh # → release/ with tar.gz / zip + SHA256SUMS.txt
bash scripts/build-release.sh darwin # macOS only
bash scripts/build-release.sh windows # Windows only
Before publishing a release:
(cd release && shasum -a 256 -c SHA256SUMS.txt)
unzip -l release/dvalincode-v*-windows-x64.zip | grep 'web/dist/index.html'
tar tzf release/dvalincode-v*-macos-arm64.tar.gz | grep 'DvalinCode.app/Contents/Resources/AppIcon.icns'
Windows smoke test: unzip dvalincode-v*-windows-x64.zip on Windows and run start.bat from the extracted folder. The server should open http://localhost:3000. If it reports an ENOENT path under B:\~BUN\root\web\dist, the compiled Bun virtual path detection has regressed; the packaged binary must resolve `w
permissions: contents: read security-events: write steps: - uses: actions/checkout@v5 with: fetch-depth: 0 # so the scan can reach the base commit - uses: arthurpanhku/dvalincode@v0.18.0 with: fail-on: high diff: true # only report on what this PR changed ```
Findings land inline on the pull request diff and in your Security tab. No API key, no secrets, no model — the scan is deterministic and local to the runner. Full example →
diff: true reports only on lines the pull request changed, so the gate blocks what this change adds instead of everything the repository already carried. That is what makes the check adoptable on a codebase that was not clean to begin with. Drop it to scan the whole repository.
Every comment states what the scan covered — complete, partial, or unknown — beside the result, because "no findings" from a run where half the engines were missing is not the same answer as "no findings" from a complete one.
Code written with an AI assistant passes through four sets of hands before it merges: the agent that writes it, the editor the developer reads it back in, the pull request that gates it, and the reviewer who has to believe the result. A security answer that exists in only one of those places is not a gate — it is a suggestion the next stage is free to ignore.
Dvalin is one MCP server and one deterministic scan behind all four, so the answer does not change depending on who asks it.
| Stage of the loop | Where you are | How Dvalin gets there | Status |
|---|---|---|---|
| **Writing the code** | Claude Code | [dual plugin](integrations/dvalin-security/) · claude mcp add · mcp-install claude-code | ✅ session verified |
| Codex | [dual plugin](integrations/dvalin-security/) · codex mcp add · [SARIF interop](integrations/codex-security/) | ✅ session verified · capture pending | |
| Cursor | dvalincode mcp-install cursor | ⚙️ config verified | |
| Windsurf · Zed | stdio MCP through their own settings | ⚙️ documented, unverified | |
| Any MCP client | registry io.github.arthurpanhku/dvalincode | ⚙️ published | |
| **Reading it back** | VS Code | mcp-install vscode · [extension](editors/vscode/) for Problems, coverage and gate status | ✅ editor verified |
| **Gating the merge** | GitHub Actions | [Marketplace action](https://github.com/marketplace/actions/dvalin-security-scan) — findings on the diff, fix records re-derived on the runner | ✅ runs on this repository's own CI |
| Any CI | dvalin scan . --fail-on high, SARIF out for code scanning | ✅ the exit code is the contract | |
| **Believing the result** | anyone, offline | dvalin verify-fix record.json | ✅ no workspace, no network, no Dvalin state |
✅ means a real client was driven end to end and the tool call was observed. ⚙️ means the configuration is generated and its shape is tested, but no session has been captured. The difference is not smoothed over here, because a config file that loads is not evidence that a tool was ever called.
高质量的开源AI工作流项目,值得关注
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,代码工作流AI 在Agent工作流赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | dvalincode |
| 原始描述 | 开源AI工作流:Local-first CLI agent for coding workflows. Provider-neutral, zero runtime deps,。⭐9 · TypeScript |
| Topics | aiclitypescript工作流 |
| GitHub | https://github.com/arthurpanhku/dvalincode |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-06-24 · 更新时间:2026-06-26 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端