# StyloAgential Workflow:我如何构建和管理大型的 (和HUGEMS K2系统使用代码LLM {(}Part @1)

<!-- category -- AI,Architecture,LLM,Agents,StyloAgent,Patterns -->
<datetime class="hidden">2026-07-18T16:00</datetime>

*这是两个“:”中的问题和StyloAgent model\.的一部分。 [《工作流实践》](https://www.mostlylucid.net/blog/styloagent-workflow-part2) 使用该选项@. @ @ @ info*

**代码生成不久前不再是问题了 @.@** 模型写好代码@.}它们遵循文档中的常规, 它们正在编辑 @,}如果你在失败的测试中指向它们... ...它们通常会修正它...

不工作的部分是记忆@. @%

> 瓶颈已不再是 @"@ can the model write the code ?"}这是#"_does 写代码的东西 记住为什么这个系统就是这样吗?%?"}

每个新的会话 都开始对系统一无所知 它即将改变它 [Stylo. 蝙蝠侠](https://stylo.bot) 这是两个仓库,} 仪表板上的风险带是在阅读时生成的, 而且从未缓存过 □,} 确切地说有一个数据库连接工厂 SQLite 商店绝对不能在 Postgres-write 與PostgresMPK3}一起 。 这些都不在正在编辑的文件里。

这是关于我为停止支付成本而建造的工作流程 我称之为StyloAgent@,}这是建立和运行 Stylo @._Bot today.的舰队

[![最近释放](https://img.shields.io/github/v/release/scottgal/styloagent)](https://github.com/scottgal/styloagent/releases)

[TOC]

---


## 核心问题=:建筑漂移

Stylo.Bot'S检测引擎不是普通的 ASPMS K2NET CROUD AP}. 它运行在EphemeralMS `SignalSink` 每个请求是黑板@ , @ 单 `ScheduleCoordinator` }μK1cccroid ,§ 校正琌刚弄 而不是缓存. ê贺琌玻珇俱翴 . 琵ウ眖所观测到的行为中吸取教训 而不是匹配静态列表MS K5

代码LLM并不想建立它所看到的东西 它想要在它的训练数据中 造出100万次

.+NET反射 MS K2+PLAIN CRUD3+|+Stylo}.+BOT='计划模式
|---|---|
# |A# `BackgroundService` 每个定期工作 @ |% 1 `ScheduleCoordinator` 发射滴答信号 @|
# |A# `ConcurrentDictionary` 用于存储@ | @ atoms hold state;}没有在 MS K2 memory 持久性 {|}\ MPK3{
# |A# `switch` 绘制一个字符串到分类@| @ nearest @ -_centroid叙级@ MS K2}漂移 @ I,_ Leiden @ |
| 缓存位置的计算值 @| 在读取@( computute\ MS K3 at}-read) |
光着身子 `DbContext` @|_州立大學 住在引擎裡 #,}讀取於接合機上 *|* *
{\fn方正黑体简体\fs18\b1\bord `ILogger` 以检查发生的事情,@| 信号宣布+; 讯号Sink是黑板 @|

左侧的每个单元格都是教科书 ASP.NET, 在正常的 AppMS K1} 右侧的每一个单元格对 Stylo.Bot.} `CLAUDE.md` 明确说: @, 明确的@:/ centroids not rules *, 没有背景服务使用调度员{,}没有在_-memory商店}, 没有任何缓存有利于新鲜性 比地区=, 信号和原子不是 ASP>.NET 规范\□.}

它没有抱住. `CLAUDE.md` 每个会话中都是新加载的, 和每个会话,每会话都与模型竞争 's priors and loses . 模式返回到其培训数据的平均值@, 即 CROUD}.

**这个重整工作周的费用是多少?** 没有一个戏剧性失灵 一个缓慢的流血 `BackgroundService` 返回到一个协调员的选项@, @ a `ConcurrentDictionary` 静悄悄地成为寄生虫商店 `switch` 语句在会话后被转换回一个 procilmology lookup@, @% 此错误从来不是点@ .。 该偏移就是点@ .} A per-repo 指令文件是检索Q,, 而检索不够充分 *: 这个代理拥有它前面的规则=,不理解为什么时间形状重要\ MS K8 并且反正侵蚀了它{.}

