{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2601-10712","title":"MatchTIR: Fine-Grained Supervision for Tool-Integrated Reasoning via Bipartite Matching","arxiv_id":"2601.10712","date":"2026-01-15","proceeding":null,"authors":["Changle Qu","Sunhao Dai","Hengyi Cai","Jun Xu","Shuaiqiang Wang","Dawei Yin"],"abstract":"Tool-Integrated Reasoning (TIR) empowers large language models (LLMs) to tackle complex tasks by interleaving reasoning steps with external tool interactions. However, existing reinforcement learning methods typically rely on outcome- or trajectory-level rewards, assigning uniform advantages to all steps within a trajectory. This coarse-grained credit assignment fails to distinguish effective tool calls from redundant or erroneous ones, particularly in long-horizon multi-turn scenarios. To address this, we propose MatchTIR, a framework that introduces fine-grained supervision via bipartite matching-based turn-level reward assignment and dual-level advantage estimation. Specifically, we formulate credit assignment as a bipartite matching problem between predicted and ground-truth traces, utilizing two assignment strategies to derive dense turn-level rewards. Furthermore, to balance local step precision with global task success, we introduce a dual-level advantage estimation scheme that integrates turn-level and trajectory-level signals, assigning distinct advantage values to individual interaction turns. Extensive experiments on three benchmarks demonstrate the superiority of MatchTIR. Notably, our 4B model surpasses the majority of 8B competitors, particularly in long-horizon and multi-turn tasks. Our codes are available at https://github.com/quchangle1/MatchTIR.","url_abs":"https://arxiv.org/abs/2601.10712","url_pdf":"https://arxiv.org/pdf/2601.10712","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2601.10712","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2601.10712"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/quchangle1/MatchTIR","reach":null},{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/bytedance/FTRL","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_violates":1,"ran_honours":2,"ran_draft_wrong":6,"ran_fixture":2,"unverified":8},"by_repo_kind":{"found_in_text":{"samples":19,"ran":11,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":12,"samples":[{"code_sha256_prefix":"7179b65bd3c93eea","entry":"answer_verify","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7179b65bd3c93eea"}},{"code_sha256_prefix":"65cca1ca014f423c","entry":"assign_rewards_hungarian","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"65cca1ca014f423c"}},{"code_sha256_prefix":"0a568a81348c83e7","entry":"call_function","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0a568a81348c83e7"}},{"code_sha256_prefix":"850fdb21b1d32aed","entry":"compute_solve_f1","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"850fdb21b1d32aed"}},{"code_sha256_prefix":"a1e7fb4d9cbe6efe","entry":"find_all_subsequence","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a1e7fb4d9cbe6efe"}},{"code_sha256_prefix":"3673b46bdbf2a6ac","entry":"get_feedback","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3673b46bdbf2a6ac"}},{"code_sha256_prefix":"2664c679aed5810a","entry":"hungarian_assignment","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2664c679aed5810a"}},{"code_sha256_prefix":"94757c508755516a","entry":"match_score","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"94757c508755516a"}},{"code_sha256_prefix":"113830b3948f4147","entry":"parse_qwen","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"113830b3948f4147"}},{"code_sha256_prefix":"11664393d2a5d440","entry":"preprocess_text","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"11664393d2a5d440"}},{"code_sha256_prefix":"8049ac34873b4ee4","entry":"tool_similarity","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8049ac34873b4ee4"}},{"code_sha256_prefix":"e5f4e58d0acd5122","entry":"compute_process_KM","repo":"quchangle1/MatchTIR","repo_kind":"found_in_text","path":"Code/verl/utils/reward_score/tool.py","file_url":"https://github.com/quchangle1/MatchTIR/blob/HEAD/Code/verl/utils/reward_score/tool.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e5f4e58d0acd5122"}},{"code_sha256_prefix":"501d2100f7741a14","entry":"get_params","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/utils/utils.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"501d2100f7741a14"}},{"code_sha256_prefix":"a5236a2a51f747d4","entry":"get_parse_output","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/utils/parse_output.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/utils/parse_output.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a5236a2a51f747d4"}},{"code_sha256_prefix":"acf240079d434746","entry":"get_weight_loader","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/verl/models/weight_loader_registry.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/verl/models/weight_loader_registry.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"acf240079d434746"}},{"code_sha256_prefix":"aa51429ab4c58a74","entry":"get_weight_saver","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/verl/models/weight_loader_registry.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/verl/models/weight_loader_registry.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aa51429ab4c58a74"}},{"code_sha256_prefix":"ec450fb84a121b33","entry":"load_model","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/utils/utils.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/utils/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ec450fb84a121b33"}},{"code_sha256_prefix":"d4b73829ffa7df42","entry":"parse_llama31","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/utils/parse_output.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/utils/parse_output.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d4b73829ffa7df42"}},{"code_sha256_prefix":"4c916494d4847ebd","entry":"parse_qwen","repo":"bytedance/FTRL","repo_kind":"found_in_text","path":"Code/utils/parse_output.py","file_url":"https://github.com/bytedance/FTRL/blob/HEAD/Code/utils/parse_output.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4c916494d4847ebd"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}