Files
deta-agent-plugins/plugins/writer/README.md
T
ringo c77d2fe864
CI / contract (push) Has been cancelled
docs(plugin): 登录口径改为浏览器一键授权(不需要终端),studio 0.3.6
配合 ant-copilot 新增的 login 工具(回环 OAuth 授权):技能里 auth_required 的处置从"让用户去终端跑命令"改为"调 login 工具 + 浏览器点一下允许";三份 README 同步,终端助手降为无 login 工具形态(CLI 等)的兜底。
2026-09-20 13:46:54 +08:00

88 lines
5.2 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.
# DETA Writer 插件(Codex 插件 / dsh 组合包)
DETA 领域能力在**报告产出**档位上的分发壳:同一个目录既是 Codex 插件根,
也是 dsh 组合包根,两端共享 `skills/` 与**同一个启动器**(与 Studio 插件共用实现)。
- 发行标识:**`writer@deta`**(插件 `writer` + 市场 `deta`)
- MCP 服务名:**`writer_mcp`**(工具前缀 `mcp__writer_mcp__…`;与 `studio_mcp` 互不冲突,可同时安装)
- 产品档位:启动器 `--profile writer`(工作区缺省 `~/.deta/writer/workspace`,与 Studio 隔离)
## 连接形态与凭据(唯一管道:本机 stdio)
| 项 | 值 |
|----|-----|
| 形态 | **本机 stdio**:宿主拉起 `bin/deta-mcp.sh --profile writer`,由它解析领域服务运行时与工作目录 |
| 宿主声明 | Codex 读 `.mcp.json`;dsh 读 `cordis.patch.yml`——两边都只声明"调用同一个脚本、带哪个档位" |
| 工作目录 | `DETA_WORKSPACE` → `ANT_HEADLESS_WORKSPACE` → 缺省 `~/.deta/writer/workspace`(启动器创建并在 stderr 回显) |
| 运行时 | `DETA_SERVER_ROOT` → `~/.deta/runtime` → 本机开发检出(回落到开发检出时启动器打印提示) |
| 云侧能力(可选) | `DETA_TOKEN`(`node bin/deta-login.mjs` 获取):项目/楼栋列表、`push_project` / `pull_project` |
| Studio 执行器中继(可选) | `ANT_WORKSPACE_BRIDGE_URL` + 项目 ID(三要素齐备才启用;供模拟/画布类工具) |
**本机形态不做 MCP 鉴权**(进程由宿主或用户在本机拉起,没有 OAuth、没有 401、没有令牌续期)。
未注入 `DETA_TOKEN` 时,云类工具返回 `auth_required`,其余工具照常。
## 能力现状与边界(重要)
| 能力 | 现在由谁承担 |
|------|--------------|
| 读模型与工作区(`aml.xml` / `building.json`) | 宿主原生文件工具 + MCP 工作区工具 |
| 取数:围护结构统计、性能分析、模拟缓存、气象、规范指标 | MCP 引擎工具(与 `studio_mcp` 同一实现) |
| 报告成文(章节文本、结论、缺项标注) | 本项目技能 `report-authoring` 指导下的写作过程,产物落工作区 |
| **报告模板、插槽填充、docx 导出** | **门户 Writer 页面**(`https://deta.city/writer?doc=<docId>`)——**不是 MCP 工具** |
即:本插件当前复用与 Studio 相同的引擎工具面(报告类工具尚无 MCP 出口),
差异体现在**产品档位(独立工作区、独立命名空间)与写作技能**上。专用报告工具面
(插槽词表 / 报告文档读写)属引擎侧待补项,落地后本插件只需把档位的工具面切过去。
## 工具面约定
- 本机形态为全量工具面。**当前可用的完整工具名以运行时 `list_capabilities` 为准**,
本仓文档不列举工具清单。
- 写类工具在 Codex 侧需要审批:`.mcp.json` 已声明 `default_tools_approval_mode: "approve"`。
## 安装(Codex)
```bash
codex plugin marketplace add https://git.deta.city/deta/deta-agent-plugins.git
codex plugin add writer@deta
# 领域服务运行时:本机引擎包(~/.deta/runtime)或源码构建;冒烟应等待 stdin/stdout
bash <插件目录>/bin/deta-mcp.sh --profile writer
```
需要云侧能力(项目列表 / 新建项目 / 项目同步 / 打开 Studio)时:让助手调 `login` 工具 →
浏览器打开授权地址(首次输一次账号密码或邮箱验证码)→ 点「登录并授权」。**不需要终端**;
令牌自动写入 `~/.deta` 并即时生效,过期先静默续期。
命令行形态(无 `login` 工具)可用 `~/.deta/bin/deta login` 兜底,`~/.deta/bin/deta doctor` 自检。
## 安装(dsh)
```bash
export DETA_PLUGIN_ROOT=<本包所在目录>
dsh plugin --profile <name> add "$DETA_PLUGIN_ROOT"
# 验证配置层(不需凭据):--dump-config 输出应含 serverName: writer_mcp / transport: stdio
```
## 文件
```
.codex-plugin/plugin.json Codex 插件清单(name: writer)
.mcp.json Codex MCP 声明(writer_mcp → ./bin/deta-mcp.sh --profile writer)
package.json dsh 组合包声明(dsh.bundle.patch)
cordis.patch.yml dsh 配置层(同一启动器,serverName: writer_mcp)
bin/deta-login.mjs 登录助手(~/.deta/credentials.json + ~/.deta/env,供云侧能力用)
bin/deta-mcp.sh 本机 stdio 启动器(多产品共用;缺省 `--profile writer`)
README.md 本文件(连接形态 / 能力边界 / 排障)
skills/report-authoring/SKILL.md 宿主侧技能(报告写作取数与纪律;不含工具清单)
```
## 排障
- **工具面为空 / 宿主说没有工具**:先看宿主日志(Codex 桌面应用日志的
`mcp_server_startup_status_updated` 与 `logs_2.sqlite` 的 `omitting MCP server`),
再跑一次 `bash bin/deta-mcp.sh --profile writer` 看启动器 stderr 回显的运行时与工作区。
- **看到的是 Studio 的数据**:检查工作区是否被 `DETA_WORKSPACE` 覆盖成了 Studio 目录;
缺省档位下两者是隔离的(`~/.deta/writer/workspace` vs `~/.deta/studio/workspace`)。
- **命名空间重复**(`Duplicate namespace name …`):上游代理问题,另起会话,不要重试。