dsh-anic:把 AI 原生迭代流程沉成可观测工作流的 DSH 插件

前言

用 DSH 跑迭代流程时,常见的问题是流程“写在纸面上、跑在脑子里”:门禁有没有过、流程停在哪个 phase、模型实际看到了哪些工具和技能、人工介入队列里压了什么,都只能靠日志里翻。事后复盘时,调用与产物更是对不上——没有稳定的 join key,白盒只剩黑盒。

dsh-anic(ANIC,AI-Native Iteration Cycle)就是冲着这个去的:把一整套迭代流程(M1..M11 里程碑 + R3 流程状态机)做成可独立安装的 DSH 插件,提供白盒面板、门禁账本、流程状态机和内联技能。插件定位是通用插件,不预设具体项目形态;它的第一个验证场是本仓库自身。

这是什么

  • 名称:dsh-anic,维护者 xuanyuanchumo。
  • 性质:AI-Native Iteration Cycle 的插件化独立工程。仓库自述这是把原本以技能形式存在的 ANIC(.dsh/skills/ai-native-iteration-cycle/)拆成宿主插件,可行性研究、需求分析、架构与里程碑见 docs/anic/。
  • 定位:通用工作流可视化与门禁插件(分类:工作流),零项目假设;本仓库只是第一个验证场,快照数据取自本仓库真实的 .cycles/,但生成器只读结构化字段,不解析自由文本(README 记为 INV-21 合规)。
  • 许可与依赖:package.json 标注 MIT,engines.node: ">=22.19",engines.dsh: ">=0.2.0-rc.2 <0.3.0-0 || >=0.3.0-rc.1 <0.4.0-0",并声明 peerDependencies: @deepseek-ai/dsh。目录页标注星标 0,属于早期个人项目形态。

核心能力

1、白盒面板。 插件注册会话页顶层 ANIC 标签,面板包含六块:工作流图、实时调用流、自主级仪表带、技能健康、门禁账本、HITL(人的介入)队列。工作流图不是静态示意图,节点健康度会把 testReport 的通过/失败/错误投影进图,边类型用图例区分。

2、流程状态机与门禁。 插件承载 M1..M11 里程碑与 R3 流程状态机,配置了门禁(gate)与流程归属矩阵,路由面提供 GET /anic/api/flows/matrix(流程归属矩阵)、GET /anic/api/flows/lifecycle(生命周期指标)、GET /anic/api/flows/view(有界视图读数)等出口。

3、策划工具面。 提供 24 个 anic_* LLM 工具,覆盖评估、门禁、自举、跨项目自举(anic_bootstrap_other)、流程状态机操作、技能网关、完整性修复、自主级升级、热重载(anic_reload_self),以及 2 个渐进式披露加载器 anic_tool_detail / anic_tools_search。

4、HTTP 路由面。 注册 77 个路由,按 data / cycle / review / evolution / governance / self 六域分区,并带 flows / native / truth-audit / dual / skill 等域扩展。几个值得留意的出口:

POST /anic/api/reload                              # cycle-80 热重载
GET  /anic/api/config  |  POST /anic/api/config    # cycle-82 配置与路径
POST /anic/api/config/paths                        # cycle-83 路径覆盖
POST /anic/api/config/rollback                     # 备份回滚
GET  /anic/api/closure-audit                       # cycle-72 闭环体检
POST /anic/self/bootstrap-other                    # cycle-89 跨项目自举
POST /anic/api/tech-debt/triage                    # 技术债分诊
GET  /anic/api/disclosure                          # cycle-93/109 披露读数
GET  /anic/skill/health                            # 技能库健康(含 library 段)
POST /anic/skill/install                           # 显式安装技能

5、流程可达性与开关解析态(cycle-91)。 工作流图补上可达性计算:依据 next: 顺序边做 Tarjan SCC 断环,判断宏观主线是否真的能推下去;开关不再只是配置项,而是解析出工作区/部署层的真实生效值,通过 GET /anic/api/flows/resolved 暴露给客户端。同一轮里 flow-tracker 改为 append-only 历史(统计样本不再被滚动淘汰截断),流程 reset 接上真实触发器,IDLE 从此可达。

6、信任态可取证(cycle-109)。 把两个容易“看起来没问题”的维度变成可查证的:
- 披露宿主侧裁决:对 ctx.tools.schemas(agent) 采一次,得到 verified / partial / unverified 三态,partial 再拆 leaked(越权暴露)与 missing(遮蔽过头/自锁),读数在 GET /anic/api/disclosure 的 hostVerifiedAgents 等字段;
- 技能可见性三态:注册不等于模型可见,回读 ctx.skills.snapshot() 得到 active / absent / unknown,unknown 不会谎报 absent,并贯通 frontmatter 的 disable-model-invocation / user-invocable 与 skills/change 计数。

