5dda126e21
用户选了 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 提交并手跑等价检查。
35 lines
1.7 KiB
Markdown
35 lines
1.7 KiB
Markdown
---
|
||
last_reviewed: 2026-10-20
|
||
---
|
||
|
||
# .agents/skills — Agent 技能目录
|
||
|
||
本目录由 DSH(及兼容的 Agent)自动发现,每个子目录一个技能,`SKILL.md` 用 YAML front matter 描述触发条件。
|
||
|
||
| 技能 | 说明 |
|
||
|------|------|
|
||
| `reimbursement/` | 报销业务操作纪律:流程顺序、`review_required` 必须逐条复核、双通道冲突处理、禁止宣布可提交;
|
||
`references/` 下是七类票据与两种报销数据的字段判读细则(由原内置 LLM 提示词迁移而来) |
|
||
| `pre-commit-check/` | 提交前质量门禁:ruff lint/format、mypy、deptry,并自动修复可修项 |
|
||
| `clean-git-history/` | 用 git-filter-repo 清理误提交的敏感文件与历史 |
|
||
|
||
## 使用方式
|
||
|
||
命中描述的场景时 Agent 自动加载,无需手动调用。`reimbursement` 的技能正文与 `docs/MCP.md` 有意分工:
|
||
前者讲「怎么做才对」,后者讲「接口长什么样」。
|
||
|
||
### 装到用户级(跨项目可用)
|
||
|
||
本目录的技能只在打开本项目时可见。要让任何项目都能用 `reimbursement`:
|
||
|
||
```bash
|
||
make skill-install # 或 python tasks.py skill-install
|
||
make skill-check # 比对安装副本与仓库,漂移退出码 1
|
||
```
|
||
|
||
真源永远是仓库里这份,**别去编辑安装副本**(下次同步会被覆盖)。
|
||
|
||
坑:技能来源由宿主的 skills-manager 管,开关会变;装进**已停用的来源目录**里文件明明存在、宿主却永远扫不到。
|
||
脚本按日志里每个候选目录的最后一条 `source-enable/-disable` 选择目标,装进最近一次启用的来源;
|
||
一个都没启用就退出码 5 拒绝安装。状态随时用 `--list-sources` 查看(会显示各来源最后一次事件时间)。
|