---
title: "Cetas"
description: "运行在你终端、编辑器与脚本里的编码 agent——一个 agent、一份配置、同一个身份，单机设计，没有云同步。"
---

> Documentation Index
> Fetch the complete documentation index at: https://colmugx.github.io/cetas/llms.txt
> Use this file to discover all available pages before exploring further.

# Cetas

Cetas 是跑在你自己机器上的编码 agent。你用自然语言说话，它读文件、改代码、搜仓库、执行命令，边做边把过程摊开给你看。它构建于 [Posoco](https://github.com/colmugx/posoco) —— 一个面向 MoonBit 的 agent 框架。

它是单机设计。看板、会话、配置、凭据，全部落在你机器的一个 home 目录里；没有云同步，也没有共享会话。一个人用就是完整的。

## 为什么采用它

引入一个编码 agent，最先要验证的往往不是它多聪明，而是它干过的活你能不能查。下面四条，装完就能亲手验证。

干过的活查得到出处：把一句需求建成一张任务图，依赖没跑完的任务安静等着，跑完的停在验收门口等你点头，你看的是 diff 和测试证据，不是它的转述。记录落在本地，你的 agent 自己也查得到——半个月后问它"这段代码为什么存在"，它答得上来；这些任务和记录，就是交接文档。见[Board](/cetas/features/board/)。

让 agent 评审自己的改动，"只报告别修改"全靠口头嘱咐。子代理把这句话变成配置：工具面和权限档位写在它的定义文件里，看不见 `write`，跑不了 `bash`，父会话开 `yolo` 也越不了权。让它调研三个模块也是同一条路——三个子会话同时读，主窗口只收三份摘要。见[子代理](/cetas/features/subagents/)。

40 个文件里找 3 处引用，逐条读就是付 40 次的钱。换成让模型写一小段程序去循环、过滤，只把那 3 处带回对话——那些内容从头到尾没产生过，也就没产生过费用。程序跑在 Wasm 沙箱里，文件系统和网络都碰不到。见[Bunraku](/cetas/features/bunraku/)。

人和 agent 读的是同一份文档：全站有 `llms.txt` 和 `llms-full.txt`，每个文档页带 `.md` 源文件。让另一个 agent 先读完这套文档再决定装不装，是受支持的使用方式。

基础能力也都齐备：权限有五档姿态，会话每轮落盘、`/rewind` 精确回退，全部状态在一个 home 目录，选模型之前先看见哪家有额度、哪个更划算。这些在[特色功能](/cetas/features/)与[配置](/cetas/configuration/)里各有其页，这里不再展开。

## 三种入口、两种终端实现

| 入口 | 适合什么 | 怎么装 |
| --- | --- | --- |
| **终端 · JS（首选）** | 日常交互、会话回退、JS 专属功能 | npm 的 `cetas` |
| **终端 · Native（第二选择）** | 不需要 Node.js 的 Go/Bubble Tea 终端，功能范围有所不同 | Homebrew、Scoop 或发布文件 |
| **编辑器** | 在代码已经在的地方工作，走 ACP | `cetas-acp` |
| **自动化** | 一次调用一个任务，脚本或 CI | `cetas-run` |

这些入口不是分叉的 Agent 内核：它们组合同一个 Cetas/Posoco，但 UI 和宿主能力不同，JS 与 Native 终端不保证完全互换。详见[入口（Surfaces）](/cetas/concepts/surfaces/)。

从[安装与首次运行](/cetas/getting-started/installation/)开始。

## 为什么是 Posoco

如果你在写 agent，或者正在挑一个 agent 框架，这一节是给你的；只想用 Cetas 干活，可以放心跳过。

它和常见框架的差异，落在四件可以验证的事上：

agent 循环的事件流是封闭枚举。内核新增一种事件，所有没跟上的分支立刻变成编译错误，指到具体的分支——升级时不用通读更新日志去猜行为，编译器会直接告诉你哪里断了。

工具调用被拒时，返回的是结构化原因：没被提供、owner 不允许、已被撤销、schema 不匹配、被钩子拒绝。写 UI 和 observer 的人拿到的是可以 match 的数据，不用拿正则去解析提示词。

每个能力登记时都带着 owner，可以被另一个扩展领走，收窄成"藏而不废"——从目录里退场，调用通道还在。目录、归属、收窄是同一份快照，没有第二处状态。

供应商是各自独立的扩展。没有一张统一 router 把各家压成同一个形状，每家的完整能力在自己的扩展包里实现，Cetas 的供应商清单就是这样一个个攒出来的。

这些话需要证据，证据是 Cetas 本身：三个传输方式不同的入口组合同一个内核，没有分叉的 agent 循环。Posoco 的破坏性升级附带一张显式的迁移映射表，该改什么、改成什么逐条写明，不靠读 diff 反推。第一条能成立的前提是 MoonBit——封闭枚举加穷尽检查，"编译器告诉你哪里断"靠的就是这个。

Posoco 提供协议和端口；Cetas 是在它上面扛过真实负载的那个实现。

Source: https://colmugx.github.io/cetas/introduction/index.mdx