不是" 代理商不能满足 ' @ t代码% "}但代理商可以维持架构 *'t 没有更大的指令文件固定了它*._给建筑主一个拥有者做了".\}

---


## 这件事的大小

缩放没有导致漂移 *% .* 它乘以 * .* 

Stylo,Bot 不是玩具 . 它是一个博托MS K2 检测平台 @:}一个FOSS探测引擎 通过YARP网关来连接网络应用程序

诚实地计数@: @%

- Stylo.Bot :FOSS探测引擎和商业层的两个主要仓库*.
- 大约20个-+5个项目 在商业回收范围内
- 我自己的 Nuget 软件包中有许多产品共享@: [`Mostlylucid.Ephemeral`](https://github.com/scottgal/mostlylucid.ephemeral) -=YTET -伊甸园字幕组=- 翻译: [`StyloExtract`](https://github.com/scottgal/styloextract), [`StyloFlow`](https://github.com/scottgal/styloflow), [`StyloIssues`](https://github.com/scottgal/styloissues), [清晰度](https://github.com/scottgal/lucidview).
- 基础设施“:+Helm taggs” “,+”一个缩微胶片“MS K2Qs clocation@,+” 一个秘密商店“MSSK4+”集装箱注册簿“.+”
- 一个行销网站 运行检查和嵌入真实的仪表板

每一个浮点都是表面,漂流会渗入,。 一个新鲜的剂必须对所有它们都保持同样的时空纪律 . 将单一的探测接缝切入网关\ , 商业插件MS K3 仪表板投影+, 和部署管道{. 写着改变从来都不是最困难的部分}保持建筑稳定 同时使结构固定在任何地方 □,

---


## 单一超级神话 @-_Agent

产业界不断达成相同的答案 @:给代理商更多上下文@. Bigger window @MS K2 million_-token 提示#.RAG 将正确的文件拉到实时系统\. MCP+.记忆层,以总结和重放过去的会话 *.}

**所有这些改进了检索@.}它们都无法增进理解 @.**

Retreival 找到相关的文件@. @ access understand 知道为什么这个文件是这样的 它会保护什么?

观察在Stylo@._Bot @:}的冷剂启动。

1. 用于探测管道的Greps.
2. 它读了管弦乐队 .
3. 判决有三条轴,
4. 它注意到商业插件通过依赖注射取代FOSS接缝@.

30分钟后,它知道可以做一个“-line change”\. 然后会话结束,所有东西都蒸发了 下一个会话支付相同的30分钟 “.}大上下文窗口让每个重新发现更便宜"MS K4" 它不会使重新发现的没有必要\."

更聪明的搜索是错误的修复@. @ 搜索本身必须停止发生 @ . @

---


## 人类如何实际构建软件

没有一位工程师能理解整个企业系统 @. 真正的公司里没有人拥有支付量@, auth}, 数据管道, 以及他们的头部前端同时完全解析\. 这不是一个失败的#. 这就是大型系统是如何建造的_.

团队将系统分解为域, 并在每个域设置一名专家@. 付款人拥有支付权 @. 他们知道历史_, 尖锐边缘}两年前的决定

**拥有权比百科全书知识更重要** 专家不需要知道一切 他们需要深入了解他们的领域

使分解的系统保持一致性的是通讯@.}支付者在更改符号格式前与被认证人交谈.}拉动请求跨越边界,而该边界的所有者在.}_BARBAR_该结构始终一致不是因为一个人持有全部的#,}而不是因为持片的人彼此交谈>.}

这是每个真正的团队如何操作 .Q代码代理 以相反的方式运行

---


## 我的问题不同了

在一个小的App.中,漂移将是一种烦恼。 在我拥有的一个系统里,它是一个腐蚀性{,}因为它们不是一个系统_. 它们都是单独的产品\, 在不同的仓库里}♪, 通过我拥有的软件包来互相喂养

