feat: add copyable Codex MCP setup prompt
This commit is contained in:
1 parent
06bee32863
commit
df40fccfe1
4 files changed
+79
-3
No files matched your search
@@ -100,6 +100,28 @@ function instructions(url: string) {
|
||||
].join('\n\n');
|
||||
}
|
||||
|
||||
function codexSetupPrompt(url: string, level: string) {
|
||||
const selected = level === 'read' ? 'read' : 'read,' + level;
|
||||
return [
|
||||
'请直接在这台电脑上为我配置 WorthPath MCP,不要只给我命令或方案。我授权你新增或更新名为 worthpath 的 MCP 连接,使用 Streamable HTTP 与 OAuth;仅修改这条连接,保留其他 MCP 和 Codex 配置。',
|
||||
'服务地址:' +
|
||||
url +
|
||||
'。申请权限:' +
|
||||
selected +
|
||||
'。不申请隐藏账户权限;最终授权由我在 WorthPath 网页审核完成。不要让我把密码或个人令牌发送到聊天里,也不要替我点击授权确认。',
|
||||
'先检查本机 codex 命令是否可用,并核对 mcp add/login 的帮助。只检查 WorthPath 相关配置,不输出凭据、Authorization 头或其他秘密。如果你运行在云端或另一台电脑,无法访问此 localhost 地址,请如实说明,不要声称已连接。',
|
||||
'使用 codex mcp add worthpath --url ' +
|
||||
url +
|
||||
' 添加连接;已有同名、同地址且启用的 OAuth 连接时跳过添加。若同名连接指向不同服务,请先说明冲突,不覆盖它。若这条连接使用旧 Bearer 认证,将本连接切换为 OAuth 并移除其静态 Authorization 或 bearer_token_env_var,保留其余配置,不展示旧令牌。',
|
||||
'执行 codex mcp login worthpath --scopes ' +
|
||||
selected +
|
||||
' --oauth-client-registration dcr 发起网页登录。我会自行登录并确认权限。等待回调时保留登录进程;需要等待我完成网页步骤时,明确告诉我当前状态。',
|
||||
'授权后检查连接配置与真实工具可用性。能调用时先 tools/list,再 connection_info 核对权限;若当前会话不会重新加载工具,请告诉我重启客户端或新建本机会话后继续验证。只有配置、OAuth 成功和工具调用成功都验证后才能说已可用,不把 codex mcp list 或网页登录成功当作工具调用成功。',
|
||||
'配置期间不要创建、修改或删除我的账目。后续资产查询、转账和还款优先使用 WorthPath MCP;工具或权限不可用时如实说明。',
|
||||
...instructions(url).split('\n\n').slice(3),
|
||||
].join('\n\n');
|
||||
}
|
||||
|
||||
export function AgentConnections() {
|
||||
const [data, setData] = useState<Management | null>(null),
|
||||
[error, setError] = useState(''),
|
||||
@@ -112,6 +134,7 @@ export function AgentConnections() {
|
||||
[tokenHiddenRead, setTokenHiddenRead] = useState(false),
|
||||
[tokenHiddenWrite, setTokenHiddenWrite] = useState(false),
|
||||
[agentView, setAgentView] = useState('connect'),
|
||||
[codexPermission, setCodexPermission] = useState('draft'),
|
||||
[consentLevel, setConsentLevel] = useState('read'),
|
||||
[consentHiddenRead, setConsentHiddenRead] = useState(false),
|
||||
[consentHiddenWrite, setConsentHiddenWrite] = useState(false);
|
||||
@@ -202,7 +225,7 @@ export function AgentConnections() {
|
||||
</button>
|
||||
</div>
|
||||
<p className="muted">
|
||||
先在客户端添加 MCP 连接并完成授权。复制下面的操作说明到聊天不会建立连接。
|
||||
首次接入可使用下方 Codex 配置提示词。仅复制后续操作说明不会建立连接。
|
||||
</p>
|
||||
<details className="agent-details">
|
||||
<summary>查看连接步骤</summary>
|
||||
@@ -233,10 +256,52 @@ export function AgentConnections() {
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
<h4>第一步:让本机 Codex 帮你配置连接</h4>
|
||||
<p className="muted">
|
||||
选择权限,复制提示词并发送给本机 Codex。它会执行配置和发起 OAuth 登录;你只需在
|
||||
WorthPath 网页完成登录授权,无需手动输入命令。
|
||||
</p>
|
||||
<label>
|
||||
申请连接权限
|
||||
<select
|
||||
value={codexPermission}
|
||||
onChange={(e) => setCodexPermission(e.target.value)}
|
||||
>
|
||||
<option value="read">只读查询</option>
|
||||
<option value="draft">查询与草稿修改(网页确认)</option>
|
||||
<option value="write">查询与直接普通写入</option>
|
||||
</select>
|
||||
</label>
|
||||
<button
|
||||
className="primary"
|
||||
type="button"
|
||||
onClick={() =>
|
||||
void copy(
|
||||
codexSetupPrompt(data.mcpUrl, codexPermission),
|
||||
'Codex 配置提示词已复制',
|
||||
)
|
||||
}
|
||||
>
|
||||
复制 Codex 配置提示词
|
||||
</button>
|
||||
<details className="agent-details">
|
||||
<summary>预览 Codex 配置提示词</summary>
|
||||
<textarea
|
||||
className="agent-tutorial"
|
||||
aria-label="Codex 配置提示词"
|
||||
readOnly
|
||||
value={codexSetupPrompt(data.mcpUrl, codexPermission)}
|
||||
rows={8}
|
||||
/>
|
||||
</details>
|
||||
<p className="muted">
|
||||
适用于有本机命令执行能力的
|
||||
Codex。网页授权和必要的客户端重启仍需你完成;云端聊天不能直接连接本机 localhost。
|
||||
</p>
|
||||
<div className="agent-copy-row">
|
||||
<h4>可直接复制给 Agent 的教程</h4>
|
||||
<h4>已连接?复制后续操作说明</h4>
|
||||
<button
|
||||
className="primary"
|
||||
className="secondary"
|
||||
type="button"
|
||||
onClick={() => void copy(instructions(data.mcpUrl), 'Agent 使用教程已复制')}
|
||||
>
|
||||
|
||||
@@ -27,3 +27,7 @@
|
||||
本次没有数据库模型或业务服务变更,无新增迁移。没有重复运行此前 REST/MySQL 全业务回归;此前结果见更新记录。本次尚未验证 Codex 桌面会话直接工具调用、其他商业客户端或公网 HTTPS 部署。CLI 登录测试与 SDK 工具调用测试不等于这些验证。
|
||||
|
||||
具体接入步骤见 [MCP 文档](mcp.md)。没有部署或推送。
|
||||
|
||||
## 页面配置提示词(2026-10-04 02:32 UTC+8)
|
||||
|
||||
新增复制 Codex 配置提示词入口与只读、草稿、普通写入三档申请权限,默认 read,draft。提示词授权本机 Codex 执行连接配置和 OAuth 登录,仅修改 worthpath 连接并保留其他配置;网页确认由用户完成,配置阶段不修改账目。浏览器实际验证三种选项的剪贴板内容、正确资源地址与 scopes;前端类型检查和构建通过,临时账号已清理。没有启动新的真实用户 OAuth 授权,也没有验证外部 Codex 自动执行整段提示词;底层 CLI OAuth 路径沿用本页已有实际验证。
|
||||
@@ -26,6 +26,12 @@ OAuth 使用发现元数据、动态注册的公开客户端、授权码、S256
|
||||
|
||||
旧连接有 write 时,现在直接执行普通修改;旧全局策略不再阻止它。只想创建草稿时,撤销旧连接并重新授权 read draft。历史策略行保留但不参与任何权限判断;旧敏感工具草稿不可提交。
|
||||
|
||||
## 页面复制提示词配置
|
||||
|
||||
在「设置与备份 → 连接 Agent → 开始连接」选择申请权限(默认 read,draft),点击「复制 Codex 配置提示词」,发送给运行在本机、能够执行命令的 Codex。提示词明确授权它仅配置 worthpath 连接、使用 OAuth、保留其他配置并核对实际工具加载;命令由 Codex 执行,用户无需手动输入。用户仍须完成 WorthPath 网页登录和权限确认,当前会话无法加载新增工具时须重启客户端或新建会话。提示词不包含个人令牌,也不会修改账目。
|
||||
|
||||
权限选择只改变申请内容,不会立即改变现有连接授权;最终以网页确认和 connection_info 为准。这是可执行的配置指令,不是浏览器一键注册客户端;客户端缺少本机执行能力时需如实说明限制。
|
||||
|
||||
## 本机 Codex OAuth 接入
|
||||
|
||||
以下命令已核对本机 Codex CLI 0.160.0 帮助和[官方 MCP 文档](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)。在 WorthPath 所在电脑的 PowerShell 执行;已有名为 worthpath 的连接时跳过 add。CLI 与桌面/IDE 的配置共享不代表当前会话已经加载工具,授权后重启客户端或新建会话,并检查工具发现。
|
||||
|
||||
@@ -90,3 +90,4 @@
|
||||
账户转账与估价验收完成:2026-10-03 18:56。35 项单元检查、17 项真实 MySQL 集成检查、类型检查和生产构建通过;最终估值去重另通过 4 项专项回归。17 个迁移已应用,10 张表与 106 个字段注释完整。计入开关、黄金/白银估价、ZIP v8 和第三方接口清单详见 [更新说明](docs/update-inclusion-metals-2026-10-03.md) 与 [README](README.md#第三方接口与外部素材来源)。复查未发现新增未完成要求。
|
||||
- ~~修改提示框,全部提示直接在右上角出现弹出提示框~~ — 已完成并通过浏览器成功/认证错误反馈验证:2026-10-04 02:23(UTC+8)
|
||||
- ~~修正 MCP 接入教程误导,补充已验证的 Codex OAuth 配置和 localhost 限制~~ — 已完成:2026-10-04 02:23(UTC+8);CLI 0.160.0 OAuth/DCR 登录及官方 SDK 39 工具发现通过,桌面会话内调用尚未验证。
|
||||
- ~~在连接 Agent 页面提供可直接发送给 Codex 执行配置的提示词,无需用户输入命令~~ — 已完成并通过三档权限复制、前端类型检查与构建:2026-10-04 02:32(UTC+8);网页登录授权由用户完成。
|
||||
Reference in new issue
Block a user