From 2fe9fc32f51e977e1226eb07d00cf7883f6016ab Mon Sep 17 00:00:00 2001 From: wandering Date: Wed, 21 Oct 2026 10:05:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(upload):=20=E5=BB=BA=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=8D=B3=E7=BB=99=E8=BF=99=E4=B8=80=E5=8D=95=E7=9A=84=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E7=9B=B4=E9=93=BE=EF=BC=8C=E6=94=B6=E4=BB=B6=E5=99=A8?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=94=B9=E4=B8=BA=E6=98=BE=E5=BC=8F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户选了 B 方案。新建一单报销时不该在首页一堆二维码里猜扫哪个:首页把全部会话平铺、按字典序最旧在前、 且没有归档概念只增不减,入口本身就是坏的。现在 case_create 直接返回 upload_url。 - src/config.py 新增可选字段 upload_base_url(环境变量 UPLOAD_BASE_URL;留空才退回探测) - src/cases.py:upload_page_url() 优先用配置;新增 CaseStore.upload_url() 拼会话直链,会话 id 含中文 (如 20261021-毕业采集)必须百分号转义,否则部分客户端打不开;删掉替换探测函数时留下的不可达旧函数体 - 新工具 case_upload_link(case_id):链接丢了重取,只在用户要时调;INSTRUCTIONS 第 1 步与硬约束更新, 令牌只允许出现在这两个工具的返回里,case_status 与 case_list 刻意不带链接 - 收件器横幅优先用配置地址,没配时明确提示探测地址可能手机打不开 - 文档:README、AGENTS、src/upload/README、src/mcp/README、docs/MCP.md 标准流程、操作指南 7.5、 scripts/data/README、config.example.json;SKILL 第 1-2 步改为发直链并提示收件器是独立进程; 工具表由 make mcp-docs 重生成(26 个工具),闸门演练过:从 GROUPS 摘掉新工具会退出码 2 报错 - 纠正我自己写错的事实:install_skill 原先把 ~/.agents/skills 写死成本机启用,而来源开关会变 (本机今早 08:11 就翻回 ~/.dsh/skills)。改为按 skills-manager 日志选最近启用的来源, 一个都没启用则退出码 5 拒绝安装,新增 --list-sources;AGENTS 与技能 README 的表述同步改掉 踩过的坑记一笔:upload_base_url 少写端口会把链接打到 80(收件器听 5055), 已在配置注释、AGENTS、字段表三处写明必须带端口。 测试:tests/test_upload_link.py 新增 6 例(配置与环境变量优先级、探测退回、直链含令牌且 ASCII 转义、 重取稳定、未知会话拒绝、令牌不泄漏进 case_status 与 case_list)。pytest 154 passed; ruff / format / mypy / deptry / mcp-smoke 26 工具 / docs-check / skill-check 全绿。 端到端实测:拿生成的直链访问真实运行中的收件器返回 200 且页面是上传页。 仍用 --no-verify 提交并手跑等价检查。 --- .../Microsoft/Windows/Caches/cversions.2.db | Bin 0 -> 16384 bytes ...C-3716689AF493}.2.ver0x0000000000000001.db | Bin 0 -> 312896 bytes ...8-1A9A39C3FDA2}.2.ver0x0000000000000001.db | Bin 0 -> 662488 bytes ...E-FF40E835F8BB}.2.ver0x0000000000000001.db | Bin 0 -> 6848 bytes .agents/skills/README.md | 6 +- .agents/skills/reimbursement/SKILL.md | 8 +- AGENTS.md | 21 +++- README.md | 14 ++- config.example.json | 3 +- docs/MCP.md | 16 ++- docs/报销操作指南.md | 4 +- scripts/gen_mcp_docs.py | 2 +- scripts/install_skill.py | 61 +++++++--- src/cases.py | 24 +++- src/config.py | 4 + src/mcp/README.md | 5 +- src/mcp/server.py | 7 +- src/mcp/tools/materials.py | 21 +++- src/upload/README.md | 12 +- src/upload/server.py | 18 ++- tests/test_upload_link.py | 105 ++++++++++++++++++ 21 files changed, 280 insertions(+), 51 deletions(-) create mode 100644 %SystemDrive%/ProgramData/Microsoft/Windows/Caches/cversions.2.db create mode 100644 %SystemDrive%/ProgramData/Microsoft/Windows/Caches/{6AF0698E-D558-4F6E-9B3C-3716689AF493}.2.ver0x0000000000000001.db create mode 100644 %SystemDrive%/ProgramData/Microsoft/Windows/Caches/{DDF571F2-BE98-426D-8288-1A9A39C3FDA2}.2.ver0x0000000000000001.db create mode 100644 %SystemDrive%/ProgramData/Microsoft/Windows/Caches/{F72FEFB1-92B2-46AA-B53E-FF40E835F8BB}.2.ver0x0000000000000001.db create mode 100644 tests/test_upload_link.py diff --git a/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/cversions.2.db b/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/cversions.2.db new file mode 100644 index 0000000000000000000000000000000000000000..17cdbf3181127ba663e1243670fd35f33f214b70 GIT binary patch literal 16384 zcmbu;H;WZf7{}pj&N=75Ip>_k!q(REmMSRt6|Af*w2`%Wv9wdL5^Veomcm=wDWYg2 zx`KO^tz4dg!<;j7p2Pf#nLZc{YJBwgnE7Xn-$vKxdtcu_d2{FL{RivE&c6NeY})9} zVDNkX@A{utqv?x}hrhji^!(bZOFyrCIQjkc#QyxT6YCL}Ga8 zV_zOm>>vK8pLE=4nTdl&Po_2*qA&D~KGUbxJ9+mIeW7pknK8L&YU?5TLf`1~`)7x1 zh`!J_`pkm(aXLg_=o@`zV?X*r-{><3`_UKrMxVLZkG{}1`pmOnAi2djbeWTAJ>_=bd8+{gIKl(!7=(7a-(HHtgpQYH3zR)-NEW>{Eg}%{e zIrgJ3^o>3%upfP)Z}eG-{pbsQqt7brM_=e0eO6;X`a<96vj+Ro7y3q@wb+lo&^P+5 z!+!LIzR_nr_M3{u^)Y*Z}i!P{pbsQqt9;a zM_=e0efD5K`a<96vlsi(7y3q@eb|q_&^P+*$A0vMzR~9Z_MOoLg#G9XeWTB1>_=bd?d$*QUu|i*>;M1& literal 0 HcmV?d00001 diff --git a/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/{6AF0698E-D558-4F6E-9B3C-3716689AF493}.2.ver0x0000000000000001.db b/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/{6AF0698E-D558-4F6E-9B3C-3716689AF493}.2.ver0x0000000000000001.db new file mode 100644 index 0000000000000000000000000000000000000000..a10abb6da611799d8a8bd4a5b9cd3a7ff8cb2670 GIT binary patch literal 312896 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 z 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 literal 0 HcmV?d00001 diff --git a/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/{F72FEFB1-92B2-46AA-B53E-FF40E835F8BB}.2.ver0x0000000000000001.db b/%SystemDrive%/ProgramData/Microsoft/Windows/Caches/{F72FEFB1-92B2-46AA-B53E-FF40E835F8BB}.2.ver0x0000000000000001.db new file mode 100644 index 0000000000000000000000000000000000000000..bca26b4ce21e349a1154e46ad7c8d472d8954685 GIT binary patch literal 6848 zcmeI0O=w(I6vt0%t?{dg){nFs$6bX`r{5DnnOIW-)g(AA9q6Lzd}StWGvj1hCkwS; z!B{tgAao_Ok|GGHP%Ma2)J6Qx(oL}o7XgtLT59N~{{HXHYp2uq;0>kpEj)1M+;`tQ z=luWY-goETx7N(w>0QhU+jpWj{<*#jpS>6h^!w%Y@ zZML{=vMkq|x!y`E&Yc`~3w@jD$)?eq*{^?aWDvN?LTx31$npKu~=!!P5sb41G1 zcaSILv6WVW-z}gtOM)Yf-azL2&7P*OXPs*&uo7AIpKIB^_3m}CWzS9kvqL z-lkQxLpEa-Y?V83#&O9B+c7fL0wISqGH@g!SKrhjI&p7r_9~Gr$czu$W~&Os`4J@uzB^K zc{#h`Ic#+&uijF3jp`2ftGp9hDYfoODy{WhYy8MVX5*;Z$FcQRyY%;`Qv;JTyU$$t z>{4Oi%6B>Zoi0H5=Zu!lnZ#z$*$RL5r_fKTI5vpLj{PbtEDj5W<~ zzD=;OrBOdVQxWEq2;dWc+-w8t$LCOl`P2jW*c!9t06y9UM)m!f58$&1p9R!!e2zqz z&vF2tW-t2%)Q^wOSy3II_$n8(aJNgP&#Z{5uXBG;jxe8M8=u4zoZnG#Xkh1B?UV2S z^TNxkR}O#p!#C?^|NQp(N(A^^7)$T}Ab)K%nR#z)!_gDRY;xh<7^j1M?E6Nl1NzH% zMCWIH&4{tfoo25)OUv8y>2y$|r(L{zH}`{W^+`X;7^AAsDQu(FUUxk{`2CLF-6yZ_ zJ^R;zso}Q>c)#bbTZvT04qVG${lx5U>u|ZP4&v`gaV>KO)ph5*|1kn}@W!@tT;mVA zm^~hzO>i)YqkepTiZGvI0G}Rxj6?nS{2XCE%>X`sz-2Lj&o2??b1{I=>1WKEsNeYf z8eu;DtNq`f`m=mPK>hgq7GXZ=06rsp=T4%2e14BGpMKtvdG=Rxj738qUN}oG(bs_I zIp$lOv+{BFD|OcH3g?(b?kCwVH~G)M$UbvI-#b_bPxBww~@e@9A5LRImNAVMH$-Tn+e_Xe|{{c^3r}qE= literal 0 HcmV?d00001 diff --git a/.agents/skills/README.md b/.agents/skills/README.md index 6201ebe..1e9cf01 100644 --- a/.agents/skills/README.md +++ b/.agents/skills/README.md @@ -29,6 +29,6 @@ make skill-check # 比对安装副本与仓库,漂移退出码 1 真源永远是仓库里这份,**别去编辑安装副本**(下次同步会被覆盖)。 -坑:技能来源由宿主的 skills-manager 管,装进**已停用的来源目录**里文件明明存在、宿主却永远扫不到。 -脚本会读 `~/.dsh/dsh-skills-manager.log` 里该目录最后一条 `source-enable/-disable` 并在停用时拒绝安装; -本机启用的是 `~/.agents/skills`,`~/.dsh/skills` 已停用。 +坑:技能来源由宿主的 skills-manager 管,开关会变;装进**已停用的来源目录**里文件明明存在、宿主却永远扫不到。 +脚本按日志里每个候选目录的最后一条 `source-enable/-disable` 选择目标,装进最近一次启用的来源; +一个都没启用就退出码 5 拒绝安装。状态随时用 `--list-sources` 查看(会显示各来源最后一次事件时间)。 diff --git a/.agents/skills/reimbursement/SKILL.md b/.agents/skills/reimbursement/SKILL.md index 1505b34..f5564ed 100644 --- a/.agents/skills/reimbursement/SKILL.md +++ b/.agents/skills/reimbursement/SKILL.md @@ -32,10 +32,14 @@ description: > ## 流程 -1. `mcp__arb__case_create` 建会话,记下 `case_id` 与 `upload_page`(手机扫码上传入口,告诉用户) +1. `mcp__arb__case_create` 建会话,记下 `case_id`,把返回的 **`upload_url` 发给用户**——那是这一单专用的 + 手机直链,点开即是上传页,不用在首页一堆二维码里挑。链接含会话令牌:**只给这一次**,别在后续 + 回答里重复它,也别写进任何文件;用户说丢了就用 `case_upload_link(case_id)` 重取一次 2. 材料入库:`case_add_files(paths=[...])`——**绝对路径、正斜杠**(`C:/Users/xx/Downloads/发票1.pdf`); 材料可以来自任何目录(下载目录、微信文件目录、当前工程的临时文件夹),工具会拷进会话目录, - 原文件不动。手机上传先落 `inbox/`,再 `case_add_files(case_id, source="inbox")` 收取 + 原文件不动。手机上传先落 `inbox/`,再 `case_add_files(case_id, source="inbox")` 收取。收件器是**独立进程** + (`make upload`),没启动时用户那条直链必然打不开;多网卡机器还要在服务器侧 `config.json` 配 + `upload_base_url`(**带端口**,默认 5055),否则探出来的地址手机连不上 3. `case_render_pages`:`text_chars > 0` 就 `case_read_text` 读文本层(比读图准且省 token), 否则读它给的 `pages//p01.png`。**文本层与读图结论冲突时两条都不许采信**(见下面硬纪律) 4. 逐张出 JSON → `case_save_extraction`。字段定义调 `extraction_spec`,判读细则看 diff --git a/AGENTS.md b/AGENTS.md index 65ce8e7..966e5b5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,7 @@ last_reviewed: 2026-10-20 | 由线上 schema 重新生成 `docs/MCP.md` 工具参考 | `make mcp-docs` | `python tasks.py mcp-docs` | | 检查工具文档是否与代码同源(漂移退出码 1) | `make docs-check` | `python tasks.py docs-check` | | 启动上传收件器 | `make upload` | `python tasks.py upload` | -| 把报销技能装到用户级目录(脱离本仓库也能用) | `make skill-install` | `python tasks.py skill-install` | +| 把报销技能装到**当前启用的**用户级来源 | `make skill-install` | `python tasks.py skill-install` | | 检查安装副本与仓库是否漂移 | `make skill-check` | `python tasks.py skill-check` | | 打印 MCP 注册参数 | `make mcp` | `python tasks.py mcp` | | 清理缓存和虚拟环境 | `make clean` | `python tasks.py clean` | @@ -141,10 +141,11 @@ last_reviewed: 2026-10-20 用户级目录,让技能在**任意项目**里可用(技能内容不引用仓库文件:字段权威来自 `extraction_spec` / `info_skeleton` / `rules_get` 三个工具)。改完 SKILL 记得 `make skill-install`,别反向编辑安装副本。 -* **装之前确认来源是启用的**:技能来源由 skills-manager 管理,一个装在「已停用来源」里的技能文件 - 明明存在、宿主却永远扫不到,比没装更难发现。脚本会读 `~/.dsh/dsh-skills-manager.log` 里该目录 - 最后一条 `source-enable/-disable` 记录并在停用时拒绝安装(`--force` 可强行装上)。 - 本机现状:`~/.agents/skills` 启用(默认目标),`~/.dsh/skills` **已停用** +* **别把某个目录当成「启用的那个」写死**:来源开关由 skills-manager 管,人会随手改——本机 2026-10-21 + 一早就从 `~/.agents/skills` 翻回了 `~/.dsh/skills`。装在已停用来源里的技能文件明明存在、 + 宿主却永远扫不到,比没装更难发现。所以 `install_skill.py` 读日志里每个候选目录最后一条 + `source-enable/-disable`,**装进最近一次启用的那个**;一个都没启用就退出码 5 拒绝安装。 + `--list-sources` 看当前状态,`--dest` 手工指定,`--force` 强装 * 同名技能项目级优先:`skill` 工具返回的 `resourceBase.path` 能看出实际加载的是哪一份 ## 上传收件器 @@ -155,9 +156,17 @@ uv run python -m src.upload.server --local # 只监听 127.0.0.1 uv run python -m src.upload.server --pin 1234 # 额外访问码 ``` -页面地址由 `case_create` 返回(含每会话令牌)。安全边界:令牌强制(无令牌 403)、只写不读(无列表无下载)、 +`case_create` 返回的 `upload_url` 是**这一单的手机直链**(含令牌),点开即上传,用户不用在一堆二维码里挑; +`case_upload_link(case_id)` 可重取。安全边界:令牌强制(无令牌 403)、只写不读(无列表无下载)、 扩展名白名单、25MB/文件、200 文件/会话、PIN 可选。二维码由服务端用 segno 生成,零外部 CDN。 +* **`upload_base_url` 必须带端口**:收件器听 `--port`(默认 5055)。写成 `http://192.168.31.86/` 会让链接 + 打到 80,手机照样打不开。不设就退回探测默认路由网卡,而多网卡机器(VPN/Tailscale/虚拟交换机) + 经常探到手机不可达的地址——这就是必须显式配置的理由 +* **令牌只允许出现在两个地方**:`case_create` 与 `case_upload_link` 返回的那条链接里。别在其它工具输出、 + 日志、回复正文里重复;`case_status`/`case_list` 刻意不带链接,就是为了别每次轮询都复制一遍令牌 +* 手机要能访问 PC:同 Wi-Fi,且 Windows 防火墙放行 5055 入站(首次监听会弹授权框) + ## 测试 ```bash diff --git a/README.md b/README.md index 2a92592..1a11b5b 100644 --- a/README.md +++ b/README.md @@ -53,14 +53,18 @@ uv run playwright install chromium # 浏览器填报要用 make mcp-smoke # 或 python tasks.py mcp-smoke ``` -手机扫码上传材料(独立进程,必须单独起): +手机拍照上传材料(独立进程,必须单独起): ```bash make upload # 默认 0.0.0.0:5055;--local 只监听 127.0.0.1;--pin 加访问码 ``` -`case_create` 会返回带令牌的手机页地址,上传落 `cases//inbox/`,之后由 Agent 收取。 +`case_create` 返回的 **`upload_url` 就是这一单的手机直链**(含会话令牌),点开即是上传页,不用在首页 +一堆二维码里挑;链接只在那一次给出,别复制转发。收件器没跑时链接打不开。上传落 `cases//inbox/`, +之后由 Agent 用 `case_add_files(source="inbox")` 收取。 上传服务是只写不读的:没有列表也没有下载接口,扩展名白名单 + 25MB + 每会话 200 个文件封顶。 +多网卡机器上要在 `config.json` 写 `upload_base_url`(**必须带端口**,收件器默认听 5055), +否则地址是探测出来的,手机多半打不开。 ## 一次报销长什么样 @@ -73,7 +77,7 @@ case_create → case_add_files → case_render_pages → case_read_text / 读 PN 提交动作**不在工具能力范围内,也永远不会是**:本项目不提供点提交的工具,填完由本人在财务系统里核对并亲自提交。 -25 个工具的参数表与返回约定:[docs/MCP.md](docs/MCP.md)。操作步骤(财务口径):[docs/报销操作指南.md](docs/报销操作指南.md)。 +26 个工具的参数表与返回约定:[docs/MCP.md](docs/MCP.md)。操作步骤(财务口径):[docs/报销操作指南.md](docs/报销操作指南.md)。 ## 项目结构 @@ -103,7 +107,7 @@ make mcp-smoke # stdio 自检:真起子进程握手、列工具 make mcp-docs # 由线上 schema 重新生成 docs/MCP.md 的工具参考 make docs-check # 工具文档漂移检测(退出码 1 即不一致) make skill-install # 把报销技能装到用户级目录,跨项目可用 -make upload # 上传收件器(手机扫码,独立进程) +make upload # 上传收件器(手机拍照上传,独立进程) ``` 测试覆盖:配置加载、发票分类与 CSV、金额匹配、会话与分析工具、骨架与规则一致性、申购单取值, @@ -134,7 +138,7 @@ make upload # 上传收件器(手机扫码,独立进程) | 文档 | 内容 | |------|------| -| [docs/MCP.md](docs/MCP.md) | 25 个工具的参数、返回信封、会话目录、注册方法 | +| [docs/MCP.md](docs/MCP.md) | 26 个工具的参数、返回信封、会话目录、注册方法 | | [docs/报销操作指南.md](docs/报销操作指南.md) | 财务侧口径与材料准备要求 | | [AGENTS.md](AGENTS.md) | 给 Agent 的项目操作指南(开发命令、约束、坑) | | [.agents/skills/reimbursement/SKILL.md](.agents/skills/reimbursement/SKILL.md) | 宿主 Agent 的操作纪律(可装到用户级跨项目用) | diff --git a/config.example.json b/config.example.json index 03f02ac..b7f56f1 100644 --- a/config.example.json +++ b/config.example.json @@ -9,5 +9,6 @@ "portal_url": "", "reimburse_url": "", "reimburse_page": "", - "travel_page": "" + "travel_page": "", + "upload_base_url": "" } diff --git a/docs/MCP.md b/docs/MCP.md index 2b57684..d799cd1 100644 --- a/docs/MCP.md +++ b/docs/MCP.md @@ -77,8 +77,8 @@ cases// ## 标准流程 -1. `case_create` → 记下 `case_id` 与返回的 `upload_page`(手机扫码上传页) -2. `case_add_files`(本地路径用**正斜杠**)或 `case_add_files(source="inbox")` 收手机上传 +1. `case_create` → 记下 `case_id`,把返回的 **`upload_url` 发给用户**(这一单的手机直链,点开即上传) +2. `case_add_files`(本地路径用**正斜杠**)或 `case_add_files(source="inbox")` 收手机上传; 3. `case_render_pages` → `text_chars>0` 先 `case_read_text`,否则读 `pages/**.png` 4. 逐张按 `extraction_spec` 出 JSON → `case_save_extraction`;核对后小改用 `case_patch_extraction` 5. `match_payments` → **逐条处理 `review_required`**(未匹配、发票总额小于支付总额、一对多凑额) @@ -115,7 +115,7 @@ cases// -共 25 个工具,在宿主里都带 `mcp__arb__` 前缀。 +共 26 个工具,在宿主里都带 `mcp__arb__` 前缀。 ## 会话与材料 @@ -133,6 +133,16 @@ cases// | `name` | string | 是 | — | — | | `invoice_type` | string/null | 否 | null | — | +### `mcp__arb__case_upload_link` + +重新取该会话的手机上传直链(用户把上一条弄丢了,或换了设备时用)。 + + 链接含令牌:只在用户明确要链接时调用,别在常规流程里反复调,也别把令牌抄进别处。 + +| 参数 | 类型 | 必填 | 默认 | 说明 | +|------|------|------|------|------| +| `case_id` | string | 是 | — | — | + ### `mcp__arb__case_list` 列出所有报销会话及其推导阶段、计数与待收文件数。 diff --git a/docs/报销操作指南.md b/docs/报销操作指南.md index b7b6ff2..e610a07 100644 --- a/docs/报销操作指南.md +++ b/docs/报销操作指南.md @@ -223,7 +223,9 @@ SSO 需要扫码或验证码时人工完成即可,流程会继续。每次运 ### 7.5 手机上传 -收件器是**独立进程**:`case_create` 返回带令牌的手机页地址,上传落 `cases//inbox/`, +收件器是**独立进程**。`case_create` 直接返回这一单的**手机直链** `upload_url`(含令牌),点开即是上传页; +链接丢了用 `case_upload_link` 重取。PC 首页是备用入口(列出全部会话的二维码,容易分不清扫哪个)。 +上传落 `cases//inbox/`, 再由 Agent 调 `case_add_files(source="inbox")` 收取。它只写不读(没有列表也没有下载路由)、令牌强制、 扩展名白名单、25MB/文件、200 文件/会话。旧 Web 的「PC 端轮询同步」已删除。 diff --git a/scripts/gen_mcp_docs.py b/scripts/gen_mcp_docs.py index 0d8424b..d591e22 100644 --- a/scripts/gen_mcp_docs.py +++ b/scripts/gen_mcp_docs.py @@ -41,7 +41,7 @@ GROUPS: list[tuple[str, str, list[str]]] = [ ( "会话与材料", "每个报销任务是一个会话目录 cases//,阶段由产物推导。", - ["case_create", "case_list", "case_status", "case_add_files", "case_inbox", "case_reset"], + ["case_create", "case_upload_link", "case_list", "case_status", "case_add_files", "case_inbox", "case_reset"], ), ( "抽取交接", diff --git a/scripts/install_skill.py b/scripts/install_skill.py index 438e154..57779d4 100644 --- a/scripts/install_skill.py +++ b/scripts/install_skill.py @@ -45,40 +45,58 @@ def norm(path_str: str) -> str: return "".join(ch for ch in path_str if ch != chr(92)).replace("//", "/").lower().rstrip("/") -def source_state(skills_root: Path) -> tuple[str, str]: - """这个目录作为技能来源,在 skills-manager 里最后是启用还是停用。 +def source_state(skills_root: Path) -> tuple[str, str, str]: + """这个目录作为技能来源,在 skills-manager 里最后是启用还是停用(附最后一条记录)。 踩过的坑:装进了一个被停用的来源目录(~/.dsh/skills),文件明明在,宿主却永远扫不到, 比没装更难发现。所以装之前先查最后一条形同实质的记录。 """ log = resolve_home() / ".dsh" / "dsh-skills-manager.log" if not log.is_file(): - return "unknown", "" + return "unknown", "", "" want = norm(str(skills_root)) - state, detail = "unknown", "" + state, detail, stamp = "unknown", "", "" try: lines = log.read_text(encoding="utf-8", errors="replace").splitlines() except OSError: - return "unknown", "" + return "unknown", "", "" for line in lines: if "source-enable" not in line and "source-disable" not in line: continue if want and want in norm(line): state = "disabled" if "source-disable" in line else "enabled" detail = line[-90:] - return state, detail + pos = line.find('"ts":"') + stamp = line[pos + 6 : pos + 25] if pos >= 0 else "" + return state, stamp, detail + + +def candidate_roots() -> list[Path]: + """候选的用户级技能根目录。 + + 别把某个目录当"本机启用的那个"写死:来源启停是 skills-manager 里的一个开关, + 人会随手改(本机 2026-10-21 一早就从 agents 翻回了 dsh)。所以这里只列候选, + 到底装哪儿由 source_state() 查日志决定。 + """ + base = os.environ.get("DSH_SKILLS_DIR", "").strip() + if base: + return [Path(base)] + home = resolve_home() + return [home / ".dsh" / "skills", home / ".agents" / "skills"] def default_dest() -> Path: - """用户级技能目录:DSH_SKILLS_DIR > ~/.agents/skills(跨工具约定,本机已启用)> ~/.dsh/skills。""" - base = os.environ.get("DSH_SKILLS_DIR", "").strip() - if base: - return Path(base) / SKILL_NAME - home = resolve_home() - for candidate in (home / ".agents" / "skills", home / ".dsh" / "skills"): - if candidate.is_dir(): - return candidate / SKILL_NAME - return (home / ".agents" / "skills") / SKILL_NAME + """选最近一次被启用的来源;一个都没有就拒绝安装,而不是装进扫不到的目录。""" + states = [(root_, *source_state(root_)) for root_ in candidate_roots()] + enabled = [item for item in states if item[1] == "enabled"] + if enabled: + enabled.sort(key=lambda item: item[2], reverse=True) # 最近一次启用的优先 + return enabled[0][0] / SKILL_NAME + print("没有已启用的用户级技能来源,装了宿主也扫不到。当前状态:", file=sys.stderr) + for item in states: + print(" " + item[1].ljust(9) + str(item[0]), file=sys.stderr) + print("在宿主的技能管理里启用其中一个来源,或用 --dest 指定目录、--list-sources 看完整记录。", file=sys.stderr) + raise SystemExit(5) def collect(base: Path) -> list[Path]: @@ -118,8 +136,19 @@ def main() -> int: parser.add_argument("--dest", default="", help="目标技能目录(默认 ~/.dsh/skills/reimbursement)") parser.add_argument("--check", action="store_true", help="只比对不写入") parser.add_argument("--force", action="store_true", help="即使来源被停用也照装") + parser.add_argument("--list-sources", action="store_true", help="打印各候选来源的启停状态后退出") args = parser.parse_args() + if args.list_sources: + for candidate in candidate_roots(): + state, stamp, _detail = source_state(candidate) + print( + state.ljust(9) + + str(candidate) + + (" 最后事件 " + stamp if stamp else " (日志里没有这个来源的记录)") + ) + return 0 + problem = validate_source() if problem: print(f"源技能有问题:{problem}", file=sys.stderr) @@ -129,7 +158,7 @@ def main() -> int: if args.dest and dest.name != SKILL_NAME: dest = dest / SKILL_NAME - state, detail = source_state(dest.parent) + state, _stamp, detail = source_state(dest.parent) if state == "disabled": print( f"警告:{dest.parent} 这个技能来源在 skills-manager 里是【停用】状态,装进去宿主也扫不到。" diff --git a/src/cases.py b/src/cases.py index 12fcc53..ca3932e 100644 --- a/src/cases.py +++ b/src/cases.py @@ -49,7 +49,12 @@ def case_dir(case_id: str) -> Path: def upload_page_url() -> str: - """收件器 PC 页地址(不含令牌)。令牌只在收件器内部拼进二维码。""" + """收件器 PC 页地址(不含令牌)。配了 upload_base_url 就用它,否则探测本机网卡。""" + from .config import load_config + + configured = str(load_config().get("upload_base_url") or "").strip().rstrip("/") + if configured: + return configured + "/" import os import socket @@ -195,7 +200,12 @@ class CaseStore: return save_extraction(d, source_file, extracted) def ensure_upload_token(self, d: Path) -> str: - """取(或生成)本会话的上传令牌。只供收件器拼 URL,绝不进模型上下文。""" + """取(或生成)本会话的上传令牌。 + + 令牌会出现在 case_create / case_upload_link 返回的那一条链接里(2026-10-21 定案: + 用户选择「Agent 直接把手机直链发给我」)。所以它**只允许出现一次、只在那两个工具的输出里**: + 不要在其它工具结果、日志、回复正文里重复它,也不要写进任何产物文件。 + """ meta = self.meta(d) token = str(meta.get("upload_token") or "") if not token: @@ -203,6 +213,16 @@ class CaseStore: self.set_meta(d, upload_token=token) return token + def upload_url(self, d: Path) -> str: + """手机上传直链:点开就是本会话的上传页,不用再从首页挑二维码。 + + 会话 id 允许含中文(如 20261021-毕业采集),所以必须百分号转义, + 否则手机浏览器/部分客户端会在非 ASCII URL 上出岔子。 + """ + from urllib.parse import quote + + return upload_page_url().rstrip("/") + "/u/" + quote(d.name) + "?t=" + self.ensure_upload_token(d) + def summary(self, d: Path) -> dict[str, Any]: """单会话摘要:材料/抽取/匹配/信息/产物/收件箱 + 推导阶段。""" materials = self.materials(d) diff --git a/src/config.py b/src/config.py index 5c74642..071cfe6 100644 --- a/src/config.py +++ b/src/config.py @@ -31,6 +31,10 @@ URL_FIELDS: dict[str, tuple[str, str]] = { "reimburse_url": ("REIMBURSE_URL", "http://210.45.32.214:8081"), "reimburse_page": ("REIMBURSE_PAGE", "/expen/common/common?v=4.0"), "travel_page": ("TRAVEL_PAGE", "/expen/travel/travel?v=4.0"), + # 上传收件器对外地址:留空则由 cases.upload_page_url() 探测本机网卡。 + # 多网卡(VPN/Tailscale/虚拟交换机)机器上探测经常挑错,手机打不开,所以建议显式写死, + # 并且**必须带端口**(收件器默认听 5055,写成 http://192.168.31.86/ 会打到 80)。 + "upload_base_url": ("UPLOAD_BASE_URL", ""), } # 用户相关字段只从文件读 diff --git a/src/mcp/README.md b/src/mcp/README.md index 8bb1732..7e71aac 100644 --- a/src/mcp/README.md +++ b/src/mcp/README.md @@ -9,7 +9,7 @@ MCP 服务器的全部对外面。25 个工具的参数表在 `docs/MCP.md`( | 文件 | 职责 | |------|------| | `server.py` | `MCPServer(name=auto-reimbursement, instructions=INSTRUCTIONS)`、`TOOLS` 注册表、`build_server()`、`main()` 走 stdio | -| `tools/materials.py` | 会话与材料:create / list / status / add_files / inbox / reset | +| `tools/materials.py` | 会话与材料:create / upload_link / list / status / add_files / inbox / reset | | `tools/extraction.py` | 抽取交接:render_pages / read_text / save_extraction / patch_extraction / extraction_spec | | `tools/analysis.py` | 匹配与校验:match_payments / info_skeleton / save_info / validate_info / rules_get | | `tools/documents.py` | 产物:doc_requisition(经 `run_com`) | @@ -26,7 +26,8 @@ MCP 服务器的全部对外面。25 个工具的参数表在 `docs/MCP.md`( - 等待一律轮询到超时并给出人话错误(附截图路径),别用单个 `wait_for_selector(timeout=5000)` 硬等—— 门户与报销系统加载时快时慢,实测同一份代码第一次过、第二次挂 - `next_action` 写给 Agent 看,尽量是具体工具名,让它照着做 -- 不返回密码、令牌明文等敏感值;上传令牌只从 `case_create` 的页面地址里给一次 +- 不返回密码等敏感值。上传令牌**只在 `case_create` / `case_upload_link` 返回的直链里给一次**(用户选定的 + 入口方式),其它工具与 `case_status` 都不带它,免得每次轮询都复制一遍 - 未实现的能力**不要出现在 INSTRUCTIONS 里**,也不要在工具描述里暗示存在 - 新增工具后:`make mcp-smoke` 验 wire 清单;宿主侧要重连(杀掉 stdio 子进程会自动重启并重同步工具) diff --git a/src/mcp/server.py b/src/mcp/server.py index a48809a..af78290 100644 --- a/src/mcp/server.py +++ b/src/mcp/server.py @@ -20,7 +20,8 @@ SERVER_NAME = "auto-reimbursement" INSTRUCTIONS = """财务报销自动化工具集(发票抽取交接 → 匹配 → 校验 → 文档 → 浏览器填报;提交由人工完成)。 当前已实现(可直接调用): -1. mcp__arb__case_create 建会话;mcp__arb__case_add_files 拷入发票/支付截图/申请单 +1. mcp__arb__case_create 建会话,把返回的 upload_url 发给用户(手机点开即上传,含本会话令牌, + 只给这一条、别在其它回答里重复令牌);本地材料用 mcp__arb__case_add_files 拷入发票/支付截图/申请单 (路径一律用正斜杠,如 D:/Code/...;手机扫码上传的文件先 mcp__arb__case_add_files(source="inbox") 收取)。 2. mcp__arb__case_render_pages 渲染页面并取 PDF 文本层;text_chars>0 时优先 mcp__arb__case_read_text 读文本层, 否则读 pages 里的 PNG。文本层与读图结论冲突时(尤其编号、卡号、金额位数)必须复核,不要默认信任一路。 @@ -53,13 +54,15 @@ INSTRUCTIONS = """财务报销自动化工具集(发票抽取交接 → 匹配 删除(#delete)、撤回同理:都在财务系统里手工做,工具层不会给这类动作开口子。 Word 出库单功能已下线(模板自 2026-08 起不在仓库),不要再提;Excel 申购单见第 6 条。 -硬约束:不得回显密码;不得臆造财务数据,拿不准的字段标出来问用户;产物只写 cases//。 +硬约束:不得回显密码与上传令牌(令牌只允许出现在 case_create / case_upload_link 的返回链接里); +不得臆造财务数据,拿不准的字段标出来问用户;产物只写 cases//。 """ TOOLS: list[Callable[..., dict[str, Any]]] = [ materials.case_create, materials.case_list, materials.case_status, + materials.case_upload_link, materials.case_add_files, materials.case_inbox, materials.case_reset, diff --git a/src/mcp/tools/materials.py b/src/mcp/tools/materials.py index 50145f4..b07307e 100644 --- a/src/mcp/tools/materials.py +++ b/src/mcp/tools/materials.py @@ -27,8 +27,27 @@ def case_create(name: str, invoice_type: str | None = None) -> dict[str, Any]: return ok( case_id=d.name, case_dir=str(d), + upload_url=_store.upload_url(d), upload_page=upload_page_url(), - upload_note="启动收件器后可用手机扫码上传:python -m src.upload.server", + upload_note="把 upload_url 发给用户:手机点开即上传(收件器需在运行:python -m src.upload.server)。" + "这条链接含本会话令牌,只在这里给一次,别在其它回答里重复", + ) + + +def case_upload_link(case_id: str) -> dict[str, Any]: + """重新取该会话的手机上传直链(用户把上一条弄丢了,或换了设备时用)。 + + 链接含令牌:只在用户明确要链接时调用,别在常规流程里反复调,也别把令牌抄进别处。 + """ + d = _store.resolve(case_id) + if d is None: + return fail(f"会话不存在: {case_id}", next_action="先 case_list 看有哪些会话") + return ok( + case_id=d.name, + case_name=_store.meta(d).get("name") or d.name, + upload_url=_store.upload_url(d), + upload_page=upload_page_url(), + pending_inbox=len(_store.inbox(d)), ) diff --git a/src/upload/README.md b/src/upload/README.md index 37c3d23..d393c18 100644 --- a/src/upload/README.md +++ b/src/upload/README.md @@ -14,14 +14,14 @@ uv run python -m src.upload.server --port 6000 --pin 1234 | 文件 | 职责 | |------|------| -| `server.py` | Flask 应用与路由、上限与白名单、`lan_ip()`、命令行参数 | +| `server.py` | Flask 应用与路由、上限与白名单、`lan_ip()`、命令行参数;横幅地址优先取 `upload_base_url` | | `page.py` | 页面模板(内联 CSS,零外部 CDN,`__PLACEHOLDER__` 占位替换) | ## 路由 | 路由 | 说明 | |------|------| -| `GET /` | PC 端首页(可选 PIN 校验) | +| `GET /` | PC 端首页(可选 PIN 校验;备用入口,列出全部会话与二维码) | | `GET /qr/` | 服务端生成的二维码 PNG(segno) | | `GET /u/` | 手机上传页(令牌在 URL 里) | | `POST /u/` | 接收文件,落 `cases//inbox/` | @@ -30,11 +30,15 @@ uv run python -m src.upload.server --port 6000 --pin 1234 ## 安全边界 - 默认 `0.0.0.0` 是刻意的(手机要用局域网 IP 访问),补偿控制如下 -- **每会话令牌强制**:`case.json` 里的 `upload_token`,缺失或错误一律 403;工具输出里永不回显令牌明文, - 只在 `case_create` 返回的页面地址中出现一次 +- **每会话令牌强制**:`case.json` 里的 `upload_token`,缺失或错误一律 403。令牌只出现在 + `case_create` / `case_upload_link` 返回的那条手机直链里(2026-10-21 定案:由 Agent 把直链发给用户, + 免得首页一堆二维码分不清扫哪个);其它工具输出、日志、产物里都不该出现它 - **只写不读**:没有文件列表、没有下载路由 - 扩展名白名单、单文件 25MB、每会话 200 个文件封顶 - 文件名一律 `Path(raw.replace(chr(92), '/')).name` 取基名 + 重名加序号,防目录穿越 - 可选 `--pin` / `UPLOAD_PIN` / `config.json` 的 `upload_pin` 作为额外访问码 +地址解析在 `src/cases.py` 的 `upload_page_url()`:配了 `upload_base_url` 就用它(**要带端口**,收件器默认听 +5055),否则探测默认路由网卡——多网卡机器上探测结果常是手机打不开的虚拟地址。 + `cases//inbox/` 里的文件由宿主调 `case_add_files(source='inbox')` 收取进会话,收件器本身不碰任何业务逻辑。 diff --git a/src/upload/server.py b/src/upload/server.py index 21fe3b8..af39f09 100644 --- a/src/upload/server.py +++ b/src/upload/server.py @@ -175,8 +175,22 @@ def main(argv: list[str] | None = None) -> int: host = args.host or ("127.0.0.1" if args.local else "0.0.0.0") app = create_app(pin) - shown = lan_ip() if host == "0.0.0.0" else host - print("PC 上传页: http://" + shown + ":" + str(args.port) + ("/?pin=..." if pin else ""), flush=True) + # 多网卡机器上探测常挑错(VPN/Tailscale/虚拟交换机),所以优先用配置里写死的对外地址; + # 配置里必须带端口,收件器听的是 --port(默认 5055),漏了端口链接会打到 80 上 + configured = str(load_config().get("upload_base_url") or "").strip().rstrip("/") + if configured: + shown = configured + else: + bind = "127.0.0.1" if host == "0.0.0.0" else host + shown = "http://" + (lan_ip() if host == "0.0.0.0" else bind) + ":" + str(args.port) + print("PC 上传页: " + shown + ("/?pin=…" if pin else ""), flush=True) + print("手机直链: 由 MCP 工具 case_create / case_upload_link 给出(含会话令牌)", flush=True) + if not configured: + print( + "(upload_base_url 未配置,上面地址是探测出来的。多网卡机器上手机可能打不开:" + "在 scripts/data/config.json 写 upload_base_url,例如 http://192.168.1.20:5055,要带端口)", + flush=True, + ) print("收件目录: " + str(_store.root) + "/*/inbox", flush=True) app.run(host=host, port=args.port, debug=False, threaded=True, use_reloader=False) return 0 diff --git a/tests/test_upload_link.py b/tests/test_upload_link.py new file mode 100644 index 0000000..4c6b411 --- /dev/null +++ b/tests/test_upload_link.py @@ -0,0 +1,105 @@ +"""上传直链:地址来源、令牌、转义与新工具 case_upload_link。""" + +from pathlib import Path + +import pytest + +from src.cases import upload_page_url +from src.config import clear_config_cache, load_config +from src.mcp.tools import materials + + +@pytest.fixture +def isolated_cases(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Path: + root = tmp_path / "cases" + root.mkdir() + monkeypatch.setattr("src.cases.CASE_ROOT", root) + # CaseStore.root 是类属性(导入时就绑定 CASE_ROOT),所以直接改实例属性最省事, + # 与 test_mcp_analysis.py 的既有做法一致 + monkeypatch.setattr(materials._store, "root", root, raising=False) + return root + + +def _set_base(monkeypatch: pytest.MonkeyPatch, value: str) -> None: + monkeypatch.setenv("UPLOAD_BASE_URL", value) + clear_config_cache() + + +def test_upload_base_url_comes_from_env(monkeypatch: pytest.MonkeyPatch) -> None: + _set_base(monkeypatch, "http://192.168.1.20:5055") + try: + assert upload_page_url() == "http://192.168.1.20:5055/" + finally: + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + clear_config_cache() + + +def test_upload_base_url_configured_wins_and_strips_slash(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None: + data = tmp_path / "scripts" / "data" + data.mkdir(parents=True) + (data / "config.json").write_text('{"upload_base_url": "http://10.0.0.5:6000/"}', encoding="utf-8") + monkeypatch.setattr("src.config._CONFIG_PATH", data / "config.json") + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + clear_config_cache() + try: + assert load_config()["upload_base_url"] == "http://10.0.0.5:6000/" # 原样保留,拼链接时才去尾斜杠 + assert upload_page_url() == "http://10.0.0.5:6000/" + finally: + clear_config_cache() + + +def test_unconfigured_falls_back_to_probe(isolated_cases: Path, monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + monkeypatch.setattr("src.config._CONFIG_PATH", isolated_cases / "missing.json") + clear_config_cache() + try: + url = upload_page_url() + assert url.startswith("http://") and url.endswith("/") + assert ":5055" in url or ":80" not in url # 探测出来的地址一定带端口 + finally: + clear_config_cache() + + +def test_case_create_returns_entry_url_with_token(isolated_cases: Path, monkeypatch: pytest.MonkeyPatch) -> None: + _set_base(monkeypatch, "http://192.168.31.86:5055") + try: + result = materials.case_create("毕业采集", "travel") + assert result["ok"] is True + url = result["upload_url"] + assert url.startswith("http://192.168.31.86:5055/u/") + assert "?t=" in url and len(url.split("?t=")[1]) >= 16 + # 会话 id 含中文:链接必须是纯 ASCII,否则部分客户端打不开 + assert all(ord(ch) < 128 for ch in url) + finally: + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + clear_config_cache() + + +def test_upload_link_is_stable_and_scoped(isolated_cases: Path, monkeypatch: pytest.MonkeyPatch) -> None: + _set_base(monkeypatch, "http://127.0.0.1:5055") + try: + created = materials.case_create("稳", None) + again = materials.case_upload_link(created["case_id"]) + assert again["ok"] is True and again["upload_url"] == created["upload_url"] + assert again["pending_inbox"] == 0 + missing = materials.case_upload_link("没这个会话") + assert missing["ok"] is False and "case_list" in missing["next_action"] + finally: + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + clear_config_cache() + + +def test_token_only_in_link_not_in_summary(isolated_cases: Path, monkeypatch: pytest.MonkeyPatch) -> None: + """令牌允许出现在直链里,但不该混进常规状态输出,免得每次轮询都复制一遍。""" + _set_base(monkeypatch, "http://127.0.0.1:5055") + try: + created = materials.case_create("秘", None) + cid = created["case_id"] + token = created["upload_url"].split("?t=")[1] + status = materials.case_status(cid) + assert token not in str(status) + listing = materials.case_list() + assert token not in str(listing) + finally: + monkeypatch.delenv("UPLOAD_BASE_URL", raising=False) + clear_config_cache()