基质是 `Mostlylucid.Ephemeral`我自己的NuGet软件包 @:}执行原始和数据流 检测引擎建在#.+Stylo@.+Bot上面 `StyloExtract` 用于布局@ - @ finger 打印匹配 @ ,} `StyloFlow` -驱动的工作流程和许可 `StyloIssues` 这篇文章中的舰队是建在我的包件上, 也由我的包件“:”和“SlearnVIEW”组成。 [`Mostlylucid.Avalonia.UITesting`](https://github.com/scottgal/lucidRESUME) 我用工具“,”构建产品,

这是真正的狗食 ,,它是什么使漂移危险\NSK1 一个新鲜的剂 `BackgroundService` 或 a/ `ConcurrentDictionary` 它正在腐蚀一个包 每一个这些产品都站在. 在一个储存库中的漂移船和在两个保存库的表面

**一个漂流原始的 . 每个产品都以它为基础**

在这种规模中,编码从来都不是最困难的部分 . 保持建筑结构不受不断回归的影响 是,

---


## 所有权*,非上下文

上下文为错误的轴 @ .} 使用会议次数的成本比例 * MS K1} 不代表窗口大小@ ,} 因此更大的窗口会损失到一个更长的时间@ I- living project

> 问题不是#"}我如何给一个代理更多上下文?

将知识装入窗口并随着視窗@ . @ 给予专家它, 它会往前传送\ MS K1} 检测专家不会每次会话都重新加载探测结构@ I. 它已经拥有它的@ O,{ 并且它从上次的作品开始\ , 因为上一次它把它写成自己而不是别人的概要=.}

然后,一个课程付费来扩展这个系统。 “,”不是重新“-”、“Derive it@. ” 这是每天早上新雇用的员工,而是一个团队,人们在那里保留自己的工作 ‘.’

---


## Stylo 代理模型

StyloAgent 将结构转换为运行进程 @ . @ the parts {:}

- **概览概览概览** 建筑师兼协调员`overview-`它拥有三份活文件“(spec,架构” “, 名册’), 仲裁范围争议” “, 和加入工作的路线'.}它不从事域内工作本身‘.
- **专家专家** :#域所有者 @._% `foss-` 拥有检测引擎@. @% `deploy-` 拥有这栋建筑 -to @-_stabaking @MS K2}to@-producation production_. `mae-` B. 成员国和电子商务 `dash-` 和 `edit-` 自己的仪表板读写路径@. @ `prod-` 自己的平台安全@. @% `test-` 拥有套件@. @ 每一个都有文件 @ ,} 而不是任务@ MS K2
- **信息总库** : @ a git-}后背@ MS K2}文件 *-\% file 用 `inbox`, `outbox`, `archive`,和 `saved-context`. 信件带有优先级和表面 在代理@'s 翻转边界 @.}
- **体液补充和脱水** “: ”每个代理都保留着一个活的上下文文档“. ”当它停下来时,它会脱水;当它唤醒后,它还会再补充水合物 \ . ”
- **工作空间** :FOSS repo 和作为单一工作空间的商业 repo注册
- **通信通讯通讯通讯** : 1 hard rules @. 停留在您的车道@. 在您不拥有的文件中打一个阻塞器, 您可以停止和留言 `overview-` 而不是与所有者对撞@. @%

![StyloAgent 驾驶舱:}代理商和左下方的讯号公交车站{, 中央可对接代理终端{MS K2和时间线 </> 文档</> 在右侧=.} 路由器面板上的 / Git @/}](/articleimages/styloagent-cockpit.png)

### 它实际上是什么

StyloAgent 是一个在 @. @NET @MS K2}和 Avalonia.}(每个专家都是真正的) `claude` PTY,}在驾驶舱中运行,有自己的终端, 自己的工作室 , 和它的上下文文档MS K3 驾驶舱是MCP服务器的东道主 代理商呼叫并挂勾插座报告他们的状态{. 产品本身由四个所有者}, 建造,而该结构与所有权图+:加倍。