7、自带自进化技能库。 assets/skills/ 是插件的操作知识库,含若干叶技能(git 分支 / GitHub PR / Gitee 镜像 / npm 发布 / CI-CD / Token-SSH / DSH 原生 API / superagent 模式)与元技能 skill-library-evolution;注册表 assets/skills/skills.index.json 是唯一事实源,插件按只读对账方式比对注册表与磁盘,六种 issue.kind 分流,出口在 GET /anic/skill/health 的 library 段和 anic_status 的 skillLibrary 字段。

安装与启用

安装命令取自 README 原文,DSH 需为 0.2.0-rc.2+ 或 0.3.0-rc.1+,网页端与桌面端均可:

# 方式一:从 GitHub 装(推荐,最新)
dsh plugin --profile <你的 profile> add github:xuanyuanchumo/dsh-anic
# 方式二:从 npm 装(版本可能滞后于 GitHub Release,见 CHANGELOG)
dsh plugin --profile <你的 profile> add dsh-anic
# 方式三:从 Release 的稳定 tarball 装(无 npm 账号也能装)
dsh plugin --profile <你的 profile> add https://github.com/xuanyuanchumo/dsh-anic/releases/latest/download/dsh-anic.tgz

安装后重启对应宿主(bundle 在启动时装载),会话页即出现 ANIC 顶层标签。宿主不满足 engines.dsh 范围时 pnpm 会先拒绝,不会走到运行期才报错。

首次使用时插件自动把内联技能(assets/skill/,含 SHA-256 安装清单)安装到工作区 .dsh/skills/ai-native-iteration-cycle/。如果需要显式控制,anic_install 工具与 POST /anic/skill/install 路由提供等价的安装 / 状态查询 / 损坏修复入口。

典型用法

1、装好插件、重载宿主后,切到会话页 ANIC 标签,默认只展开最近一次已完成调用(10 个分区收为 8 闭 2 开),另有「最近完成全貌卡」;折叠状态跨 tick 不弹回。

2、让流程跑一轮迭代:面板按工作流图展示本次调用的节点与边,节点详情里能看到测试报告行;门禁账本记录门禁结论,需要人处理的进 HITL 队列。若想知道宏观主线是否真的能走通,打开可达性读数与 GET /anic/api/flows/resolved,核对开关在真实生效层的取值。

3、排查“模型其实没看到某工具/技能”这类信任问题时,看 GET /anic/api/disclosure 的三态读数和 GET /anic/skill/health 的 library 段,而不是凭 frontmatter 推断。

不用 DSH 宿主时,插件也提供技能-only 分发,一条命令把技能装进项目(Claude Code / Codex / 任意 MCP 客户端均可用):

npx dsh-anic init <project-dir> --name "<项目名>" [--framework claude|codex] [--dry-run]

这条命令只做两件事:把 assets/skill/ 的 69 个文件写入 <project-dir>/.dsh/skills/ai-native-iteration-cycle/(与插件内 anic_install 同构落点,含幂等与版本锚点检测),以及脚手架 .cycles/ 工作流骨架。之后让模型读 SKILL.md,或把 scripts/mcp-server.mjs(15 个工具)注册为 MCP server。零依赖,--dry-run 只打印不写盘,适合先体检再落盘。

适用场景与注意

适合的场景:已经在用 DSH 跑多步迭代流程,想把流程流向、门禁结论、模型可见面、HITL 队列摆到明面上,并且希望这些读数来自运行时而非事后日志;或者想把 ANIC 的技能包拿到非 DSH 的 MCP 客户端里用。

需要注意:

  • 插件以当前 dsh 进程权限运行,路由、技能写盘、自举、跨项目操作都落在这个权限面内。安装前先读一遍源码,确认 77 个路由和 anic_* 工具的权限范围符合预期。
  • 许可为 MIT,作者 xuanyuanchumo,星标 0 说明验证主要来自维护者自身仓库(.cycles/ 快照即来自该仓库),外部项目上的兼容性未做声明。
  • README 自身区分了已验证与未收敛的部分:例如白盒四元组里「流程流向」与「运行产物」仍缺少稳定的 join key(调用与 cycle/phase/门禁之间),自举是否收敛也没有宣称。选型时把这点当作已知边界。
  • 版本口径以 package.json 为准(当前抓取为 0.61.0),README 的形态叙述标注到 cycle-71 / v0.40.0 时点,两处粒度不同,引用时注意区分。

小结

dsh-anic 的价值不在于又多了一个流程脚本,而是把迭代流程的状态变成了运行时可查、面板里可见、路由里可取的读数:门禁账本对得拢,工作流图断得了环,开关解析态看得见,披露与技能可见性分得开。如果团队已经有 DSH 宿主,按上面任一命令装上、重启,从 ANIC 标签开始走一轮即可判断是否合用。

目录页与源码:https://www.skillhub.cn/plugins/xuanyuanchumo/dsh-anic ,https://github.com/xuanyuanchumo/dsh-anic 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