muse-agent-example/README.md
zizi de4820b595 批次索引与入口收口:目录索引登记、工程入口说明与旧工作台入口
.agent 与 docs 各级目录.md 登记批次新增的规则、约束、规范与技能;AGENTS.md/README.md 含开工时保留的原仓修改与批次新增的工程入口说明(混合改动,按用户指示整文件收口);web/app.py 旧本地人审工作台入口调整。
2026-09-10 19:39:59 +08:00

158 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# agent-example(Muse 单用户版)
Muse 的单用户缩小版:AI 驱动的长篇创作工具。**正在按新版设计改造**(见 [`docs/系统架构/新版设计/阅读指南.md`](docs/系统架构/新版设计/阅读指南.md) 与 [改造计划](docs/系统架构/新版设计/改造计划/总计划.md)),新版工程骨架已落地,业务能力按工作包逐步交付。
正式内容权威是 PostgreSQL;Git 是代码、技能、文档与 DDL 的权威。本项目不含管理员、多用户、租户、市场、计费与资产交易。
## 新版工程入口(当前)
```bash
# 安装(uv 管理 .venv 为新版仓内解释器)
make 安装
make 前端安装 # 使用 web/pnpm-lock.yaml;生成和索引核对需要 Node/TypeScript
# 日常检查:格式 + 类型 + 索引一致性
make 检查
make 前端检查
make 前端测试
# 离线测试(默认 OS 进程隔离,未标记外部环境的用例禁止联网连库)
make 测试
make 测试 用例=TC-a5c7d4adafe3 # 按稳定用例 ID 选择单例
# 隔离数据库测试(需先导出 MUSE_TEST_DATABASE_URL,缺变量直接失败)
make 数据库测试
# 实际Pi SDK整链:另需MUSE_PI_NODE与MUSE_PI_PACKAGE,固定Pi 0.84.4、Node至少22.19.0
# 这些是本地运行路径;提供方使用合成HTTP,不调用外部模型
make 宿主测试
# 生成(资源包 / 接口合同 / 索引)与构建发布包
make 生成
make 构建
```
- 新版源码:`src/muse/`(模块化单体,中文模块名;公共接口在各模块 `接口.py`)。
- 新版测试:`tests/单元|契约|集成|架构/`,用例以完整 `case_id` 绑定实际文件、符号与参数行;六位后缀只辅助阅读。
- 工程工具:`工具/`(资源打包、接口生成、索引检查),登记输入在 `工具/资源登记.json` 与 `工具/生成输入.json`。
- 前端工作台(React/TS):`web/`,随 W07 起接入真实后端。
## 作者工作台与结构入口
运行配置草案使用[提供方模板](配置/提供方.example.toml),经CLI保存到所选用途的数据库:
```bash
.venv/bin/python -m muse 配置 <私人应用配置.toml> 保存 <配置ID> <版本> --内容 <运行配置草案.toml>
.venv/bin/python -m muse 配置 <私人应用配置.toml> 查看 <配置ID> <版本>
```
保存与查看不会自动启用。任务执行从已验证启用并绑定的版本装配;生产能力验证器和对应的作者启用流程仍在实施,不能用离线配置检查替代。
复制 `配置/应用.example.toml` 到私人配置目录,将数据库连接和工作台口令分别保存在该目录的受控文件中。相对凭据地址以配置文件所在目录为起点。
先运行`.venv/bin/python 工具/环境预检.py`取得当前`resource_build_id`,填入私人配置的资源发布身份。执行任务固定这一构建;换装资源后已有任务不能静默改用新版。
```bash
# 发布包内工作台;公开地址和写入来源必须与浏览器实际访问地址一致
.venv/bin/python -m muse 服务 <私人作者配置.toml>
# 维护配置发布固定种子;重复发布幂等,不启用任何实例绑定
.venv/bin/python -m muse 结构 <私人维护配置.toml> 发布内置
.venv/bin/python -m muse 结构 <私人作者配置.toml> 查看 character --版本 1
.venv/bin/python -m muse 结构 <私人作者配置.toml> 维护 <结构请求.json>
.venv/bin/python -m muse 任务 <私人作者配置.toml> 列表
.venv/bin/python -m muse 任务 <私人作者配置.toml> 查看 <任务ID>
.venv/bin/python -m muse 任务 <私人作者配置.toml> 控制 <控制请求.json>
```
任务控制 JSON 使用 `command_id`、`target_ref`、`expected_state`、`action`,其中 action 为“暂停”“取消”或“恢复”。重试同一请求保留 command_id;恢复由服务端登记的流程检查来源、结构、授权与预算,缺少对应业务处理器时明确拒绝。
当前工作台可新建作品、编辑动态档案、添加章节并手写正文。正文自动保存保留版本;冲突时先比较服务器稿件,回退会生成新版本。未提交的正文缓冲留在当前浏览器,重开时先与服务器基线比较。候选审阅、引用选择与作品结构升级仍在实施,不能将人工主链通过视为完整创作链完成。
人工命令与网页复用同一业务入口:
```bash
.venv/bin/python -m muse 作品 <私人作者配置.toml> 结构 <作品ID> --结构 work_core --版本 1
.venv/bin/python -m muse 作品 <私人作者配置.toml> 保存档案 <档案请求.json>
.venv/bin/python -m muse 作品 <私人作者配置.toml> 新增章节 <章节请求.json>
.venv/bin/python -m muse 作品 <私人作者配置.toml> 保存正文 <正文请求.json>
.venv/bin/python -m muse 作品 <私人作者配置.toml> 正文 <章节ID>
.venv/bin/python -m muse 作品 <私人作者配置.toml> 回退正文 <回退请求.json>
```
请求外壳由 [`创作操作.py`](src/muse/接入/创作操作.py) 与[生成合同](docs/接口契约/生成/openapi.generated.json) 定义。作者身份取自配置或会话;正文草稿使用[受限文档树](docs/系统架构/新版设计/接口契约/正文结构与中文选区.md),不提交编辑器HTML。
## 新库配置与迁移
清理当前配置的无租约暂存与读取回执:
```bash
.venv/bin/python -m muse 管理 <私人应用配置.toml> 清理无租约暂存
.venv/bin/python -m muse 管理 <私人应用配置.toml> 查看清理回执 <对象ID>
```
该操作保留已登记租约、未知资料和其他命名空间。旧的非空未标记目录须先按迁移合同承接,不能直接交给新版清理器。
按 `配置/应用.example.toml` 配置连接引用和用途。三类角色由管理员使用 `数据库/初始化/用途角色.sql` 显式创建,独立目标库交由 `muse_maint` 所有;应用迁移不创建角色。`muse_app` 处理业务对象,`muse_eval` 处理评测对象,生产角色不能读取 oracle。
`make 生成` 将迁移投影到包内;`make 迁移 配置=<私人维护配置路径>` 通过 maintenance 装配执行。缺凭据不会回退默认库。
## 过渡期旧实现
旧实现位于原工作树的 `muse/`、`framework/`、`runtime/`、`web/app.py`。新版在隔离工作树使用自己的 `.venv`;原工作树的旧 harness 仍沿原 `.venv` 路径启动,须保持该路径连接旧依赖环境。旧环境可依据 `requirements.txt` 重建:
```bash
uv pip install --python .venv/bin/python -r requirements.txt
```
旧正式库(mini-infra `100.64.0.8:5433/muse-example`)与旧 SQLite 账本(`data/muse.db`)对新实现冻结为只读参照;切换按 [切换与回退](docs/系统架构/新版设计/改造计划/切换与回退.md) 执行。旧测试树由旧环境运行,两套收集互不接管。
## 目录速览
```text
agent-example/
├── AGENTS.md # 项目工作入口(唯一事实源)
├── CLAUDE.md # 兼容入口,只引用 AGENTS.md
├── src/muse/ # 新版模块化单体(装配、共享基础、业务模块随包落地)
├── tests/ # 新版测试(单元/契约/集成/架构 + 夹具)
├── 工具/ # 工程生成与检查入口
├── 配置/ # 无凭据配置模板
├── web/ # 新版 React/TS 作者工作台(随包建设)
├── 数据库/ # 新版迁移(随 W03 起)
├── muse/ framework/ runtime/ # 旧实现(验收后逐步退出)
├── .agent/ # 智能体能力中枢(规则、约束、规范、技能)
├── docs/ # 设计 SSOT、任务资料与执行证据
└── data/ # 运行态数据(旧 SQLite 账本与参考原文,gitignore)
```
## 验证纪律
完成 = 机械验证:无自动化绿证据不得声称完成。测试默认离线禁网禁库;空收集、全跳过、超时与缺依赖都如实呈现,不冒充通过。详见 [`docs/系统架构/新版设计/改造计划/执行与验收.md`](docs/系统架构/新版设计/改造计划/执行与验收.md) 与 [`.agent/rules/测试隔离.md`](.agent/rules/测试隔离.md)。
所有任务从 [`AGENTS.md`](AGENTS.md) 开始。
## 正文候选
章节保存后可进入“比较正文候选”,另拟改稿、编辑候选或按段选择改动。候选保存只增加候选版本;打开审阅后,作者可采纳为正文新版本、拒绝或暂缓。当前人工候选只做格式与版本校验,模型生成与关联事实采纳随相应创作流程接入。
CLI 使用 `.venv/bin/python -m muse 审阅 <作者配置> 列表 <章节ID>` 定位;`查看 <候选ID>` 读取候选,`打开 <请求JSON>` 取得固定审阅。`建立候选`、`修改候选` 与 `决定` 的请求合同和执行说明见[决定正文候选去留](.agent/skills/操作/决定正文候选去留/SKILL.md)。
## 故事事实接口
新版提供 `/api/v1/works/{work_id}/facts/schema` 预览事实结构,`/fact-proposals` 创建提案;通过 `/api/v1/fact-proposals/{proposal_id}/reviews` 打开审阅,再向 `/decisions` 提交作者决定。来源使用确切正文版本及段落引文。提案保存不产生正式事实,确认使用与正文相同的S01事务机制。
`/api/v1/works/{work_id}/facts` 按稳定章节身份 `as_of`、事实域确认版本 `system_revision` 和 `view=author|reader|character` 查询;角色视角同时提供 `character_id`。事实、猜测、计划分别返回。作者总览支持后文对早期事件的说明,早期读者查询不会提前得到后文披露。完整世界维护页面随W19接入。
## 私人探索稿
作者配置中的`文件.探索草稿`指定私人目录。工作台从“先记下一个想法”进入探索页,可保存原话、刷新恢复输入,保存冲突时先比较当前稿。草稿不进入正式作品列表、规划或生成上下文。
`.venv/bin/python -m muse 探索 <作者配置> 列表`及`查看 <稿件ID>`读取私人稿;`保存 <请求JSON>`接受draft_id、title、content、expected_hash。新稿expected_hash为null。整理后用`检查 <稿件ID> --预期哈希 <draft_hash>`核对最终格式;格式失败非零,方向确认与正式规划仍是独立动作。操作细节见[完善故事基础设定](.agent/skills/操作/完善故事基础设定/SKILL.md)。
整理稿通过格式检查后,可以明确选定为某部作品的规划依据。`选定 <请求JSON>`提交command_id和selection(work_id、draft_id、expected_hash、expected_revision);`查看选定 <作品ID>`读回服务器保存的作者、时间和确切快照。修改私人稿不会改变这份已选来源,正式规划候选仍须单独确认。
## 人工规划候选
`.venv/bin/python -m muse 规划 <作者配置> 结构 <作品ID> --结构 outline --版本 1`读取固定规划结构。`创建候选 <请求JSON>`使用command_id和request;request包含work_id、expected_revision、schema和动态content。候选保存不会产生正式规划。
`查看候选`、`打开审阅`和`决定`完成作者明确确认,`查看 <规划ID>`或`列表 <作品ID>`回查正式内容。详见[确认规划候选](.agent/skills/操作/确认规划候选/SKILL.md)。当前这一入口用于人工规划;模型生成、卷与场景节点、近期细化仍在W13实施中。