```mermaid
flowchart TD
    operator([Human operator])
    subgraph SA["Styloagent cockpit"]
        cockpit[Cockpit Shell<br/>Avalonia + Dock]
        bus[Coordination and Fleet<br/>Channel, Mcp, Diagrams]
        session[Session and Terminal Runtime<br/>Sessions, Hooks, PTY]
        repo[Git and Document Library<br/>worktrees, Lucene search]
    end
    agents[Agent fleet<br/>claude specialists]
    fs[(Filesystem and Git<br/>durable trace + worktrees)]

    operator --> cockpit
    cockpit --> bus
    cockpit --> session
    cockpit --> repo
    bus --> session
    session -->|runs claude over a PTY| agents
    agents -->|MCP verbs| bus
    bus -->|reads and writes channel files| fs
    session -->|writes context doc on dehydrate| fs
    agents -->|commit in own worktree| fs

    style SA fill:none,stroke:#6b7280,stroke-width:1px
    style cockpit fill:none,stroke:#7c3aed,stroke-width:2px
    style bus fill:none,stroke:#d97706,stroke-width:2px
    style session fill:none,stroke:#2563eb,stroke-width:2px
    style repo fill:none,stroke:#16a34a,stroke-width:2px
    style agents fill:none,stroke:#6b7280,stroke-width:2px
    style fs fill:none,stroke:#16a34a,stroke-width:3px
    style operator fill:none,stroke:#6b7280,stroke-width:2px
```

**MCP是核心 .** 驾驶舱是 MCP 服务器的主机@,,专家要协调的一切工作都是 MCP 用一个工具呼叫来对抗它,}不是公约或文件 它希望另一个代理商会读@MS K2。动词集是协调层 @:}

- `send_message` / `check_inbox` :#路线工作并拉动它\,}优先级: MS K2_resoved{.}
- `spawn_agent` 店主拆散了新专家
- `claim` / `heartbeat` / `release` “:”序列访问共享环境@(an SSH host @,}一个部署目标#)}所以两个代理商不会相撞=.
- `dehydrate_agent` / `rehydrate_agent` 将专家停在公园里并修复它
- `wrap_up` @ :_ 测试@ MS K1} 合并 * , 清理已完成的分支 *.}
- `report_issue`, `architecture_impact`, `agent_color`, `list_fleet` @ :_ files a bluster ,} 预览一个设计更改, 在它降落前@ MS K2} 保留名册和 C4{ 在一个颜色方案上 @ MPK4}

在下面的文件“-drout 通道”是人们所说的“MS K1}不是机制‘.』的持久跟踪。 这个机制就是 MCP 服务器在转弯边界时向活代理发送一个服务机@.Git Worksets 给每个专家一棵孤立树,用“,”来承诺,但是MCP层使得他们成为一支舰队,而不是一套碰巧共享文件夹<.>的程序。

![活动时间线: 最新MS K1 每个代理机' 工具操作的首次种子 及其触摸到的文件, 生命周期和注意状态\ , 以及他们通过大巴发送的信息MSQ5](/articleimages/styloagent-timeline.png)

### 公交车如何实际运送

`send_message` 在频道中写入一个耐久的标记文件, 并以 @ - process@ MS K1} A 提供 `ChannelDeliveryCoordinator` 显示新文件的手表@, 保留一个已见集, 所以每条消息都会被发送一次 : @ , 将它传送到现场收件人@ MS K2 并掌上实际推进到送件服务@ I.

断开消息的硬中断如何不是一个 free @ -_ For@ MS K1}all MSSK2} 一则信件带有优先级@ I,, 而运行时间决定了该优先级进入发送模式@. 这是真实的 `DeliveryMode` 一个中断的梯子 @ : @

```csharp
public enum DeliveryMode
{
    Interrupt,       // send ESC to break the current turn, inject immediately
    NextPrompt,      // queue; inject when the agent next reaches idle
    Poll,            // not pushed; the agent checks on its own cadence
    Convenient,      // surfaced in the Bus HUD only
    Informational,   // never actioned or injected; shown as info
}
```

发送是空闲的@- @gated和在-{gleast-}once}MSSK3},确认为已观察到的侧面 <-_effect\}MS K5}这不是一个允诺*.}当前转弯的紧急消息破解 *%.}正常人等待下一个闲置的提示 这样它不会腐蚀代理商中"-siew}MSC9

### 如何强制执行所有权

