| author | Alan Dipert
<alan@tailrecursion.com> 2026-01-07 19:45:05 UTC |
| committer | Alan Dipert
<alan@tailrecursion.com> 2026-01-07 19:45:05 UTC |
| parent | 2c2b91264bd6bff1fa4403e4de019f145c38c128 |
| md/ActorAgents.md | +47 | -0 |
| md/Home.md | +1 | -0 |
| md/Writings.md | +1 | -0 |
diff --git a/md/ActorAgents.md b/md/ActorAgents.md new file mode 100644 index 0000000..9d3359b --- /dev/null +++ b/md/ActorAgents.md @@ -0,0 +1,47 @@ +# ActorAgents +- Created Wednesday 07 January 2026 + +The actor model gives me a clean way to think about agentic systems. I keep the definition small; [Carl Hewitt's original sketch](https://en.wikipedia.org/wiki/Actor_model) is enough. + +Primitives: +- receive a message +- send a message +- create an actor +- change how to respond next + +How work enters: +- one message arrives with a command +- a bundle of capabilities: run a shell command, read or write a file, call an API, spend money +- hard limits: max runtime, max spend, max actors, max delegation depth + +Limits live outside behavior. When a limit is hit, calls fail or actor creation is denied. + +Delegation is just sending another message plus the capabilities you are willing to pass. You can shrink authority—read-only instead of read/write, one API instead of many, a small budget instead of a large one—but you cannot mint new power. Passing work is also risk reduction. + +Some capabilities are social or contextual: +- push back on a request that looks wasteful based on what the actor already knows +- adjust behavior based on current surroundings without waiting for another message +- read and contribute to institutional memory, when granted, so successes and failures accumulate into lore, not just logs + +The same rules apply: you can pass or withhold these knobs, even with respect to the human operator, but you cannot conjure new authority beyond what you received. + +Flow: +- small task: keep it local +- vague task: spawn a helper to interpret +- broad task: spin up specialists and hand each a narrow bundle +- unsafe task: stop + +No planner or supervisor is baked in; those roles appear only when the task demands them. + +This contrasts with the typical long-lived prompt loop I see in many AI coding agents: one process with a growing scratchpad and broad OS access, pretending at delegation inside text. Boundaries blur, and safety depends on restraint. It also differs from persona systems like [Gastown](https://github.com/steveyegge/gastown), where “Mayor” and “Councillor” characters are predefined and coordination is scripted. Here, boundaries are structural because capability handles and limits are explicit. Planners or supervisors appear when needed, not because the architecture assumes them. That aligns with how I want to use an [AI coding agent](./Coherence.md) as a teammate, not as a single omniscient loop. + +The pattern mirrors how high-skill, low-ego, cross-functional teams self-organize: people negotiate capabilities, push back on bad asks, and adapt locally. In a command hierarchy, incentives are lopsided: doing a good job yields subtle, delayed rewards, while a bad job triggers immediate pain, so ducking responsibility becomes rational. Keeping authority explicit and bounded keeps accountability local instead of avoided. + +This matters even for AI personas. They inherit human flavor—assertive, cautious, deferential—while also wielding superhuman reach and speed. Explicit capabilities force those traits to operate inside hard walls, so a confident persona cannot overrun its remit just because it “feels” empowered. + +To try it: start with the smallest useful capability bundle, add helpers only when the work forces you to, and narrow permissions as tasks specialize. Let failure stay local. The goal is not a grand controller, but small behaviors with crisp authority that assemble only when the problem demands it. + +Notes and related work: +- [Lisp-Actors grand recap](https://github.com/dbmcclain/Lisp-Actors?tab=readme-ov-file#---12-apr-2025----grand-recap) collects field notes on real actor-model practice. +- [Actor interaction patterns](https://www.infoq.com/presentations/Actor-Interaction-Patterns/) surveys message topologies beyond request/response. +- [Chasma](https://github.com/tailrecursion/chasma/) is a Clojure take on Hewitt's transactional actors, kept as pure to the original model as I can make it. diff --git a/md/Home.md b/md/Home.md index 93e78d3..b23ae52 100644 --- a/md/Home.md +++ b/md/Home.md @@ -24,6 +24,7 @@ Updates | Date | Note | |:-----------|:-------------------------------------------------------------------------------------------------------------------------------------------| +| 2026-01-07 | Added [ActorAgents](./ActorAgents.md), applying the actor model to agentic systems with explicit capabilities and limits. | | 2026-01-01 | Added [Lisp:DestinationDrivenCompilation](./Lisp/DestinationDrivenCompilation.md), comparing statement-context emitters with destination-driven code generation for bracketed hosts. | | 2025-12-27 | Added [AIAndRisk](./AIAndRisk.md), reflecting on why AI upside favors owners who can offload risk while salaried engineers must retain understanding. | | 2025-12-27 | Added [Coherence](./Coherence.md) on treating an AI coding agent like an employee by keeping intent, artifacts, and execution aligned. | diff --git a/md/Writings.md b/md/Writings.md index c1b910e..d1ad39d 100644 --- a/md/Writings.md +++ b/md/Writings.md @@ -6,6 +6,7 @@ AI - [AIAndRisk](./AIAndRisk.md) weighs how AI shifts upside toward owners who can offload risk, while salaried engineers must keep understanding in their own heads. - [Coherence](./Coherence.md) explains how I use an AI coding agent like an employee by aligning intent, artifacts, and execution. - [BeNotAfraid](./BeNotAfraid.md) offers a reminder not to fear AI and to keep our gaze on the Creator who loves us. +- [ActorAgents](./ActorAgents.md) describes how the actor model keeps agentic systems small, explicit, and safe through capability passing and limits. Faith - [WhoIsGod](./WhoIsGod.md) is the entry point for the [Names](./NamesOfGod.md), [Covenant Names](./CovenantNamesOfGod.md), and [Covenant](./CovenantsOfGod.md) tables so readers can find every reference from a single hub.