在你的车道上停留不是荣誉制度 . 建筑有一台机器 - 可读投影 `ownership.yaml`,和a `OwnershipMap` 解析代理商前缀中拥有该代理商的 repo- relative path

```csharp
// most-specific glob wins, so a session- carve-out inside cockpit-'s
// src/Styloagent.App/** beats the broad glob
public string? OwnerOf(string? path) { /* ... */ }
```

A PreTooluse Gate 消耗了解答器并阻止代理商撰写文件, `overview-` 此地图与 C4 图表@ maggage @ .}相同的数据, 谁拥有什么和谁拥有哪一种源的强制执行图片 *%,}绝不要两张漂移副本*. *

### 活的-docs环圈

`overview-` 它的系统快速在铁路上运行。 在三层工作 : @- n下移, 不要跳过前端@.\ }

```mermaid
flowchart LR
    spec["spec.md<br/>what the system is"]
    shape["architecture.md<br/>C4 shape, owner-coloured"]
    fleet["proposed-agents.yaml<br/>who owns each component"]
    spec --> shape --> fleet
    fleet -.->|specialists report on the bus| spec

    style spec fill:none,stroke:#2563eb,stroke-width:2px
    style shape fill:none,stroke:#d97706,stroke-width:2px
    style fleet fill:none,stroke:#16a34a,stroke-width:2px
```

Spec 第一 : 系统是 @,} 在任何其它事情之前与人类达成一致 *. 然后形状为#: 单一的 C\4 元件图,其中每个元件都由预定所有者来颜色...". 之后机队=: 每个顶端的-级元件中建议一个代理@, 分享其组件*'s color. 作为专家学习真实系统并报告 busQ,} `overview-` 将结果折叠回到形状“,”的Spec,reMS K1derives中,并调整机队 “.}三份文件保持对设计的实时投影而不是衰变为虚构‘.’}

---


## 取代任务的专家

大多数代理工具创建工人@. 描述一个任务\ , 一个工人旋转起来 , 是不是它 @,失踪了\ I. 下一个任务是一个新的没有记忆的工人\ MPK5个专家从未积累 因为没有任何东西可以在\ NSK6中累积

StyloAgent创建专家 . `foss-` 这不是一个曾经触摸过检测引擎的工人。 它是一个探测引擎 '}所有者 -, * 而且它会一直保存着每关的所有者..."."这个区别不是化妆品・.* 这就是为什么舰队抓住了一个错误, 一个任务_-基地的工人会错过了\~.>

![舰队名册: 每种专家颜色MS K1 由前缀{, 编码,拥有子系统}, 与推荐的代理商](/articleimages/styloagent-roster.png)

已知机器人出现在仪表板上, 被评为非常高的风险@.。 很明显的动作\, 一个新鲜工人做的#,是重新调配产生风险带的投影, `foss-` 之所以没有这样做“,”是因为 `foss-` 它发现,只有在存有经核实的索赔状态的指纹时,风险波段针才与友好匹配;确定该状况的方法”=,} `UpdateClaimVerificationAsync`*,有 **生产中的零呼叫器**@._profession and remotioning the p投影不可能修好它#.}所以每个已知的机器人都认为非常危险

该诊断来自累积所有权 . `foss-` 已经绘制了管弦乐队的地图@,、判决作曲家 @,和先前会话中的索赔单}#. 这个错误在搜索时是隐形的,而且对拥有者来说显而易见\.

StyloAgent本身证明了这一点 . 工具由自己的舰队建立 `cockpit-` 拥有 Avalonia shell*, `bus-` 协调与交付 *,* `session-` 拥有PTYs和产卵状态机器 `repo-` 他们学到的艰难教训被写进他们的上下文中, 以至于他们永远不再阅读@.真正的碎片。 `session-`@'_s 自己的上下文文档@:}%

```
## HARD-WON DISCIPLINE (enforced this session, confirmed by overview-)
- Commit by explicit pathspec, atomically, in ONE command. The shared tree has ONE git
  index. A bare `git commit` after `git add` lets ANOTHER agent's concurrent commit sweep
  your staged files (it happened: my clipboard work landed mis-attributed in cockpit-'s 5e54207).
```

一个基于工作的任务“-”的工人在碰撞中撞击了该任务,下一个工人又再次撞击了它 “, ”因为没有任何东西能将教训传到前面去“MS K3 ” `session-` @, @understand why\ ,Q} 并编码了拼图作为谁的一部分。 这是执行任务和成为专家的区别。#.@

---


## 代替再回收的补液

寒冷的会话始于仪式@: @search the codebase_,}总结一下您找到什么#,}重建建筑...",\}试着记住上次发生的事

补液去除仪式@. 序列变为 @: 提醒专家\, 恢复状态#, 继续_.

州里每个专家的档案中都有一份生命 这是实际保存的背景 `foss-`@,# 轻巧修剪 #:#

```
# foss- saved context

## Repo state
- Branch: main. My fix commit: 9b849629 (NOT pushed) - the known-bots-VeryHigh fix.

## DONE this session
- known-bots-VeryHigh fix (9b849629) - overview APPROVED, shipped:
  ROOT: UpdateClaimVerificationAsync had ZERO prod callers (never wired). Every fp
  stayed 'unverified' -> known bots read VeryHigh. Redeploying #115 could never fix it.

## NEXT (open, in priority order)
1. overview follow-up: add a REAL end-to-end test through the REAL store, not a double.
2. RISK display Face 1 (still OPEN): risk band missing from dashboard LIST rows.

## Guardrails
- ANY prod fingerprint-DB op = staging-first + express human go.
- CF-IP caveat: if the gateway verifies the bot against CF egress not the real client IP,
  the latch never sets -> still VeryHigh.
```

新鲜 `foss-` 它知道最后一项承诺为什么存在 , - 什么仍然开放\ , 是什么,哪些护栏限制下一步行动\.\ no rediscovery,}因为专家为自己的未来自己写了这篇文章..."." 其中一条规则是严格规定它从来没有包含秘密值\ : 它只包含一个指针

这是一台真正的状态机器 @,}不是比喻@.}代理会话在四个州移动 `Unspawned`, `Live`, `Dehydrated`, `Exited`.

```mermaid
flowchart LR
    Unspawned[Unspawned] -->|spawn: PTY + launch prompt| Live[Live]
    Live -->|write context doc, stop PTY| Dehydrated[Dehydrated]
    Dehydrated -->|rehydrate: restore from context| Live
    Live -->|wrap up: test, merge, cleanup| Exited[Exited]

    style Unspawned fill:none,stroke:#6b7280,stroke-width:2px
    style Live fill:none,stroke:#16a34a,stroke-width:2px
    style Dehydrated fill:none,stroke:#d97706,stroke-width:2px
    style Exited fill:none,stroke:#6b7280,stroke-width:2px
```

“脱水”写下上下文文档, 并释放 PTY,。 所以停泊专家在睡梦中不花费任何费用, 而它又恢复了“再活” ,。 从第一个转弯起“. 包装” 是干净的出口@:} 驾驶舱运行着这个工程项目<'s 测试> @, 将工作树与主@MS K7 合并起来, 并且删除“ , ” 或由于一个失败, 它保持了工作樹, 并将问题归档到三重. 不取决于维持热度的上下文窗口吗? .} 记忆保存在磁盘“MS K11” 上, 国家机器读回Q.

---


## 继续到 {2} part

这就是问题所在, [《工作流实践》](https://www.mostlylucid.net/blog/styloagent-workflow-part2) 将舰队丢弃在不熟悉的系统上 在库库之间工作 为什么每个决定都来源于,

---


## 相关条款

- [为什么LLAL女士失败为感应器](https://www.mostlylucid.net/blog/llms-fail-as-sensors) - 使用概率合成器作为边界装置的类别错误@.
- [MCP 是一个运输机*,}不是建筑](https://www.mostlylucid.net/blog/mcp-is-a-transport-not-an-architecture) @-_#为什么建筑在协议之上存在?
- [{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2款](https://www.mostlylucid.net/blog/botdetection-part2-signature-pipeline-and-stylobot-architecture) 这支舰队制造和运行的探测引擎 .